Warum liegt bei der multiplen linearen Regression eine grafische Darstellung der vorhergesagten Punkte nicht auf einer geraden Linie?

16

Ich benutze multiple lineare Regression, um Beziehungen zwischen Y und X1, X2 zu beschreiben.

Aus der Theorie habe ich verstanden, dass multiple Regression lineare Beziehungen zwischen Y und jedem von X (Y und X1, Y und X2) annimmt. Ich verwende keine Transformation von X.

Also bekam ich das Modell mit R = 0,45 und allen signifikanten X (P <0,05). Dann habe ich Y gegen X1 geplottet. Ich verstehe nicht, warum rot gefärbte Kreise, die Vorhersagen des Modells sind, keine Linie bilden. Wie ich bereits sagte, habe ich erwartet, dass jedes Paar von Y und X durch eine Linie angepasst wird.

Bildbeschreibung hier eingeben

Der Plot wird in Python folgendermaßen generiert:

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()
Klausos
quelle
1
Können Sie den Code posten, den Sie für die Darstellung / Analyse verwendet haben? Die roten und blauen Linien sehen aus wie Jitter voneinander. Der Code hinter diesem Plot könnte also helfen, Ihr Problem besser zu beantworten.
Dawny33
Sie würden eine Linie nur erwarten, wenn entweder (i) angenommen wird, dass der Wert des anderen Prädiktors für jeden vorhergesagten Punkt gleich ist (und wenn Sie versuchen, andere Werte von anzunehmen, erhalten Sie eine andere Linie), oder (ii) Wenn Sie Vorhersagen für Ihre tatsächlichen Daten verwenden, aber die Abweichungen in "teilweise" ausgleichen (dh ausgleichen) , ist dies ein Teil-Regressionsdiagramm oder ein Diagramm mit hinzugefügten Variablen . Ohne genau zu wissen, wie Sie diesen Plot erstellt haben, ist es nicht möglich zu wissen, was Ihr Problem ist, wie @ dawny33 sagtx2x 2x2x2
Silverfish
Ich denke der Kommentar von @Silverfish ist richtig; in drei Dimensionen repräsentiert eine Ebene . Wenn Sie auf zwei Dimensionen reduzieren, projizieren Sie die Ebene in drei Dimensionen ( ) in die Ebene zB . Dies ist nur dann eine Linie, wenn orthogonal zur Ebene. P P ( y , x 1 ) , P ( y , x 1 )y=β0+β1x1+β2x2PP(y,x1)P(y,x1)
@ Dawny33: gebucht.
Klausos
@f coppens: Danke. Warum sagt die Literatur dann, dass ein multiples lineares Regressionsmodell lineare Beziehungen zwischen Y und jedem von X (Y und X1, Y und X2) annimmt?
Klausos

Antworten:

33

Angenommen, Ihre multiple Regressionsgleichung war

y^=2x1+5x2+3

Wobei "vorhergesagtes " bedeutet. yy^y

Nehmen Sie nun nur die Punkte, für die . Wenn Sie dann gegen zeichnen , erfüllen diese Punkte die Gleichung:y x 1x2=1y^x1

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

Sie müssen also auf einer Linie der Steigung 2 und mit dem Achsenabschnitt 8 liegen.y

Nehmen Sie nun die Punkte, für die . Wenn Sie gegen plotten , erfüllen diese Punkte:y x 1x2=2y^x1

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

Das ist also eine Linie von Steigung 2 und mit Achsenabschnitt 13. Sie können selbst überprüfen, ob bei eine andere Linie von Steigung 2 und Achsenabschnitt 18 erhalten wird.x 2 = 3 yyx2=3y

Wir sehen, dass Punkte mit unterschiedlichen Werten von auf unterschiedlichen Linien liegen, aber alle mit demselben Gradienten: Die Bedeutung des Koeffizienten von in der ursprünglichen Regressionsgleichung ist, dass ceteris paribus, dh andere Prädiktoren konstant halten, eine Einheit größer wird erhöht die vorhergesagte mittlere Antwort um zwei Einheiten, während die Bedeutung des Abschnitts von in der Regressionsgleichung war, dass wenn und dann die vorhergesagte mittlere Antwort . Aber nicht alle deine Punkte haben das gleiche 2 x 1 x 1 y 3 x 1 = 0 x 2 = 0 3 x 2 3 x 2 = 0 x 2 x 2 y = 2 x 1 + 5 x 2 + 3x22x1x1y^3x1=0x2=03x2Dies bedeutet, dass sie auf Linien mit einem anderen Schnittpunkt liegen - die Linie hätte nur den Schnittpunkt für die Punkte, für die . Anstatt eine einzelne Linie zu sehen, sehen Sie möglicherweise (wenn es nur bestimmte Werte von , z. B. wenn immer eine Ganzzahl ist) eine Reihe von diagonalen "Streifen". Betrachten Sie die folgenden Daten, wobei .3x2=0x2x2y^=2x1+5x2+3

Vor Zeilen hinzugefügt

Hier gibt es wahrnehmbare "Streifen". Wenn ich nun die Punkte, für die als rote Kreise, als goldene Dreiecke und als blaue Quadrate einfärbe, sehen wir, dass sie auf drei verschiedenen Linien liegen, alle mit Steigung 2 und Abschnitten 8, 13 und 18 wie oben berechnet. Wenn nicht gezwungen wäre, ganzzahlige Werte anzunehmen, oder die Situation durch die Einbeziehung anderer Prädiktorvariablen in die Regression kompliziert wäre, wäre die diagonale Streifenbildung natürlich weniger klar, aber es wäre immer noch so, dass jeder vorhergesagte Punkt liegt auf einer separaten Linie basierend auf den Werten der anderen Prädiktoren, die in der Grafik nicht angezeigt werden .x 2 = 2 x 2 = 3 y x 2x2=1x2=2x2=3yx2

Nach Zeilen hinzugefügt

Wenn Sie einen dreidimensionalen Graphen von gegen und zeichnen , liegen Ihre vorhergesagten Punkte alle in der zweidimensionalen Ebene mit der Gleichung . Das oben beschriebene Diagramm versus ist eine Projektion dieses dreidimensionalen Diagramms auf zwei Dimensionen. Stellen Sie sich vor, Sie richten sich mit der Achse aus, sodass Sie direkt nach unten schauen, während die Achse nach oben und die Achse zeigt zeigt nach rechtsx 1 x 2 y = 2 x 1 + 5 x 2 + 3 y x 1 x 2 y x 1yx1x2y^=2x1+5x2+3yx1x2yx1

3D-Handlung

Beachten Sie, dass alle Punkte genau deshalb in einer flachen Ebene liegen, weil ich die angepassten (dh vorhergesagten) Werte gezeichnet habe . Wenn wir einen Plot mit den beobachteten Werten zeichnen, liegen diese vertikal über oder unter diesen Punkten, je nachdem, ob der Rest positiv oder negativ ist.yyy

Die Beziehung zwischen und ist linear, wenn gesteuert wird (dh für die Konstante ist die Beziehung zwischen und eine gerade Linie), was oft als "Herausfiltern" der Wirkung von . Wenn Sie ein Diagramm zeichnen möchten, in dem die Beziehung zwischen und unter Berücksichtigung der Variation in wird, können Sie ein "partielles Regressionsdiagramm" (auch "Diagramm mit hinzugefügten Variablen" genannt) verwenden, in dem die Beziehung zwischen und wird x1x2x2 y x1x2yx1x2yx1y^x1x2x2y^x1x2yx1 x2yx1 als eine einzige gerade Linie gezeichnet werden.

Code für R-Parzellen

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)
Silberfisch
quelle
Nur eine kleine Frage: Mit Flugzeug meinen Sie auch ein Flugzeug, das eine gewisse Krümmung haben kann?
Klausos
Es bedeutet eine "flache" Ebene. Ich werde ein Bild hinzufügen, um es später zu veranschaulichen.
Silverfish
2
Ich stelle diese Frage nur, damit ich wieder auf diese großartigen Handlungen
zurückgreifen