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


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.