多項式の項を複数の線形回帰に追加できますか?


8

多重線形回帰モデルに多項式の項を追加する必要がある場合とそうでない場合について、少し混乱しています。データの曲率をキャプチャするために多項式が使用されていることは知っていますが、常に次のような形になっているようです。

y=x1+x2+x12+x22+x1x2+c

と間に線形関係があるが、と間に非線形関係があることがわかっている場合はどうでしょうか。次の形式でモデルを使用できますか?yx1yx2

y=x1+x2+x22+c

私の質問は、項と項を削除することは有効ですか、それとも多項式回帰モデルの一般的な形式に従う必要があるのでしょうか。x12x1x2


5
完全を期すために、モデルにがある場合、も必要であることに注意してください。詳細については、このサイトで周辺性の原則を検索してください。私はあなたがそれをすることを提案しなかったのを知っていますが、情報は役に立つかもしれません。x2x
mdewey

ようなものを見て、それを線形回帰モデルと呼ぶのは本当に奇妙ですが、それは間違いなくそうです。係数の線形性と関係があることに注意してください。Mathematical Monkのビデオm.youtube.com/watch?v=rVviNyIR-fIをお勧めします。15分はこれに費やすのに少し時間がかかるように思えるかもしれませんが、線形回帰が非線形動作を伴う可能性があることを決して忘れないでしょう。多分OPへの質問として:は線形回帰モデルですか?y=ax+bx2y=ax+bx2
デイブ

@mdewey、あなたの発言は一般的すぎて正確でなく、かつ/またはすべての設定で意味をなさない。があるががない明確に定義されたモデルを簡単に想像できます。たとえば、データ生成プロセスが場合、またはである場合(および)、またはモデルは、私たちが直面しているデータ生成プロセスに対する(を含むものと比較して)より優れた近似です。x2xy=β0+β1x2+εy=β0+β1z+εx=zz>0x
Richard Hardy

回答:


14

@mktの優れた回答に加えて、直感を育てることができるように、具体的な例を示してみようと思いました。

例のデータを生成する

この例では、次のようにRを使用していくつかのデータを生成しました。

set.seed(124)

n <- 200
x1 <- rnorm(n, mean=0, sd=0.2)
x2 <- rnorm(n, mean=0, sd=0.5)

eps <- rnorm(n, mean=0, sd=1)

y = 1 + 10*x1 + 0.4*x2 + 0.8*x2^2 + eps

上記からわかるように、データはモデルから。ここで、は、を意味し、分散は不明です。さらに、、、、、です。 y=β0+β1x1+β2x2+β3x22+ϵϵ0σ2β0=1β1=10β2=0.4β3=0.8σ=1

コプロットを介して生成されたデータを視覚化する

結果変数yと予測子変数x1およびx2のシミュレーションデータが与えられると、coplotsを使用してこれらのデータを視覚化できます。

library(lattice)

coplot(y ~ x1 | x2,  
       number = 4, rows = 1,
       panel = panel.smooth)

coplot(y ~ x2 | x1,  
       number = 4, rows = 1,
       panel = panel.smooth)

結果のコプロットを以下に示します。

最初のコプロットは、x2が観測値の4つの異なる範囲(重複している)に属する場合のyとx1の散布図を示し、データから形状が推定される滑らかな、おそらく非線形フィットでこれらの各散布図を拡張します。

ここに画像の説明を入力してください

2番目のコプロットは、x1が観測値の4つの異なる範囲(重複している)に属している場合のyとx2の散布図を示し、これらの各散布図を滑らかに近似して拡張します。

ここに画像の説明を入力してください

最初のプロットは、x2を制御する場合、x1がyに対して線形効果を持っていると想定することが合理的であり、この効果がx2に依存しないことを示唆しています。

2番目のコプロットは、x1を制御する場合、x2がyに対して2次効果を持っていると想定することが合理的であり、この効果はx1に依存しないことを示唆しています。

正しく指定されたモデルに合わせる

コプロットは、以下のモデルをデータに適合させることを提案します。これにより、x1の線形効果とx2の2次効果が可能になります。

m <- lm(y ~ x1 + x2 + I(x2^2))  

正しく指定されたモデルのコンポーネントプラス残差プロットの作成

正しく指定されたモデルがデータに適合したら、モデルに含まれる各予測子のコンポーネントと残差のプロットを調べることができます

library(car)

crPlots(m)

これらの成分と残差のプロットを以下に示します。これらは、非線形性などの形跡が表示されないため、モデルが正しく指定されたことを示唆しています。実際、これらの各プロットでは、対応する予測子と、モデルにおけるその予測子の非線形効果を示唆するマゼンタ色の実線。

ここに画像の説明を入力してください

正しく指定されていないモデルを近似する

悪魔の支持者を演じて、2次項I(x2 ^ 2)を省略したという意味で、lm()モデルが実際に誤って指定された(つまり、誤って指定された)としましょう。

m.mis <-  lm(y ~ x1 + x2)

誤って指定されたモデルのコンポーネントプラス残差プロットの作成

我々が構築した場合のコンポーネントに加えて残留プロット misspecifiedモデルのために、我々はすぐにmisspecifiedモデルでX2の効果の非線形性の提案を参照してくださいになります。

crPlots(m.mis)

言い換えると、以下に示すように、誤って指定されたモデルはx2の2次効果をキャプチャできず、この影響は、誤って指定されたモデルの予測子x2に対応するコンポーネントと残差のプロットに現れます。

ここに画像の説明を入力してください

モデルm.misでのx2の効果の誤った仕様は、予測子x1およびx2のそれぞれに対してこのモデルに関連付けられた残差のプロットを調べると明らかになります。

par(mfrow=c(1,2))
plot(residuals(m.mis) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m.mis) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

以下に示すように、m.misとx2に関連する残差のプロットは、明確な2次パターンを示し、モデルm.misがこの体系的なパターンをキャプチャできなかったことを示しています。

ここに画像の説明を入力してください

誤って指定されたモデルを補強する

モデルm.misを正しく指定するには、項I(x2 ^ 2)も含まれるようにモデルを拡張する必要があります。

m <- lm(y ~ x1 + x2 + I(x2^2)) 

これは、この正しく指定されたモデルの残差対x1およびx2のプロットです。

par(mfrow=c(1,2))
plot(residuals(m) ~ x1, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)
plot(residuals(m) ~ x2, pch=20, col="darkred")
abline(h=0, lty=2, col="blue", lwd=2)

誤って指定されたモデルm.misの残差対x2のプロットで以前に見られた2次パターンが、正しく指定されたモデルmの残差対x2のプロットから消えていることに注意してください。

ここに示すx1とx2に対する残差のすべてのプロットの縦軸には、「残差」というラベルを付ける必要があります。何らかの理由で、R Studioはそのラベルを削除します。

ここに画像の説明を入力してください


11

はい、あなたが提案していることは問題ありません。1つの予測子への応答を線形として扱い、別の予測子を多項式として扱うことは、モデルでは完全に有効です。予測子間の相互作用がないと仮定することも完全に問題ありません。


1
こんにちは。関連する疑問です。と両方がリグレッサであり、が厳密に正であると言う場合、多重共線性の問題がありますか?係数の標準誤差が大きくなる可能性はありますか?xx2x
Dayne

@Dayneいい質問です!これはここここで
mkt-Reinstate Monica

1
@mktこれらのリンクは、直交多項式に関するIngolifsのアイデアとはまったく別のアプローチを提供します。直交多項式アプローチについて何か考えはありますか?
デイブ

1
@デイブそれについてあまり知らない、私は恐れている。アプローチの比較について新しい質問をするのに良いかもしれません。
mkt-モニカを復活させる

7

多項式の項を追加する場合は、直交多項式を使用するように注意する必要があります。

どうして?それらがなければ、共線性に似た問題があります。特定の領域では、はに非常によく似ており、放物線は直線を当てはめるのにまともな仕事をします。x2x

観察する:

ここに画像の説明を入力してください

これらは多項式です。x,x2,x3

0と1.5の間で、3つの曲線すべてが単調に増加し、それらは互いに異なる曲線を描きますが、xがyと正の相関がある場合、同様の品質のフィットを提供します。コードで3つすべてを使用する

y ~ x + x^2 + x^3

基本的に、データをフィットさせるために冗長な形状を使用しています。

直交多項式は、フィッティング時に基本的にゆらぎの余地を与え、各多項式は基本的に他の多項式から独立しています。

ここに画像の説明を入力してください

Rのpoly()関数によって生成された次数1、2、3の3つの多項式。

おそらく、それらを多項式として明示的に考えるのではなく、代わりに「トレンドコンポーネント」または何かと考えます。

xは、「多いほど良い」を表します(または、係数が負の場合はさらに悪い)。音楽の品質とカウベルの回帰を行っている場合は、このコンポーネントが必要になります。

x2は、一種のゴルディロックスゾーンを表します。食品の味と塩の量の関係で回帰を行っている場合、この成分が顕著になります。

x3(私は考えることができる唯一の例があり、おそらく自分自身で支配的な要素になることはほとんどありません、彼らは知っていると思うどのくらいの対どのように多くの人々ノウ)が、その存在はの形状と対称影響を与えると項。xx2

直交多項式には多くの難しい計算が含まれていますが、ありがたいことに2つのことを知っていれば十分です。

  1. 直交多項式は特定の領域でのみ直交します。私が挙げた例には、0と1.5の間でのみ直交する多項式が含まれています。
  2. Rを使用している場合は、poly()関数を使用して多項式を作成します。poly(x、n)ここで、nは最高の多項式の次数です。それはあなたのデータドメイン上でそれらを直交させます。x

2
これは非常に興味深いものであり、以前聞いたことはありません。ただし、これが必要または有用であるとの言及はありますか?そして、予測やパラメータ推論に役立ちますか?そして、「poly」のPythonコマンドを知っていますか?
デイブ

直交多項式回帰のさまざまな側面が、ここここで取り上げられ、さらに多くのことが行われています。
ジェイソン・

すばらしい回答です。私が考えていた投稿よりも優れたものにしてくれてありがとう。:)
Jason

1
@Ingolifs:これは、このサイトでこれまでに読んだ直交多項式の最も良い説明です!予測やパラメータの推論における直交多項式の有用性について、回答の中でコメントすることは有益だと私はデイブに同意します。
Isabella Ghement

1
+1してください。ただし、使用polyしようとするpredictと、予測サンプルの多項式が再フィットされるため、注意してください。つまり、私たちはジャンクになります。
usεr11852

0

すべての変数を使用する必要があると言うルールはありません。収入を予測しようとしていて、特徴変数がSSN、就学年数、および年齢であり、SSNと収入の間に何らかの相関があると予想されるためにSSNを削除したい場合は、判断を下す必要があります。理論的には含めることができたが、含めなかった他の変数があるため、モデルは無効ではありません。含める多項式の項を決定することは、特徴選択に関する多くの決定の1つにすぎません。

多項式モデルは、多くの場合、すべての項が含まれているところから始まりますが、それは、モデルにどれだけ追加しているかについてすべてを評価できるようにするためです。特定の項がほとんど適合しすぎているように見える場合は、モデルの後の反復で削除できます。なげなわ回帰などの正則化は、あまり有用でない変数を自動的に削除する可能性があります。一般に、変数が多すぎるモデルを開始し、モデルが依存すべきであると考える変数のみから開始して、おそらく関係を逃すよりも、変数を最も有用なものに絞り込んだほうがよい期待していなかった。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.