多重線形回帰では、なぜ予測点のプロットが直線上にないのですか?


16

YとX1、X2の関係を記述するために、多重線形回帰を使用しています。

理論から、重回帰ではYと各X(YとX1、YとX2)の間の線形関係を仮定していることがわかりました。Xの変換は使用していません。

そのため、R = 0.45とすべての有意なX(P <0.05)のモデルを取得しました。次に、X1に対してYをプロットしました。モデルの予測である赤色の円が線を形成しない理由がわかりません。前に言ったように、YとXの各ペアは線で近似されると予想しました。

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

プロットは、Pythonで次のように生成されます。

fig, ax = plt.subplots()
plt.plot(x['var1'], ypred, 'o', validation['var1'], validation['y'], 'ro');
ax.set_title('blue: true,   red: OLS')
ax.set_xlabel('X')
ax.set_ylabel('Y')
plt.show()

1
プロット/分析に使用したコードを投稿できますか。赤と青の線は、お互いのジッターのように見えます。したがって、このプロットの背後にあるコードは、問題に対するより良い答えに役立つ可能性があります。
-Dawny33

(i)他の予測子の値が各予測ポイントで同じであると仮定される場合(およびx 2の異なる値を仮定しようとすると異なる線が得られる場合)、または( ii)実際のデータに予測を使用するが、x 2の変動を「部分的に」(つまり補正)する場合。これは偏回帰プロットまたは追加変数プロットの目的です。@ dawny33が言うように、あなたが、それはあなたの問題が何であるかを知ることはできません。このプロットを構築している正確にどのように知らずx2x2x2
紙魚

@Silverfishのコメントは正しいと思います。三次元の中で平面表すPを。2次元に縮小する場合、3次元(P)の平面をeg y x 1平面に「投影」します。これは、Py x 1平面に直交する場合のみ線になります。y=β0+β1x1+β2x2PP(y,x1)P(y,x1)

@ Dawny33:投稿されました。
クラウソス

@f coppens:ありがとう。それでは、なぜ文献では、多重線形回帰モデルはYとX(YとX1、YとX2)の間の線形関係を仮定していると言っているのでしょうか?
クラウソス

回答:


33

重回帰式が

y^=2x1+5x2+3

どこ 意味「予測Yを」。y^y

次に、ポイントのみを取得します。あなたはプロット場合は、yと反対のx 1、これらの点は、式を満たします。x2=1y^x1

y^=2x1+5(1)+3=2x1+8

したがって、それらは勾配2の線上にあり、切片8 である必要があります。y

次に、ポイントを取得します。あなたはプロットするとyとx2=2y^反対、その後、これらの点は満足します。x1

y^=2x1+5(2)+3=2x1+13

したがって、これは勾配2の線で、切片13があります。y、あなたはスロープ2の別の行を取得し、 Yx2=3y -interceptは18です。

値が異なる点は異なる線上にありますが、すべて同じ勾配を持っていることがわかります。元の回帰式の2 x 1の係数の意味は、ceteris paribusつまり他の予測変数を一定に保持することです。単位増加X 1つの増加予想平均応答Yの切片の意味ながら、二つのユニットによって、3回帰式があったときに、X 1 = 0およびX 2 = 0は、次に予測平均応答である3x22x1x1y^3x1=0x2=03。ただし、すべてのポイントが同じx 2を持つわけではありませんx2行のみがインターセプトだろう-彼らは別のインターセプトとライン上にあること、そのためにそれらの点のためにxは2 = 0を。したがって、単一の行を見るのではなく、(たとえば、x 2が常に整数である場合など、発生するx 2の特定の値のみがある場合)一連の斜めの「ストリーク」が表示される場合があります。ここで、以下のデータを考慮し、Yは = 2 、X 1 + 5 X 2 + 33x2=0x2x2y^=2x1+5x2+3

行が追加される前

ここには、知覚可能な「縞」があります。ここで、が赤い円、x 2 = 2が金色の三角形、x 2 = 3が青い正方形として色付けすると、3つの異なる線、すべての勾配2、y切片上にあることがわかります。上記で計算された8、13、18。もちろん、グラフに表示されていない他の予測子の値に基づいてx 2の場合。x2=1x2=2x2=3yx2が整数値を取るように制約されていない場合、または回帰に含まれる他の予測変数によって状況が複雑な場合、対角線はそれほど明確ではありませんが、それでも各予測ポイント別の行にあります

行を追加した後

yx1x2y^=2x1+5x2+3yx1x2yx1-軸は右を指します。

3Dプロット

すべてのポイントが平面にあることに注意してください。 yy

y^x1x2x2y^x1x2yx1 x2yx1

Rプロットのコード

library(scatterplot3d)

data.df <- data.frame(
  x1 = c(0,2,4,5,8, 1,3,4,7,8, 0,3,5,6,7),
  x2 = c(1,1,1,1,1, 2,2,2,2,2, 3,3,3,3,3)
)

data.df$yhat <- with(data.df, 2*x1 + 5*x2 + 3)

data1.df <- data.df[data.df$x2==1,]
data2.df <- data.df[data.df$x2==2,]
data3.df <- data.df[data.df$x2==3,]

#Before lines added    
mar.default <- c(5,4,4,2) + 0.1
par(mar = mar.default + c(0, 1, 0, 0)) 
plot(data.df[c("x1","yhat")], main=expression("Predicted y against "*x[1]),
     xlab=expression(x[1]), ylab=expression(hat(y)))

#After lines added
plot(data.df[c("x1","yhat")], main=expression("Predicted y against "*x[1]),
     xlab=expression(x[1]), ylab=expression(hat(y)), pch=".")
points(data1.df[c("x1","yhat")], pch=19, col="red")
abline(lm(yhat ~ x1, data=data1.df), col="red")
points(data2.df[c("x1","yhat")], pch=17, col="gold")
abline(lm(yhat ~ x1, data=data2.df), col="gold")
points(data3.df[c("x1","yhat")], pch=15, col="blue")
abline(lm(yhat ~ x1, data=data3.df), col="blue")

#3d plot
myPlot <- scatterplot3d(data.df, pch=".", xlab=expression(x[1]),
                        ylab=expression(x[2]), zlab=expression(hat(y)),
                        main=expression("Predicted y against "*x[1]*" and "*x[2]))
myPlot$plane3d(Intercept=3, x.coef=2, y.coef=5, col="darkgrey")
myPlot$points3d(data1.df, pch=19, col="red")
myPlot$points3d(data2.df, pch=17, col="gold")
myPlot$points3d(data3.df, pch=15, col="blue")
print(myPlot)

ひとつだけ小さな質問です。平面と言うことは、曲率を持つ平面を意味しますか?
クラウソス

それは「平らな」平面を意味します。後で説明するために写真を追加します。
シルバーフィッシュ

2
私はこれらの素晴らしいプロットに戻ることができるように、この質問に主演しています
シャドウトーカー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.