Dlaczego w regresji wielokrotnej liniowej wykres przewidywanych punktów nie leży w linii prostej?

16

Używam wielu regresji liniowej do opisania zależności między Y a X1, X2.

Z teorii zrozumiałem, że regresja wielokrotna zakłada zależności liniowe między Y a każdym z X (Y i X1, Y i X2). Nie używam żadnej transformacji X.

Mam więc model z R = 0,45 i wszystkimi znaczącymi X (P <0,05). Potem wykreśliłem Y względem X1. Nie rozumiem, dlaczego czerwone kółka, które są przewidywaniami modelu, nie tworzą linii. Jak powiedziałem wcześniej, spodziewałem się, że każda para Y i X jest dopasowana linią.

wprowadź opis zdjęcia tutaj

Wykres jest generowany w pythonie w ten sposób:

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
źródło
1
Czy możesz opublikować kod użyty do wykresu / analizy? Czerwone i niebieskie linie wyglądają jak wzajemne drgania. Tak więc kod stojący za tym spiskiem może pomóc lepiej rozwiązać problem.
Dawny33,
Oczekiwano by linii tylko wtedy, gdy (i) zakłada się, że wartość drugiego predyktora jest taka sama dla każdego przewidywanego punktu (a jeśli spróbujesz założyć różne wartości x 2 , otrzymasz inną linię), lub ( ii) jeśli używasz predykcji dla swoich rzeczywistych danych, ale „częściowo eliminujesz” (tj. kompensujesz) zmiany x 2 , do czego służy wykres regresji częściowej lub wykres zmiennych dodanych . Nie wiedząc dokładnie, jak skonstruowałeś tę fabułę, nie można wiedzieć, na czym polega twój problem, jak mówi @ dawny33x2x2x2
Silverfish,
Myślę, że komentarz @Silverfish jest poprawny; w trzech wymiarach, przedstawia płaszczyznę P . Jeśli zredukujesz do dwóch wymiarów, wówczas „rzutujesz” płaszczyznę w trzech wymiarach ( P ) na płaszczyznę np. ( Y , x 1 ) , będzie to linia tylko wtedy, gdy P jest prostopadła do płaszczyzny ( y , x 1 ) . y=β0+β1x1+β2x2PP(y,x1)P(y,x1)
@ Dawny33: opublikowano.
Klausos,
@f coppens: Dzięki. Dlaczego zatem literatura mówi, że model wielokrotnej regresji liniowej zakłada zależności liniowe między Y a każdym z X (Y i X1, Y i X2)?
Klausos

Odpowiedzi:

33

Załóżmy, że twoje równanie regresji wielokrotnej było

y^=2x1+5x2+3

gdzie Y oznacza „przewidzieć Y ”.y^y

Teraz weź tylko te punkty, dla których . Następnie, jeśli wykreślić y na x 1 , punkty te będą spełniać równanie:x2=1y^x1

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

Muszą więc leżeć na linii nachylenia 2 i z przecinkiem 8.y

Teraz weź te punkty, dla których . W przypadku drukowania y na x 1 , a następnie punkty te spełniają:x2=2y^x1

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

To jest linia nachylenia 2 i -intercept 13. Możesz sam sprawdzić, czy jeśli x 2 = 3, to otrzymujesz kolejną linię nachylenia 2, a y -intercept wynosi 18.yx2=3y

Widzimy, że punkty o różnych wartościach będą leżały na różnych liniach, ale wszystkie z tym samym gradientem: znaczenie współczynnika 2 x 1 w pierwotnym równaniu regresji jest takie, że ceteris paribus, tj. Utrzymujący stałe inne predyktory, jeden wzrost jednostka x 1 zwiększa przewidywaną średnią odpowiedź Yx22x1x1y^ o dwie jednostki, a znaczenie z osią z równania regresji, że gdy x 1 = 0 a x 2 = 0 , to przewiduje się średnią odpowiedź jest 33x1=0x2=03. Ale nie wszystkie twoje punkty mają takie same , co oznacza, że ​​leżą na liniach z innym punktem przecięcia - linia będzie miała punkt 3 tylko dla tych punktów, dla których x 2 = 0 . Zamiast widzieć pojedynczą linię, możesz zobaczyć (jeśli występują tylko pewne wartości x 2 , na przykład jeśli x 2 jest zawsze liczbą całkowitą), szereg ukośnych „smug”. Rozważmy następujące dane, gdzie y = 2 x 1 + 5 x 2 + 3 .x23x2=0x2x2y^=2x1+5x2+3

Przed dodaniem wierszy

Tutaj są wyczuwalne „smugi”. Teraz, jeśli koloruję w tych punktach, dla których jako czerwone kółka,x2=1 jako złote trójkąty i x 2 = 3 jako niebieskie kwadraty, widzimy, że leżą one na trzech wyraźnych liniach, wszystkie nachylenie 2 iprzecięcia y 8, 13 i 18, jak obliczono powyżej. Oczywiście, jeśli x 2 nie byłby ograniczony do przyjmowania wartości całkowitych lub sytuacja była skomplikowana przez uwzględnienie innych zmiennych predykcyjnych w regresji, wówczas smugi po przekątnej byłyby mniej wyraźne, ale nadal byłoby tak, że każdy przewidywany punkt leży na osobnej liniix2=2x2=3yx2na podstawie wartości innych predyktorów nie pokazanych na wykresie .

Po dodaniu wierszy

yx1x2y^=2x1+5x2+3yx1x2yx1- oś wskazuje po prawej stronie.

Działka 3d

yy

y^x1x2x2y^x1x2yx1 x2yx1

Kod dla wykresów 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)
Silverfish
źródło
Tylko jedno małe pytanie: Mówiąc samolot, masz na myśli także samolot, który może mieć pewną krzywiznę?
Klausos
Oznacza płaszczyznę „płaską”. Dodam zdjęcie do zilustrowania później.
Silverfish,
2
Staram się odpowiedzieć na to pytanie, aby móc wrócić do tych wspaniałych fabuł
shadowtalker,