Mengapa nilai p berubah signifikan ketika mengubah urutan kovariat dalam model aov?

10

Saya memiliki satu set data yang terdiri dari 482 observasi.

data=Populationfull

Saya akan melakukan analisis asosiasi genotipe untuk 3 SNP. Saya mencoba membangun model untuk analisis saya dan saya menggunakan aov (y ~ x, data = ...). Untuk satu sifat saya memiliki beberapa efek tetap dan kovariat yang telah saya sertakan dalam model, seperti:

Starts <- aov(Starts~Sex+DMRT3+Birthyear+Country+Earnings+Voltsec+Autosec, data=Populationfull)

summary(Starts)
                Df Sum Sq Mean Sq F value   Pr(>F)    
Sex              3  17.90    5.97  42.844  < 2e-16 ***
DMRT3            2   1.14    0.57   4.110    0.017 *  
Birthyear        9   5.59    0.62   4.461 1.26e-05 ***
Country          1  11.28   11.28  81.005  < 2e-16 ***
Earnings         1 109.01  109.01 782.838  < 2e-16 ***
Voltsec          1  12.27   12.27  88.086  < 2e-16 ***
Autosec          1   8.97    8.97  64.443 8.27e-15 ***
Residuals      463  64.48    0.14                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Saya menemukan bahwa jika saya mengubah urutan variabel dalam model saya mendapat nilai p yang berbeda, silakan lihat di bawah.

Starts2 <- aov(Starts~Voltsec+Autosec+Sex+DMRT3+Birthyear+Country+Earnings, data=Populationfull)

summary(Starts2)

                Df Sum Sq Mean Sq F value   Pr(>F)    
Voltsec   1   2.18    2.18  15.627 8.92e-05 ***
Autosec   1 100.60  100.60 722.443  < 2e-16 ***
Sex              3  10.43    3.48  24.962 5.50e-15 ***
DMRT3            2   0.82    0.41   2.957  0.05294 .  
Birthyear        9   3.25    0.36   2.591  0.00638 ** 
Country          1   2.25    2.25  16.183 6.72e-05 ***
Earnings      1  46.64   46.64 334.903  < 2e-16 ***
Residuals      463  64.48    0.14                     
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1   1

Mengapa saya mendapatkan nilai p yang berbeda tergantung pada urutan variabel / faktor / kovariat / fixedeffect (?) Yang dikodekan? Apakah ada cara untuk "memperbaiki" untuk itu? Mungkinkah saya menggunakan model yang salah? Saya masih cukup baru di R jadi jika Anda dapat membantu saya dengan ini, tolong tetap sederhana agar saya dapat memahami jawabannya hehe ... Terima kasih, semoga seseorang dapat membantu saya memahami ini!

Rbeginner
sumber
3
Harap berikan beberapa sampel data Populationfullagar masalah Anda dapat diulang . Ini tidak terjadi dengan contoh dari aov()halaman bantuan. summary(aov(yield ~ block + N + P + K, npk)); summary(aov(yield ~ K + P + block + N , npk))
MrFlick
Nilai p berubah karena seluruh bidang nilai telah berubah. menjalankan pertama Anda menjalankan Earnings 1 109.01 109.01 782.838 < 2e-16 ***kedua Anda Earnings 1 46.64 46.64 334.903 < 2e-16 ***. Hasil Anda tidak sama. Mulailah dengan memeriksa untuk melihat bahwa Anda belum melakukan lebih dari menyusun ulang variabel.
1
JUGA: dalam model kedua, Anda menggunakan Dapatkan, bukan Penghasilan ... jika ada dua variabel dari nama yang berbeda, itu bisa menjadi masalah jika itu bukan kesalahan ketik dalam menyalin ke ruang pertanyaan SO.
Ya, nilainya berubah tetapi mengapa? Saya telah menggunakan kolom yang sama persis dari bingkai data yang sama persis di kedua model (Penghasilan vs Penghasilan hal dalam model kedua hanya bahwa saya salah tulis, saya telah memperbaikinya sekarang).
Rbeginner
1
Ini terjadi karena Anda memiliki desain yang tidak seimbang. Anda akan menemukan banyak bantuan tentang hal ini jika Anda mencari di forum ini atau hanya Google "ANOVA tidak seimbang dalam R". Saya akan merekomendasikan melihat ke dalam carpaket-mengimplementasikan ANOVA Tipe II dan Tipe III, yang tidak tergantung pada urutan variabel, sedangkan aovANOVA Tipe I.
Loris

Jawaban:

15

Masalahnya berasal dari cara aov()melakukan pengujian signifikansi standarnya. Ia menggunakan apa yang disebut analisis ANOVA "Tipe I", di mana pengujian dilakukan dalam urutan variabel ditentukan dalam model Anda. Jadi dalam contoh pertama, ia menentukan berapa banyak varians dijelaskan oleh sexdan menguji signifikansinya, lalu bagian mana dari varians yang tersisa dijelaskan oleh DMRT3dan menguji signifikansinya dalam hal varians yang tersisa , dan sebagainya. Dalam contoh kedua, DMRT3hanya dievaluasi setelah Voltsec,, Autosecdan sex, dalam urutan itu, sehingga ada sedikit variasi yang tersisa untuk DMRT3dijelaskan.

Jika dua variabel prediktor dikorelasikan maka yang pertama dimasukkan ke dalam model akan mendapatkan "kredit" penuh, menyisakan sedikit varians untuk "dijelaskan oleh" yang kedua, yang dengan demikian mungkin tampak kurang "signifikan secara statistik" daripada yang pertama bahkan jika itu adalah tidak, secara fungsional. Pertanyaan ini dan jawabannya menjelaskan berbagai Jenis analisis ANOVA.

Salah satu cara untuk menyiasatinya adalah mengekstraksi diri Anda dari striktur ANOVA klasik dan menggunakan model linier sederhana, dengan lm()di R, bukan aov(). Ini secara efektif menganalisis semua prediktor secara paralel, "mengoreksi" semua prediktor sekaligus. Dalam hal itu, dua prediktor yang berkorelasi mungkin memiliki kesalahan standar yang besar dari estimasi koefisien regresi mereka, dan koefisien mereka mungkin berbeda di antara sampel yang berbeda dari populasi, tetapi setidaknya urutan Anda memasukkan variabel ke dalam spesifikasi model tidak masalah.

Jika variabel respons Anda adalah beberapa jenis variabel jumlah, seperti namanya Starts, maka Anda mungkin tidak boleh menggunakan ANOVA karena residu tidak mungkin terdistribusi secara normal, seperti yang ditafsirkan oleh p- value. Variabel jumlah lebih baik ditangani dengan model linier umum (misalnya, glm()dalam R), yang dapat dianggap sebagai generalisasi lm()untuk jenis lain dari struktur kesalahan residual.

EdM
sumber