Seperti yang Anda perhatikan dengan benar, perbedaan aslinya adalah karena dalam kasus pertama Anda menggunakan polinomial "mentah" sedangkan dalam kasus kedua Anda menggunakan polinomial ortogonal. Karenanya jika lm
panggilan selanjutnya diubah menjadi: fit3<-lm(y~ poly(x,degree=2, raw = TRUE) -1)
kami akan mendapatkan hasil yang sama antara fit
dan fit3
. Alasan mengapa kami mendapatkan hasil yang sama dalam kasus ini adalah "sepele"; kami cocok dengan model yang sama persis seperti yang kami cocokkan fit<-lm(y~.-1,data=x_exp)
, tidak ada kejutan di sana.
Seseorang dapat dengan mudah memeriksa bahwa matriks model oleh kedua model itu sama all.equal( model.matrix(fit), model.matrix(fit3) , check.attributes= FALSE) # TRUE
).
Yang lebih menarik adalah mengapa Anda akan mendapatkan plot yang sama saat menggunakan intersep. Hal pertama yang perlu diperhatikan adalah bahwa, saat memasang model dengan intersep
Dalam kasus fit2
kami hanya memindahkan prediksi model secara vertikal; bentuk kurva yang sebenarnya sama.
Di sisi lain termasuk intersep dalam hal fit
hasil menjadi tidak hanya garis yang berbeda dalam hal penempatan vertikal tetapi dengan keseluruhan bentuk yang berbeda secara keseluruhan.
Kita dapat dengan mudah melihat bahwa hanya dengan menambahkan kecocokan berikut pada plot yang ada.
fit_b<-lm(y~. ,data=x_exp)
yp=predict(fit_b,xp_exp)
lines(xp,yp, col='green', lwd = 2)
fit2_b<-lm(y~ poly(x,degree=2, raw = FALSE) )
yp=predict(fit2_b,data.frame(x=xp))
lines(xp,yp,col='blue')
OKE ... Mengapa cocok no-intersep berbeda sedangkan cocok intercept-termasuk adalah sama? Tangkapan sekali lagi pada kondisi orthogonality.
Dalam kasus fit_b
matriks model yang digunakan mengandung unsur-unsur non-ortogonal, matriks Gram crossprod( model.matrix(fit_b) )
jauh dari diagonal; dalam kasus fit2_b
unsur-unsurnya ortogonal ( crossprod( model.matrix(fit2_b) )
efektif diagonal).
Seperti halnya dalam kasus fit
ketika kami memperluasnya untuk memasukkan intersep dalam fit_b
kami mengubah entri off-diagonal dari matriks Gram dan dengan demikian cocok yang dihasilkan berbeda secara keseluruhan (kelengkungan berbeda, intersep, dll.) Sebagai perbandingan dengan fit yang disediakan oleh . Dalam kasus ketika kita memperluasnya untuk memasukkan intersep seperti pada kita hanya menambahkan kolom yang sudah ortogonal ke kolom yang kita miliki, ortogonalitas berlawanan dengan polinomial konstan derajat 0 . Ini hanya menghasilkan memindahkan garis dipasang secara vertikal oleh intersep. Inilah sebabnya mengapa plotnya berbeda.XTXfit
fit2
fit2_b
Yang menarik dari pertanyaan adalah mengapa fit_b
dan fit2_b
itu sama; setelah semua model dari matriks fit_b
dan fit2_b
tidak sama dalam nilai nominal . Di sini kita hanya perlu mengingat itu pada akhirnya fit_b
dan fit2_b
memiliki informasi yang sama. fit2_b
hanya kombinasi linear dari fit_b
jadi pada dasarnya cocok mereka akan sama. Perbedaan yang diamati dalam koefisien yang sesuai mencerminkan rekombinasi linear dari nilai-nilai fit_b
untuk membuatnya ortogonal. (lihat G. Grothendieck menjawab di sini juga untuk contoh berbeda.)
=
dan<-
untuk penugasan tidak konsisten. Saya benar-benar tidak akan melakukan ini, itu tidak benar-benar membingungkan, tetapi menambahkan banyak suara visual ke kode Anda tanpa manfaat. Anda harus memilih satu atau yang lain untuk digunakan dalam kode pribadi Anda, dan tetap menggunakannya.