В множественной линейной регрессии, почему график предсказанных точек не лежит на прямой линии?


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) если вы используете прогнозы для своих фактических данных, но «частично» (т.е. компенсируете) изменения в x 2 , для чего предназначен график частичной регрессии или график дополнительных переменных . Не зная точно , как вы построили этот участок , это не представляется возможным узнать , что ваш вопрос, как и @ dawny33 говоритИкс2Икс2Икс2
серебрянки

Я думаю, что комментарий @Silverfish правильный; в трех измерениях представляет собой плоскость P . Если вы уменьшите до двух измерений, то вы «проецируете» плоскость в трех измерениях ( P ) на плоскость, например, ( y , x 1 ) , это будет линия, только если P ортогональна плоскости ( y , x 1 ) . y=β0+β1x1+β2x2PP(y,x1)P(Y,Икс1)

@ Dawny33: опубликовано.
Клаусос

@f Коппенс: Спасибо. Тогда почему в литературе говорится, что модель множественной линейной регрессии предполагает линейные отношения между Y и каждым из X (Y и X1, Y и X2)?
Клаусос

Ответы:


33

Предположим, что ваше уравнение множественной регрессии было

Y^знак равно2Икс1+5Икс2+3

где у означает «предсказал у ».Y^Y

Теперь возьмите только те точки, для которых . Тогда если участок у от й 1 , эти точки будут удовлетворять уравнение:Икс2знак равно1Y^Икс1

Y^знак равно2Икс1+5(1)+3знак равно2Икс1+8

Таким образом, они должны лежать на линии наклона 2 и с перехватом 8.Y

Теперь возьмите те точки, для которых . При печати у противИкс2знак равно2Y^ , то эти точки удовлетворяют:x1

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

Так что это линия наклона 2 с -интерпретом 13. Вы можете убедиться, что если x 2 = 3, то получите другую линию наклона 2, а y -интерпрет равен 18.yx2=3y

Мы видим, что точки с разными значениями будут лежать на разных линиях, но все с одним и тем же градиентом: значение коэффициента 2 x 1 в исходном уравнении регрессии заключается в том, что при прочих равных условиях, т.е. увеличение единицы в х 1 увеличивается средний прогнозируемый отклик у на две единицы, в то время как значение перехвата 3 в уравнение регрессии было то , что , когда х 1 = 0 и х 2 = 0 , то прогнозируемый средний ответ 3x22x1x1y^3x1=0x2=03, Но не все ваши точки имеют одинаковые 2 + 3 .x2, что означает, что они лежат на линиях с другим пересечением - у линии будет только перехват для тех точек, для которых x 2 = 0 . Таким образом, вместо того, чтобы видеть одну строку, вы можете увидеть (если есть только определенные значения x 2 , например, если x 2 всегда целочисленный), ряд диагональных «полос». Рассмотрим следующие данные, где у = 2 х 1 + 5 х3x2=0x2x2y^=2x1+5x2+3

Перед добавлением строк

Здесь есть заметные "полосы". Теперь, если я закрашу те точки, для которых виде красных кружков, x 2 = 2 в виде золотых треугольников и x 2 = 3 в виде синих квадратов, мы увидим, что они лежат на трех разных линиях, все с уклоном 2, и y -интерцепты 8, 13 и 18, как рассчитано выше. Конечно, если x 2 не был вынужден принимать целочисленные значения, или ситуация осложнялась другими переменными предиктора, включенными в регрессию, то диагональные штрихи были бы менее четкими, но все равно это был бы случай, когда каждая предсказанная точка лежит на отдельной строкеx2=1x2=2x2=3yx2на основе значений других предикторов, не показанных на графике .

После добавления строк

yx1x2y^=2x1+5x2+3yx1x2yx1Ось указывает на ваше право.

3d сюжет

yy

y^x1x2x2y^x1x2yx1 x2yИкс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)

Только один маленький вопрос: говоря о плоскости, вы также имеете в виду плоскость, которая может иметь некоторую кривизну?
Клаусос

Это означает «плоскую» плоскость. Я добавлю картинку для иллюстрации позже.
Серебряная

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.