Saya mencoba untuk beralih dari menggunakan ez
paket ke lme
untuk tindakan berulang ANOVA (karena saya berharap saya akan dapat menggunakan kontras kustom dengan lme
).
Mengikuti saran dari posting blog ini saya dapat mengatur model yang sama menggunakan keduanya aov
(seperti halnya ez
, ketika diminta) dan lme
. Namun, sedangkan dalam contoh yang diberikan dalam posting itu nilai- F sangat setuju antara aov
dan lme
(saya memeriksanya, dan mereka melakukannya), ini bukan kasus untuk data saya. Meskipun nilai- F serupa, mereka tidak sama.
aov
mengembalikan nilai-f dari 1,3399, lme
mengembalikan 1,36264. Saya bersedia menerima aov
hasilnya sebagai yang "benar" karena ini juga yang dikembalikan SPSS (dan inilah yang diperhitungkan untuk bidang / pengawas saya).
Pertanyaan:
Alangkah baiknya jika seseorang bisa menjelaskan mengapa perbedaan ini ada dan bagaimana saya bisa gunakan
lme
untuk memberikan hasil yang kredibel. (Saya juga akan bersedia menggunakanlmer
alih-alihlme
untuk jenis barang ini, jika memberikan hasil yang "benar". Namun, saya belum menggunakannya sejauh ini.)Setelah menyelesaikan masalah ini, saya ingin menjalankan analisis kontras. Terutama saya akan tertarik pada kontras menggabungkan dua tingkat faktor pertama (yaitu,
c("MP", "MT")
) dan membandingkannya dengan faktor tingkat ketiga (yaitu,"AC"
). Selanjutnya, menguji tingkat faktor ketiga versus keempat (yaitu,"AC"
versus"DA"
).
Data:
tau.base <- structure(list(id = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L,
9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L,
22L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L,
14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L, 1L, 2L, 3L, 4L,
5L, 6L, 7L, 8L, 9L, 10L, 11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L,
19L, 20L, 21L, 22L, 1L, 2L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L,
11L, 12L, 13L, 14L, 15L, 16L, 17L, 18L, 19L, 20L, 21L, 22L), .Label = c("A18K",
"D21C", "F25E", "G25D", "H05M", "H07A", "H08H", "H25C", "H28E",
"H30D", "J10G", "J22J", "K20U", "M09M", "P20E", "P26G", "P28G",
"R03C", "U21S", "W08A", "W15V", "W18R"), class = "factor"), factor = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L,
2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 2L, 3L, 3L, 3L, 3L, 3L,
3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L, 3L,
3L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L, 4L,
4L, 4L, 4L, 4L, 4L, 4L, 4L), .Label = c("MP", "MT", "AC", "DA"
), class = "factor"), value = c(0.9648092876, 0.2128662077, 1,
0.0607615485, 0.9912814024, 3.22e-08, 0.8073856412, 0.1465590332,
0.9981672618, 1, 1, 1, 0.9794401938, 0.6102546108, 0.428651501,
1, 0.1710644881, 1, 0.7639763913, 1, 0.5298989196, 1, 1, 0.7162733447,
0.7871177434, 1, 1, 1, 0.8560509327, 0.3096989662, 1, 8.51e-08,
0.3278862311, 0.0953598576, 1, 1.38e-08, 1.07e-08, 0.545290432,
0.1305621416, 2.61e-08, 1, 0.9834051136, 0.8044114935, 0.7938839461,
0.9910112678, 2.58e-08, 0.5762677121, 0.4750002288, 1e-08, 0.8584252623,
1, 1, 0.6020385797, 8.51e-08, 0.7964935271, 0.2238374288, 0.263377904,
1, 1.07e-08, 0.3160751898, 5.8e-08, 0.3460325565, 0.6842217296,
1.01e-08, 0.9438301877, 0.5578367224, 2.18e-08, 1, 0.9161424562,
0.2924856039, 1e-08, 0.8672987992, 0.9266688748, 0.8356425464,
0.9988463913, 0.2960361777, 0.0285680426, 0.0969063841, 0.6947998266,
0.0138254805, 1, 0.3494775301, 1, 2.61e-08, 1.52e-08, 0.5393467752,
1, 0.9069223275)), .Names = c("id", "factor", "value"), class = "data.frame", row.names = c(1L,
6L, 10L, 13L, 16L, 17L, 18L, 22L, 23L, 24L, 27L, 29L, 31L, 33L,
42L, 43L, 44L, 45L, 54L, 56L, 58L, 61L, 64L, 69L, 73L, 76L, 79L,
80L, 81L, 85L, 86L, 87L, 90L, 92L, 94L, 96L, 105L, 106L, 107L,
108L, 117L, 119L, 121L, 124L, 127L, 132L, 136L, 139L, 142L, 143L,
144L, 148L, 149L, 150L, 153L, 155L, 157L, 159L, 168L, 169L, 170L,
171L, 180L, 182L, 184L, 187L, 190L, 195L, 199L, 202L, 205L, 206L,
207L, 211L, 212L, 213L, 216L, 218L, 220L, 222L, 231L, 232L, 233L,
234L, 243L, 245L, 247L, 250L))
Dan kodenya:
require(nlme)
summary(aov(value ~ factor+Error(id/factor), data = tau.base))
anova(lme(value ~ factor, data = tau.base, random = ~1|id))
lme
hasil dari buku teks standar ANOVA (diberikan olehaov
, dan yang saya butuhkan), ini bukan pilihan bagi saya. Dalam makalah saya, saya ingin melaporkan ANOVA, bukan sesuatu seperti ANOVA. Menariknya Venables & Ripley (2002, p. 285) menunjukkan bahwa kedua pendekatan mengarah pada perkiraan yang identik. Tetapi perbedaan nilai-nilai F membuat saya merasa tidak enak. Lebih jauh,Anova()
(daricar
) hanya mengembalikan nilai Chi² untuklme
objek. Karena itu bagi saya, pertanyaan pertama saya belum dijawab.lme
; tetapi untuk kontras,glht
bekerja padalm
cocok juga, bukan hanyalme
cocok. (Juga,lme
hasilnya adalah hasil buku teks standar juga.)lm
untuk analisis ukuran berulang. Hanyaaov
dapat menangani tindakan berulang tetapi akan mengembalikan objek kelasaovlist
yang sayangnya tidak ditangani olehglht
.lm
menggunakan kesalahan residual sebagai istilah kesalahan untuk semua efek; ketika ada efek yang harus menggunakan istilah kesalahan yang berbeda,aov
diperlukan (atau sebaliknya, menggunakan hasil darilm
untuk menghitung F-statistik secara manual). Dalam contoh Anda, istilah kesalahan untukfactor
adalahid:factor
interaksi, yang merupakan istilah kesalahan residual dalam model aditif. Bandingkan hasil Anda dengananova(lm(value~factor+id))
.Jawaban:
Mereka berbeda karena model lme memaksa komponen varians
id
menjadi lebih besar dari nol. Melihat tabel anova mentah untuk semua istilah, kita melihat bahwa kesalahan kuadrat rata-rata untuk id kurang dari itu untuk residual.Ketika kita menghitung komponen varians, ini berarti bahwa varians karena id akan negatif. Ingatan saya tentang memori kuadrat rata-rata yang diharapkan adalah goyah, tetapi perhitungannya kira-kira seperti itu
Ini terdengar aneh tetapi bisa terjadi. Apa artinya adalah bahwa rata-rata untuk setiap id lebih dekat satu sama lain daripada yang Anda harapkan satu sama lain mengingat jumlah variasi residual dalam model.
Sebaliknya, menggunakan lme memaksa varian ini lebih besar dari nol.
Ini melaporkan penyimpangan standar, mengkuadratkan untuk mendapatkan hasil varians
9.553e-10
untuk varians id dan0.1586164
untuk varians residual.Sekarang, Anda harus tahu bahwa menggunakan
aov
tindakan berulang hanya tepat jika Anda percaya bahwa korelasi antara semua pasangan tindakan berulang adalah sama; ini disebut senyawa simetri. (Secara teknis, kebulatan diperlukan tapi ini sudah cukup untuk saat ini.) Salah satu alasan untuk menggunakanlme
lebihaov
adalah bahwa hal itu dapat menangani berbagai jenis struktur korelasi.Dalam kumpulan data khusus ini, estimasi untuk korelasi ini negatif; ini membantu menjelaskan bagaimana rata-rata kesalahan kuadrat untuk id lebih kecil dari kesalahan kuadrat residual. Korelasi negatif berarti bahwa jika pengukuran pertama seseorang berada di bawah rata-rata, rata-rata, yang kedua akan di atas rata-rata, menjadikan total rata-rata untuk individu tersebut lebih rendah dari yang kita harapkan jika ada korelasi nol atau korelasi positif.
Menggunakan
lme
dengan efek acak setara dengan memasang model simetri majemuk di mana korelasi itu dipaksa menjadi non-negatif; kita bisa cocok dengan model di mana korelasinya dibiarkan negatif menggunakangls
:Tabel ANOVA ini setuju dengan tabel dari
aov
fit dan darilm
fit.Oke, lalu bagaimana? Nah, jika Anda percaya bahwa varians dari
id
dan korelasi antara pengamatan harus non-negatif,lme
fit sebenarnya lebih tepat daripada fit menggunakanaov
ataulm
karena estimasi varians residualnya sedikit lebih baik. Namun, jika Anda yakin korelasi antar pengamatan bisa negatif,aov
ataulm
ataugls
lebih baik.Anda mungkin juga tertarik mengeksplorasi struktur korelasi lebih lanjut; untuk melihat struktur korelasi umum, Anda akan melakukan sesuatu seperti
Di sini saya hanya membatasi output ke struktur korelasi. Nilai 1 hingga 4 mewakili empat level
factor
; kita melihat bahwa faktor 1 dan faktor 4 memiliki korelasi negatif yang cukup kuat:Salah satu cara untuk memilih di antara model-model ini adalah dengan uji rasio kemungkinan; ini menunjukkan bahwa model efek acak dan model struktur korelasi umum tidak berbeda secara statistik; ketika itu terjadi, model yang lebih sederhana biasanya lebih disukai.
sumber
lme
untuk memperoleh hasil yang sama seperti denganaov
(dan dengan demikian memungkinkanlme
untuk semua ANOVA), yaitu menggunakan argumen korelasi dalam panggilan kelme
:anova(lme(value ~ factor, data = tau.base, random = ~1|id, correlation = corCompSymm(form = ~1|id)))
aov
,lme
tanpa simetri gabungan, danlme
dengan simetri gabungan) memiliki jumlah dfs yang persis sama.anova.lme()
. Dari jawaban Anda, saya mendapat bahwa hubungan antara ANOVA dan model campuran terletak pada struktur korelasinya. Saya kemudian membaca bahwa memaksakan struktur korelasi simetris compund mengarah ke kesetaraan antara dua pendekatan. Karena itu saya memberlakukannya. Saya tidak tahu apakah ini memakan df lain. Namun hasilnya tidak setuju dengan interpretasi ini.aov()
cocok dengan model melaluilm()
menggunakan kuadrat terkecil,lme
cocok melalui kemungkinan maksimum. Perbedaan dalam bagaimana parameter dari model linier diperkirakan kemungkinan bertanggung jawab atas perbedaan (sangat kecil) dalam nilai-f Anda.Dalam praktiknya, (misalnya untuk pengujian hipotesis) perkiraan ini sama, jadi saya tidak melihat bagaimana seseorang dapat dianggap 'lebih kredibel' daripada yang lain. Mereka datang dari berbagai paradigma pemasangan model.
Untuk kontras, Anda perlu mengatur matriks kontras untuk faktor Anda. Venebles dan Ripley menunjukkan bagaimana melakukan ini pada hal 143, hal.146 dan hal.293-294 dari edisi ke-4.
sumber
lme
ataulmer
untuk menghitung ANOVA (secara tegas) karena menggunakan metode yang serupa tetapi tidak identik. Jadi apakah tidak ada cara menghitung kontras untuk ANOVA ukuran berulang di R?