Saya memiliki model regresi yang terlihat seperti ini:
... atau dalam notasi R: y ~ x1 + x2 + x3 + x1:x2 + x1:x3 + x1:x2:x3
Katakanlah dan adalah variabel kategori dan adalah numerik. Masalahnya adalah bahwa memiliki tiga tingkat dan bukannya kontras standar, saya perlu menguji:X 2 X 3 X 1 X 1 a , X 1 b , X 1 c
- Apakah intersep untuk level berbeda secara signifikan dari intersep rata-rata untuk level dan . X 1 b X 1 c
- Apakah respons berbeda secara signifikan antara level dan rata-rata level dan .X 1 a X 1 b X 1 c
- Apakah kemiringan berbeda secara signifikan antara level dan rata-rata level dan .X 1 a X 1 b X 1 c
Berdasarkan posting ini sepertinya matriks yang saya inginkan adalah ...
2
-1
-1
Jadi saya lakukan contrasts(mydata$x1)<-t(ginv(cbind(2,-1,-1)))
. Perkiraan berubah, tetapi begitu juga yang lain. Saya dapat mereproduksi estimasi baru dengan mengurangi nilai prediksi dari kelompok dan berarti (ketika dan berada pada tingkat referensi) dari dua kali nilai pada level tersebut. Tapi saya tidak bisa percaya bahwa saya menentukan matriks kontras saya dengan benar kecuali saya juga bisa mendapatkan koefisien yang sama. b e t a 1 X 1 b X 1 c X 3 = 0 X 2 X 1 a
Adakah yang punya saran tentang bagaimana membungkus kepala saya di sekitar hubungan antara sarana sel dan kontras? Terima kasih. Apakah ada nama standar untuk jenis kontras ini?
Aha! Menurut tautan yang diposkan dalam jawaban Glen_b , intinya adalah, Anda dapat mengonversi APAPUN perbandingan grup berarti Anda ingin menjadi atribut kontras gaya-R sebagai berikut:
- Buat matriks persegi. Baris mewakili tingkat faktor Anda dan kolom mewakili kontras. Kecuali yang pertama, yang memberi tahu model apa yang harus diwakili oleh intersep.
- Jika Anda ingin intersep Anda menjadi grand mean, isi kolom pertama dengan semua nilai non-nol yang sama, tidak peduli apa. Jika Anda ingin intersep menjadi salah satu cara level, masukkan angka di baris itu dan isi sisanya dengan nol. Jika Anda ingin intersep menjadi rata-rata dari beberapa level, masukkan angka pada baris dan nol tersebut di sisanya. Jika Anda ingin menjadi rata-rata tertimbang, gunakan angka yang berbeda, jika tidak gunakan nomor yang sama. Anda bahkan dapat memasukkan nilai negatif di kolom intersepsi dan itu mungkin berarti sesuatu juga, tapi itu benar-benar mengubah kontras lainnya, jadi saya tidak tahu untuk apa itu
- Isi sisa kolom dengan nilai positif dan negatif yang menunjukkan level apa yang Anda inginkan dibandingkan dengan yang lain. Saya lupa mengapa menjumlahkan ke nol adalah penting, tetapi sesuaikan nilainya sehingga kolom yang melakukan penjumlahan menjadi nol.
- Ubah posisi matriks menggunakan
t()
fungsi. - Gunakan
ginv()
dariMASS
paket atausolve()
untuk mendapatkan kebalikan dari matriks transpos. - Jatuhkan kolom pertama, mis
mycontrast<-mycontrast[,-1]
. Anda sekarang memiliki matriks apx p-1, tetapi informasi yang Anda masukkan untuk intersep Anda dikodekan dalam matriks secara keseluruhan selama langkah 5. - Jika Anda ingin label dalam output ringkasan lebih menyenangkan untuk dibaca daripada
lm()
output default et al., Beri nama kolom matriks Anda sesuai. Namun intersep akan selalu secara otomatis dinamai(Intercept)
. - Jadikan matriks Anda kontras baru untuk faktor yang dimaksud, misalnya
contrasts(mydata$myfactor)<-mymatrix
- Run
lm()
(dan mungkin banyak fungsi lainnya yang menggunakan formula) seperti biasa dalam standar R tanpa harus bebanglht
,doBy
ataucontrasts
.
Glen_b, terima kasih, dan terima kasih Kelompok Konsultasi Statistik UCLA. Statistik terapan saya, prof, menghabiskan beberapa hari untuk membahas topik ini, dan saya masih tidak tahu bagaimana cara menulis matriks kontras saya sendiri. Dan sekarang, satu jam membaca dan bermain dengan R, dan saya akhirnya berpikir saya mendapatkannya. Kurasa aku seharusnya mendaftar ke UCLA saja. Atau Universitas StackExchange.
contra.helmert
?