Dalam regresi linier berganda, mengapa sebidang titik prediksi tidak terletak pada garis lurus?

16

Saya menggunakan regresi linier berganda untuk menggambarkan hubungan antara Y dan X1, X2.

Dari teori saya mengerti bahwa regresi berganda mengasumsikan hubungan linier antara Y dan masing-masing X (Y dan X1, Y dan X2). Saya tidak menggunakan transformasi X.

Jadi, saya mendapatkan model dengan R = 0,45 dan semua X signifikan (P <0,05). Lalu aku merencanakan Y melawan X1. Saya tidak mengerti mengapa lingkaran berwarna merah yang merupakan prediksi model tidak membentuk garis. Seperti yang saya katakan sebelumnya, saya berharap bahwa setiap pasangan Y dan X dilengkapi oleh garis.

masukkan deskripsi gambar di sini

Plot dihasilkan dalam python dengan cara ini:

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
sumber
1
Bisakah Anda memposting kode yang Anda gunakan untuk plot / analisis. Garis merah dan biru terlihat seperti kegelisahan satu sama lain. Jadi, kode di balik plot ini dapat membantu menjawab masalah Anda dengan lebih baik.
Dawny33
Anda hanya akan mengharapkan garis jika salah satu (i) nilai prediktor lain diasumsikan sama untuk setiap titik prediksi (dan jika Anda mencoba mengasumsikan nilai berbeda maka Anda mendapatkan garis yang berbeda), atau (ii) jika Anda menggunakan prediksi untuk data aktual Anda, tetapi "parsial keluar" (yaitu kompensasi untuk) variasi dalam , yang merupakan tujuan plot regresi parsial atau variabel tambahan . Tanpa mengetahui persis bagaimana Anda telah dibangun plot ini tidak mungkin untuk mengetahui apa masalah Anda, seperti @ dawny33 mengatakanx 2 x 2x2x2x2
Silverfish
Saya pikir komentar oleh @Silverfish benar; dalam tiga dimensi mewakili bidang . Jika Anda mengurangi menjadi dua dimensi maka Anda 'memproyeksikan' pesawat dalam tiga dimensi ( ) ke dalam bidang eg , ini akan menjadi garis hanya jika ortogonal ke pesawat. P P ( y , x 1 ) P ( y , x 1 )y=β0+β1x1+β2x2PP(y,x1)P(y,x1)
@ Dawny33: diposkan.
Klausos
@f coppens: Terima kasih. Lalu mengapa literatur mengatakan bahwa model regresi linier berganda mengasumsikan hubungan linear antara Y dan masing-masing X (Y dan X1, Y dan X2)?
Klausos

Jawaban:

33

Misalkan persamaan regresi berganda Anda

y^=2x1+5x2+3

di mana berarti "diprediksi ". yy^y

Sekarang ambil hanya titik-titik yang . Lalu jika Anda merencanakan terhadap , poin-poin ini akan memenuhi persamaan:y x 1x2=1y^x1

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

Jadi mereka harus berbaring di garis kemiringan 2 dan dengan masuk 8.y

Sekarang ambil poin-poin itu untuk mana . Saat Anda merencanakan terhadap , maka poin-poin ini memenuhi:y x 1x2=2y^x1

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

Jadi itu garis kemiringan 2 dan dengan -intercept 13. Anda dapat memverifikasi sendiri bahwa jika maka Anda mendapatkan garis kemiringan 2 dan -intercept adalah 18.x 2 = 3 yyx2=3y

Kita melihat bahwa titik-titik dengan nilai yang berbeda akan terletak pada garis yang berbeda, tetapi semua dengan gradien yang sama: arti dari koefisien dalam persamaan regresi asli adalah bahwa, ceteris paribus yaitu memegang prediktor lain konstan, peningkatan satu unit dalam meningkatkan respons rata-rata yang diperkirakan dua kali lipat dengan dua unit, sedangkan arti intersep dalam persamaan regresi adalah bahwa ketika dan maka respons rata-rata yang diprediksi adalah . Tetapi tidak semua poin Anda memiliki sama 2 x 1 x 1 y 3 x 1 = 0 x 2 = 0 3 x 2 3 x 2 = 0 x 2 x 2 y = 2 x 1 + 5 x 2 + 3x22x1x1y^3x1=0x2=03x2, yang berarti mereka berbaring di garis dengan intersep yang berbeda - garis hanya akan memiliki intersep untuk titik-titik yang . Jadi daripada melihat satu baris, Anda dapat melihat (jika hanya ada nilai-nilai tertentu yang terjadi, misalnya jika selalu bilangan bulat) serangkaian "coretan" diagonal. Pertimbangkan data berikut, di mana .3x2=0x2x2y^=2x1+5x2+3

Sebelum baris ditambahkan

Di sini ada "coretan" yang jelas. Sekarang jika saya mewarnai titik-titik yang sebagai lingkaran merah, sebagai segitiga emas dan sebagai kotak biru kita melihat mereka terletak pada tiga garis yang berbeda, semua kemiringan 2, dan -intercepts 8, 13 dan 18 sebagaimana dihitung di atas. Tentu saja, jika tidak dibatasi untuk mengambil nilai integer, atau situasinya rumit oleh variabel prediktor lain yang dimasukkan dalam regresi, maka goresan diagonal akan menjadi kurang jelas, tetapi masih akan menjadi kasus di mana setiap titik prediksi terletak pada baris terpisah berdasarkan nilai-nilai prediktor lain yang tidak ditampilkan pada grafik .x 2 = 2 x 2 = 3 y x 2x2=1x2=2x2=3yx2

Setelah baris ditambahkan

Jika Anda memplot grafik 3-dimensi terhadap dan , maka semua poin yang Anda prediksi semuanya terletak pada bidang dua dimensi dengan persamaan . The vs grafik saya jelaskan di atas adalah proyeksi dari yang grafik tiga dimensi ke dua dimensi - bayangkan lapisan diri dengan sumbu sehingga Anda mencari lurus ke bawah itu, sedangkan sumbu poin ke atas dan sumbu menunjuk ke kanan Anda.yx1x2y^=2x1+5x2+3yx1x2yx1

Plot 3d

Perhatikan bahwa semua titik terletak pada bidang datar tepat karena saya telah menggambar nilai sesuai (yaitu diprediksi) . Jika kita menggambar plot menggunakan nilai-nilai diamati maka ini akan terletak secara vertikal di atas atau di bawah titik-titik ini, tergantung pada apakah residualnya positif atau negatif.yy

Hubungan antara dan adalah linier ketika dikontrol untuk (yaitu untuk konstan , hubungan antara dan adalah garis lurus), yang sering digambarkan sebagai "partialling out" efek . Jika Anda ingin menggambar plot yang menunjukkan hubungan antara dan dengan mempertimbangkan variasi dalam maka Anda dapat menggunakan "plot regresi parsial" (juga disebut "plot variabel ditambahkan"), di mana hubungan antara dan akany^x1x2x2y^x1x2yx1 x2yx1 ditarik sebagai garis lurus tunggal.

Kode untuk plot 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)
Gegat
sumber
Hanya satu pertanyaan kecil: Dengan mengatakan pesawat, apakah Anda juga berarti pesawat yang dapat memiliki kelengkungan?
Klausos
Itu berarti pesawat "datar". Saya akan menambahkan gambar untuk diilustrasikan nanti.
Silverfish
2
Saya membintangi pertanyaan ini supaya saya bisa kembali ke plot
shadowtalker