Saya tidak dapat memahami penggunaan kontras polinomial dalam penyesuaian regresi. Secara khusus, saya mengacu pada pengkodean yang digunakan R
untuk mengekspresikan variabel interval (variabel ordinal dengan tingkat spasi yang sama), dijelaskan di halaman ini .
Dalam contoh halaman itu , jika saya mengerti dengan benar, R cocok dengan model untuk variabel interval, mengembalikan beberapa koefisien yang menimbang tren linier, kuadrat, atau kubik. Oleh karena itu, model yang dipasang harus:
di mana harus mengambil nilai , , , atau sesuai dengan level variabel interval yang berbeda.
Apakah ini benar? Dan, jika demikian, apa tujuan dari kontras polinomial?
r
regression
contrasts
Pippo
sumber
sumber
contr.poly
di R.Jawaban:
Sekadar rekap (dan jika hyperlink OP gagal di masa mendatang), kami melihat dataset
hsb2
seperti:yang bisa diimpor di sini .
Kami mengubah variabel
read
menjadi dan memerintahkan / variabel ordinal:Sekarang kita siap untuk menjalankan ANOVA biasa - ya, itu adalah R, dan kita pada dasarnya memiliki variabel dependen kontinu
write
,, dan variabel penjelas dengan beberapa level,readcat
,. Di R bisa kita gunakanlm(write ~ readcat, hsb2)
1. Menghasilkan matriks kontras:
Ada empat level berbeda untuk variabel yang diurutkann - 1 = 3
readcat
, jadi kita akan memiliki kontras.Pertama, mari kita cari uang, dan lihat fungsi R bawaan:
Sekarang mari kita membedah apa yang terjadi di bawah tenda:
Apa yang terjadi disana? yang( - 1,5 )0 ( - 0,5 )0 0,50 1.50 ( - 1,5 )1 ( - 0,5 )1 0,51 1.51 ( - 1,5 )2= 2.25 , , 0,5 2 = 0,25 dan 1,5 2 = 2,25 ; dan yang keempat, ( - 1.5 ) 3 = - 3.375 , ( - 0.5 ) 3 = - 0.125 , 0.5 3 = 0.125 dan 1.5 3 = 3.375 .( - 0,5 )2= 0,25 0,52= 0,25 1.52= 2.25 ( - 1,5 )3= - 3,375 ( - 0,5 )3= - 0,125 0,53= 0,125 1.53= 3,375
outer(a, b, "^")
menaikkan elemena
ke elemenb
, sehingga kolom pertama dihasilkan dari operasi, , ( - 0.5 ) 0 , 0.5 0 dan 1.5 0 ; kolom kedua dari ( - 1.5 ) 1 , ( - 0.5 ) 1 , 0.5 1 dan 1.5 1 ; yang ketiga dari ( - 1.5 ) 2 = 2.25Berikutnya kita melakukan ortonormal dekomposisi matriks ini dan mengambil representasi kompak dari Q ( ). Beberapa cara kerja fungsi yang digunakan dalam faktorisasi QR dalam R yang digunakan dalam posting ini dijelaskan lebih lanjut di sini .Q R
c_Q = qr(X)$qr
... yang kami simpan hanya diagonal (R Q R
z = c_Q * (row(c_Q) == col(c_Q))
). Apa yang terletak pada diagonal: Hanya "bawah" entri dari bagian dari Q R dekomposisi. Hanya? baik, tidak ... Ternyata diagonal dari matriks segitiga atas berisi nilai eigen dari matriks!Selanjutnya kita memanggil fungsi berikut:,Q Q Q z
raw = qr.qy(qr(X), z)
hasil yang dapat direplikasi "secara manual" oleh dua operasi: 1. Mengubah bentuk kompak dari , yaitu , menjadi Q , transformasi yang dapat dicapai dengan , dan 2. Melakukan matriks perkalian Q z , seperti dalam .qr(X)$qr
Q = qr.Q(qr(X))
Q %*% z
Krusial, mengalikan dengan nilai eigen dari R tidak mengubah orthogonality dari vektor-vektor kolom konstituen, tetapi mengingat bahwa nilai absolut dari nilai eigen muncul dalam urutan menurun dari kiri atas ke kanan bawah, perbanyakan Q z akan cenderung menurunkan nilai dalam kolom polinomial orde tinggi:Q R Q z
Membandingkan nilai-nilai dalam vektor kolom kemudian (kuadrat dan kubik) sebelum dan sesudah operasi faktorisasi, dan dengan tidak terpengaruh pertama dua kolom.Q R
Akhirnya kita sebut
(Z <- sweep(raw, 2L, apply(raw, 2L, function(x) sqrt(sum(x^2))), "/", check.margin = FALSE))
mengubah matriksraw
menjadi vektor ortonormal :"/"
apply(raw, 2, function(x)sqrt(sum(x^2)))
2 2.236 2 1.341
contr.poly(4)
(sum(Z[,3]^2))^(1/4) = 1
z[,3]%*%z[,4] = 0
2. Kontras (kolom) mana yang berkontribusi signifikan untuk menjelaskan perbedaan antar level dalam variabel penjelas?
Kami hanya dapat menjalankan ANOVA dan melihat ringkasan ...
summary(lm(write ~ readcat, hsb2))
... untuk melihat bahwa ada efek linear
readcat
aktifwrite
, sehingga nilai asli (dalam potongan kode ketiga di awal posting) dapat direproduksi sebagai:... atau...
... atau jauh lebih baik ...
Gagasan di balik kontras ortogonal adalah bahwa kesimpulan yang dapat kita tarik (dalam hal ini menghasilkan koefisien melalui regresi linier) akan menjadi hasil dari aspek independen dari data. Ini tidak akan terjadi jika kita hanya menggunakanX0, X1, ⋯ . Xn sebagai kontras.
Secara grafis, ini jauh lebih mudah dipahami. Bandingkan sarana aktual oleh kelompok-kelompok dalam blok hitam persegi besar dengan nilai-nilai yang ditentukan sebelumnya, dan lihat mengapa perkiraan garis lurus dengan kontribusi minimal polinomial kuadratik dan kubik (dengan kurva yang hanya didekati dengan loess) adalah optimal:
Jika, hanya untuk efek, koefisien ANOVA telah sebesar untuk kontras linier untuk perkiraan lainnya (kuadrat dan kubik), plot nonsensik yang mengikuti akan menggambarkan lebih jelas plot polinomial dari setiap "kontribusi":
Kodenya ada di sini .
sumber
qr.qy()
fungsi, tetapi saya pasti akan mencoba untuk melihat apakah saya dapat mengatakan sesuatu yang minimal koheren tentang pertanyaan Anda segera setelah saya punya waktu.Saya akan menggunakan contoh Anda untuk menjelaskan cara kerjanya. Menggunakan kontras polinomial dengan empat kelompok menghasilkan berikut.
Di mana persamaan pertama bekerja untuk kelompok skor bacaan terendah dan yang keempat untuk kelompok skor bacaan terbaik. kita dapat membandingkan persamaan ini dengan yang diberikan menggunakan regresi linear normal (seandainyar e a dsaya terus menerus)
Biasanya bukanL , Q , C kamu akan memiliki β1, β2, β3 dan ditulis pada posisi pertama. Tetapi tulisan ini menyerupai yang dengan kontras polinomial. Jadi angka di depanL , Q , C sebenarnya bukan r e a dsaya, r e a d2saya, r e a d3saya . Anda dapat melihat koefisien itu sebelumnyaL. memiliki tren linier, sebelumnya Q kuadrat dan sebelumnya C kubik.
Kemudian R memperkirakan parameterμ , L , Q , C dan memberimu
Dalam contoh itu secara signifikan bukan nol sajaL.ˆ . Jadi kesimpulan Anda bisa jadi: Kami melihat bahwa skor yang lebih baik dalam penulisan tergantung secara linear pada skor membaca, tetapi tidak ada efek kuadratik atau kubik yang signifikan.
sumber