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()

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)

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,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.