При множинній лінійній регресії чому графік прогнозованих точок не лежить у прямій?


16

Я використовую численні лінійні регресії для опису зв’язків між Y і X1, X2.

З теорії я зрозумів, що множинна регресія передбачає лінійні зв’язки між Y і кожним з X (Y і X1, Y і X2). Я не використовую жодної трансформації X.

Отже, я отримав модель з R = 0,45 і всіма значущими X (P <0,05). Тоді я побудував Y проти X1. Я не розумію, чому кола червоного кольору, які є передбаченнями моделі, не утворюють лінію. Як я вже говорив раніше, я очікував, що кожна пара 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) якщо ви використовуєте прогнози для своїх фактичних даних, але "частково вимикаєте" (тобто компенсуєте) зміни в х 2 , для чого призначений графік часткової регресії або доданий змінний графік . Не знаючи, як саме ви побудували цей сюжет, неможливо дізнатися, у чому полягає ваша проблема, як говорить @ dawny33х2х2х2
Silverfish

Я вважаю, що коментар @Silverfish правильний; в трьох вимірах являє собою площину P . Якщо ви зменшите до двох вимірів, тоді ви «проеціюєте» площину в трьох вимірах ( P ) на, наприклад, ( y , x 1 ) площину, це буде лінія лише в тому випадку, якщо P є ортогональним до ( y , x 1 ) площини. у=β0+β1х1+β2х2ПП(у,х1)П(у,х1)

@ Dawny33: розміщено.
Клаусос

@f coppens: Дякую Тоді чому в літературі сказано, що модель множинної лінійної регресії передбачає лінійні зв’язки між Y і кожною з X (Y і X1, Y і X2)?
Клаусос

Відповіді:


33

Припустимо, ваше рівняння множинної регресії було

у^=2х1+5х2+3

де у означає «передбачив у ».у^у

Тепер візьмемо лише ті точки, для яких . Тоді якщо ділянка у від ї 1 , ці точки будуть задовольняти рівняння:х2=1у^х1

у^=2х1+5(1)+3=2х1+8

Отже, вони повинні лежати на лінії схилу 2 і з -перехопленням 8.у

Тепер візьмемо ті точки, для яких . При виведенні у с ї 1 , то ці точки задовольняють:х2=2у^х1

у^=2х1+5(2)+3=2х1+13

Отже, це лінія нахилу 2 і з -перехоплення 13. Ви можете переконатись у тому, що якщо x 2 = 3, то ви отримаєте іншу лінію схилу 2, а y- інтерцепт дорівнює 18.ух2=3у

Ми бачимо, що точки з різними значеннями будуть лежати на різних прямих, але всі з однаковим градієнтом: значення коефіцієнта 2 x 1 у вихідному рівнянні регресії полягає в тому, що ceteris paribus, тобто утримуючи постійні інші прогноктори, одиницю збільшення одиниці в х 1 збільшується середній прогнозований відгук у на дві одиниці, в той час як значення перехоплення 3 в рівняння регресії було те , що , коли х 1 = 0 і х 2 = 0 , то прогнозований середній відповідь 3х22х1х1у^3х1=0х2=03. Але не всі ваші точки мають однаковий , а значить, вони лежать на лініях з різним перехопленням - лінія мала б перехоплення 3 лише для тих точок, для яких х 2 = 0 . Отже, замість того, щоб бачити один рядок, ви можете побачити (якщо є лише певні значення х 2, які виникають, наприклад, якщо х 2 завжди ціле число) ряд діагональних "прожилок". Розглянемо наступні дані, де у = 2 х 1 + 5 х 2 + 3 .х23х2=0х2х2у^=2х1+5х2+3

Перед додаванням рядків

Тут є помітні «прожилки». Тепер, якщо я забарвлюю в тих точках, для яких як червоні кола, x 2 = 2 як золоті трикутники і x 2 = 3 як сині квадрати, ми бачимо, що вони лежать на трьох чітких лініях, всі нахилі 2 і y - інтерцепти 8, 13 та 18, як було обчислено вище. Звичайно, якби х 2 не обмежувались приймати цілі значення, або ситуація ускладнювалася включенням до регресії інших змінних провісника, то діагональне прошивання було б менш чітким, але все одно випадок, коли кожна передбачена точка лежить на окремій лініїх2=1х2=2х2=3ух2на основі значень інших прогнокторів, не показаних на графіку .

Після додавання рядків

ух1х2у^=2х1+5х2+3ух1х2ух1-ось вказує праворуч.

3d сюжет

уу

у^х1х2х2у^х1х2ух1 х2ух1

Код для 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
Я вирішую це питання просто для того, щоб я міг повернутися до цих чудових сюжетів
shadowtalker
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.