Pertanyaan saya didasarkan pada respons ini yang menunjukkan lme4::lmer
model mana yang sesuai dengan langkah-langkah berulang ANOVA dua arah:
require(lme4)
set.seed(1234)
d <- data.frame(
y = rnorm(96),
subject = factor(rep(1:12, 4)),
a = factor(rep(1:2, each=24)),
b = factor(rep(rep(1:2, each=12))),
c = factor(rep(rep(1:2, each=48))))
# standard two-way repeated measures ANOVA:
summary(aov(y~a*b+Error(subject/(a*b)), d[d$c == "1",]))
# corresponding lmer call:
anova(lmer(y ~ a*b+(1|subject) + (1|a:subject) + (1|b:subject), d[d$c == "1",]))
Pertanyaan saya sekarang adalah bagaimana memperluas ini ke kasus ANOVA tiga arah:
summary(aov(y~a*b*c+Error(subject/(a*b*c)), d))
## [...]
## Error: subject:a:b:c
## Df Sum Sq Mean Sq F value Pr(>F)
## a:b:c 1 0.101 0.1014 0.115 0.741
## Residuals 11 9.705 0.8822
Ekstensi alami serta versi daripadanya tidak cocok dengan hasil ANOVA:
anova(lmer(y ~ a*b*c +(1|subject) + (1|a:subject) + (1|b:subject) + (1|c:subject), d))
## [...]
## a:b:c 1 0.1014 0.1014 0.1500
anova(lmer(y ~ a*b*c +(1|subject) + (1|a:subject) + (1|b:subject) + (1|c:subject) +
(1|a:b:subject) + (1|a:c:subject) + (1|b:c:subject), d))
## [...]
## a:b:c 1 0.1014 0.1014 0.1539
Perhatikan bahwa pertanyaan yang sangat mirip telah diajukan sebelumnya . Namun, tidak ada contoh data (yang disediakan di sini).
y ~ a*b + (1 + a*b|subject), d[d$c == "1",]
? Atau mungkin saya melewatkan sesuatu?lmer
akan mengeluh karena efek acak tidak teridentifikasi lagi. Awalnya saya juga berpikir bahwa ini adalah model yang saya inginkan, tetapi ternyata tidak. Jika Anda membandingkan model lmer yang saya usulkan untuk case 2-way dengan ANOVA standar, Anda akan melihat bahwa nilai-F sama persis . Seperti yang dikatakan dalam tanggapan saya ditautkan.lmer
model pertama yang Anda tulis (yang tidak termasuk interaksi dua arah acak) tidak diharapkan setara dengan RM-ANOVA 3 arah, tetapi yang kedua yang Anda tulis (yang termasuk acak interaksi dua arah) seharusnya. Adapun mengapa ada perbedaan bahkan dengan model itu, saya punya firasat tentang apa masalahnya, akan makan malam lalu akan melihat dataset mainan lagi.Jawaban:
Jawaban langsung untuk pertanyaan Anda adalah bahwa model terakhir yang Anda tulis,
Saya percaya "pada prinsipnya" benar, meskipun itu adalah parameterisasi aneh yang sepertinya tidak selalu berfungsi dengan baik dalam praktik yang sebenarnya.
Adapun mengapa output yang Anda dapatkan dari model ini berbeda dengan
aov()
output, saya pikir ada dua alasan.lmer()
(dan sebagian besar program model campuran lainnya).Ijinkan saya mendemonstrasikan parameterisasi yang saya sukai pada contoh ANOVA dua arah awal Anda. Asumsikan bahwa dataset Anda
d
dimuat. Model Anda (perhatikan bahwa saya mengubah dari dummy ke kode kontras) adalah:yang bekerja dengan baik di sini karena cocok dengan
aov()
output. Model yang saya sukai melibatkan dua perubahan: pengkodean kontras faktor secara manual sehingga kami tidak bekerja dengan objek faktor R (yang saya sarankan lakukan dalam 100% kasus), dan menetapkan efek acak berbeda:Kedua pendekatan ini benar-benar setara dalam masalah 2 arah yang sederhana. Sekarang kita akan beralih ke masalah 3 arah. Saya sebutkan sebelumnya bahwa contoh dataset yang Anda berikan bersifat patologis. Jadi apa yang ingin saya lakukan sebelum membahas contoh dataset Anda adalah pertama-tama menghasilkan dataset dari model komponen varians yang sebenarnya (yaitu, di mana komponen varians non-nol dibangun ke dalam model yang benar). Pertama saya akan menunjukkan bagaimana parameterisasi pilihan saya tampaknya berfungsi lebih baik daripada yang Anda usulkan. Kemudian saya akan menunjukkan cara lain untuk memperkirakan komponen varians yang tidak memaksakan bahwa mereka harus non-negatif. Kemudian kita akan berada dalam posisi untuk melihat masalah dengan dataset contoh asli.
Dataset baru akan identik dalam struktur kecuali kita akan memiliki 50 subjek:
Rasio-F yang ingin kami cocokkan adalah:
Berikut adalah dua model kami:
Seperti yang bisa kita lihat, hanya metode kedua yang cocok dengan keluaran
aov()
, meskipun metode pertama setidaknya di stadion baseball. Metode kedua juga mencapai kemungkinan log yang lebih tinggi. Saya tidak yakin mengapa kedua metode ini memberikan hasil yang berbeda, karena sekali lagi saya pikir mereka setara "pada prinsipnya", tetapi mungkin karena beberapa alasan numerik / komputasi. Atau mungkin saya salah dan mereka pada prinsipnya tidak setara.Sekarang saya akan menunjukkan cara lain untuk memperkirakan komponen varians berdasarkan ide-ide ANOVA tradisional. Pada dasarnya kami akan mengambil persamaan kuadrat rata-rata yang diharapkan untuk desain Anda, menggantikan nilai-nilai yang diamati dari kuadrat rata-rata, dan menyelesaikan komponen varians. Untuk mendapatkan kuadrat rata-rata yang diharapkan kita akan menggunakan fungsi R yang saya tulis beberapa tahun yang lalu, yang disebut
EMS()
, yang didokumentasikan DI SINI . Di bawah ini saya menganggap fungsi sudah dimuat.Oke, sekarang kita akan kembali ke contoh semula. Rasio-F yang kami coba padankan adalah:
Berikut adalah dua model kami:
Dalam hal ini kedua model pada dasarnya menghasilkan hasil yang sama, meskipun metode kedua memiliki log-likelihood yang sedikit lebih tinggi. Tidak ada metode yang cocok
aov()
. Tapi mari kita lihat apa yang kita dapatkan ketika kita menyelesaikan untuk komponen varians seperti yang kita lakukan di atas, menggunakan prosedur ANOVA yang tidak membatasi komponen varians menjadi non-negatif (tetapi yang hanya dapat digunakan dalam desain seimbang tanpa prediktor kontinu dan tidak ada data yang hilang; asumsi ANOVA klasik).Sekarang kita bisa melihat apa yang patologis tentang contoh aslinya. Model pas terbaik adalah salah satu yang menyiratkan bahwa beberapa komponen varians acak adalah negatif. Tetapi
lmer()
(dan sebagian besar program model campuran lainnya) membatasi estimasi komponen varians menjadi non-negatif. Ini umumnya dianggap sebagai kendala yang masuk akal, karena varian tentu saja tidak pernah bisa benar-benar negatif. Namun, konsekuensi dari kendala ini adalah bahwa model campuran tidak dapat secara akurat mewakili dataset yang menampilkan korelasi intraclass negatif, yaitu, dataset di mana pengamatan dari cluster yang sama kurang(daripada lebih banyak) serupa rata-rata dari pengamatan yang diambil secara acak dari dataset, dan akibatnya di mana varians dalam-cluster secara substansial melebihi varians antara-cluster. Dataset semacam itu adalah kumpulan data yang masuk akal sempurna yang kadang-kadang akan dijumpai di dunia nyata (atau disimulasikan secara tidak sengaja!), Tetapi tidak dapat dijelaskan secara masuk akal oleh model komponen-varians, karena menyiratkan komponen varians negatif. Namun mereka dapat "tidak masuk akal" dijelaskan oleh model seperti itu, jika perangkat lunak akan mengizinkannya.aov()
memungkinkan itu.lmer()
tidak.sumber
I am not sure why these two methods give different results, as again I think they are "in principle" equivalent, but maybe it is for some numerical/computational reasons
- Anda mungkin memahami ini lebih baik sekarang (dua tahun kemudian)? Saya mencoba mencari tahu apa bedanya, tapi janganA
(1|A:sub)
(0+A|sub)
lmer
panggilan menghasilkananova()
output yang identik , varian efek acak tetap sangat berbeda: lihatVarCorr(mod1)
danVarCorr(mod2)
. Saya tidak begitu mengerti mengapa ini terjadi; Apakah kamu? Untukmod3
danmod4
, kita dapat melihat bahwa empat dari tujuh varians untukmod3
sebenarnya sama dengan nol (untukmod4
ketujuh adalah non-nol); "singularitas"mod3
ini mungkin adalah mengapa tabel anova berbeda. Selain itu, bagaimana Anda akan menggunakan "cara pilihan" Anda jikaa
danb
memiliki lebih dari dua level?Apakah
a
,b
,c
tetap atau efek acak? Jika sudah diperbaiki, sintaks Anda akan mudahsumber
subject
, untuk semua efek (yaitu,Within
). Lihat Desain Eksperimental: Prosedur untuk Ilmu Perilaku (2013) oleh Kirk, bab 10 (hal.458) atau posting saya di sinilmer
? Namun saya akan mendapatkan salinan Kirk (edisi ke-2) dan melihat apa yang dikatakannya.lmer
model yang berbeda . Cara terbaik untuk memeriksa kecocokan model adalah dengan memeriksa dfs mereka menggunakanlmerTest
karena perkiraan KR seharusnya memberi Andaexact
dfs dan karenanya nilai-p.