Kejadian yang tidak biasa ketika berhadapan dengan model campuran maksimal yang kompleks (memperkirakan semua efek acak yang mungkin untuk data dan model yang diberikan) adalah sempurna (+1 atau -1) atau korelasi yang hampir sempurna di antara beberapa efek acak. Untuk tujuan diskusi, mari kita amati model dan ringkasan model berikut ini
Model: Y ~ X*Cond + (X*Cond|subj)
# Y = logit variable
# X = continuous variable
# Condition = values A and B, dummy coded; the design is repeated
# so all participants go through both Conditions
# subject = random effects for different subjects
Random effects:
Groups Name Variance Std.Dev. Corr
subject (Intercept) 0.85052 0.9222
X 0.08427 0.2903 -1.00
CondB 0.54367 0.7373 -0.37 0.37
X:CondB 0.14812 0.3849 0.26 -0.26 -0.56
Number of obs: 39401, groups: subject, 219
Fixed effects:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.49686 0.06909 36.14 < 2e-16 ***
X -1.03854 0.03812 -27.24 < 2e-16 ***
CondB -0.19707 0.06382 -3.09 0.00202 **
X:CondB 0.22809 0.05356 4.26 2.06e-05 ***
Alasan yang diduga di balik korelasi sempurna ini adalah bahwa kami telah menciptakan model yang terlalu rumit untuk data yang kami miliki. Saran umum yang diberikan dalam situasi ini adalah (misalnya, Matuschek et al., 2017; kertas ) untuk memperbaiki koefisien overparameter ke 0, karena model degenerasi seperti itu cenderung menurunkan daya. Jika kita mengamati perubahan nyata pada efek tetap dalam model yang diperkecil, kita harus menerimanya; jika tidak ada perubahan, maka tidak ada masalah dalam menerima yang asli.
Namun, mari kita asumsikan bahwa kita tidak hanya tertarik pada efek tetap yang dikendalikan untuk RE (efek acak), tetapi juga dalam struktur RE. Dalam kasus yang diberikan, secara teoritis akan masuk akal untuk mengasumsikan bahwa Intercept
dan lereng X
memiliki korelasi negatif bukan nol. Beberapa pertanyaan berikut:
Apa yang harus dilakukan dalam situasi seperti itu? Haruskah kita melaporkan korelasi sempurna dan mengatakan bahwa data kami tidak "cukup baik" untuk memperkirakan korelasi "nyata"? Atau haruskah kita melaporkan model korelasi 0? Atau haruskah kita mencoba menetapkan korelasi lain ke 0 dengan harapan bahwa yang "penting" tidak akan sempurna lagi? Saya rasa tidak ada 100% jawaban yang benar di sini, saya lebih suka mendengar pendapat Anda.
Bagaimana cara menulis kode yang memperbaiki korelasi 2 efek acak spesifik ke 0, tanpa mempengaruhi korelasi antara parameter lain?
sumber
blme
,MCMCglmm
,rstanarm
,brms
...)Jawaban:
Matriks kovarians efek-acak tunggal
Memperoleh perkiraan korelasi efek acak +1 atau -1 berarti algoritma optimasi mencapai "batas": korelasi tidak boleh lebih tinggi dari +1 atau lebih rendah dari -1. Bahkan jika tidak ada kesalahan atau peringatan konvergensi eksplisit, ini berpotensi mengindikasikan beberapa masalah dengan konvergensi karena kami tidak mengharapkan korelasi sebenarnya terletak pada batas. Seperti yang Anda katakan, ini biasanya berarti bahwa tidak ada cukup data untuk memperkirakan semua parameter dengan andal. Matuschek et al. 2017 mengatakan bahwa dalam situasi ini kekuatan dapat dikompromikan.
Cara lain untuk mencapai batas adalah untuk mendapatkan estimasi varians 0: Mengapa saya mendapatkan nol varians dari efek acak dalam model campuran saya, meskipun ada beberapa variasi dalam data?
Jadi apa yang harus dilakukan?
Jika tidak ada cukup data untuk memperkirakan semua parameter model secara andal, maka kita harus mempertimbangkan untuk menyederhanakan model. Mengambil contoh model Anda,,
X*Cond + (X*Cond|subj)
ada berbagai cara yang memungkinkan untuk menyederhanakannya:Hapus salah satu efek acak, biasanya korelasi tingkat tertinggi:
Singkirkan semua parameter korelasi:
Pembaruan: sebagai catatan @Henrik,
||
sintaks hanya akan menghapus korelasi jika semua variabel di sebelahnya adalah numerik. Jika variabel kategorikal (sepertiCond
) terlibat, orang harusnya menggunakanafex
paket praktisnya (atau solusi manual yang rumit). Lihat jawabannya untuk lebih jelasnya.Singkirkan beberapa parameter korelasi dengan memecah istilah menjadi beberapa, misalnya:
lme4
bawaan untuk mencapai ini. Lihat jawaban @ BenBolker di SO untuk demonstrasi cara mencapai ini melalui beberapa peretasan cerdas.Bertentangan dengan apa yang Anda katakan, saya tidak berpikir Matuschek et al. 2017 secara khusus merekomendasikan # 4. Inti dari Matuschek et al. 2017 dan Bates et al. 2015 tampaknya dimulai dengan model maksimal ala Barr et al. 2013 dan kemudian mengurangi kompleksitas sampai matriks kovarians peringkat penuh. (Selain itu, mereka akan sering merekomendasikan untuk mengurangi kompleksitas lebih jauh, untuk meningkatkan daya.) Pembaruan: Sebaliknya, Barr et al. merekomendasikan untuk mengurangi kompleksitas SAJA jika model tidak bertemu; mereka bersedia mentoleransi matriks kovarian tunggal. Lihat jawaban @ Henrik.
Jika seseorang setuju dengan Bates / Matuschek, maka saya pikir tidak masalah untuk mencoba berbagai cara mengurangi kompleksitas untuk menemukan orang yang melakukan pekerjaan sambil melakukan "kerusakan paling tidak". Melihat daftar saya di atas, matriks kovarians asli memiliki 10 parameter; # 1 memiliki 6 parameter, # 2 memiliki 4 parameter, # 3 memiliki 7 parameter. Model mana yang akan menghilangkan korelasi sempurna tidak mungkin dikatakan tanpa mencocokkannya.
Tetapi bagaimana jika Anda tertarik pada parameter ini?
Diskusi di atas memperlakukan matriks efek kovarians acak sebagai parameter gangguan. Anda mengajukan pertanyaan menarik tentang apa yang harus dilakukan jika Anda secara khusus tertarik pada parameter korelasi yang harus Anda "menyerah" untuk mendapatkan solusi peringkat penuh yang berarti.
Perhatikan bahwa memperbaiki parameter korelasi pada nol tidak harus menghasilkan BLUP (
ranef
) yang tidak berkorelasi; bahkan, mereka mungkin tidak terlalu terpengaruh sama sekali (lihat jawaban @ Placidia untuk demonstrasi ). Jadi salah satu pilihan adalah melihat korelasi BLUP dan melaporkannya.Pilihan lain, yang mungkin kurang menarik, adalah menggunakan suguhan
subject
sebagai efek tetapY~X*cond*subj
, mendapatkan perkiraan untuk setiap mata pelajaran dan menghitung korelasi di antara mereka. Ini sama dengan menjalankanY~X*cond
regresi terpisah untuk setiap subjek secara terpisah dan mendapatkan estimasi korelasi dari mereka.Lihat juga bagian tentang model tunggal dalam model campuran Ben Bolker FAQ:
sumber
(Machine||Worker)
lmer
memperkirakan satu varian lebih dari untuk(Machine|Worker)
. Jadi apa yanglmer
dilakukan||
dengan faktor tidak dapat dijelaskan dengan 'ini hanya menghilangkan korelasi antar faktor, tetapi tidak antara tingkat faktor kategorikal.' Ini mengubah struktur efek acak dalam cara yang agak aneh (itu berkembang(Machine||Worker)
menjadi(1|Worker) + (0+Machine|Worker)
, maka varian tambahan). Jangan ragu untuk mengubah suntingan saya. Poin utama saya adalah bahwa dalam pernyataan ini perbedaan antara kovariat numerik dan kategoris perlu diperjelas.machines2 <- subset(Machines, Machine %in% c("A", "B")); summary(lmer(score ~ Machine + (Machine || Worker), data=machines2))
. Secara umum itu tidak bekerja dengan faktor karena ekspansi ini dan caraR
berurusan dengan faktor dalammodel.matrix
.ranef
nilai untuk mempelajari korelasi antara efek acak. Saya tidak terlalu jauh ke dalam topik ini, tetapi saya tahu bahwa biasanya tidak direkomendasikan untuk bekerja dengan nilai-nilai yang diekstraksiranef
, tetapi dengan perkiraan korelasi dan varian. Apa pendapat Anda tentang itu? Plus, saya tidak tahu bagaimana orang akan menjelaskan kepada peninjau bahwa korelasi dalam model tidak dipostulasikan, tetapi kami masih menghitung korelasi dari nilai yang diekstraksi. Itu tidak masuk akalSaya setuju dengan semua yang dikatakan dalam jawaban amuba yang memberikan ringkasan bagus dari diskusi saat ini tentang masalah ini. Saya akan mencoba menambahkan beberapa poin tambahan dan merujuk pada handout kursus model campuran saya yang baru-baru ini yang juga merangkum poin-poin ini.
Menekan parameter korelasi (opsi 2 dan 3 dalam jawaban amuba) melalui
||
karya hanya untuk kovariat numeriklmer
dan bukan untuk faktor. Ini dibahas secara rinci dengan kode oleh Reinhold Kliegl .Namun,
afex
paket saya menyediakan fungsionalitas untuk menekan korelasi juga di antara faktor-faktor jika argumenexpand_re = TRUE
dalam panggilan untukmixed()
(lihat juga berfungsilmer_alt()
). Ini pada dasarnya melakukannya dengan menerapkan pendekatan yang dibahas oleh Reinhold Kliegl (yaitu, mentransformasikan faktor menjadi kovariat numerik dan menentukan struktur efek-acak pada faktor-faktor tersebut).Contoh sederhana:
Bagi mereka yang tidak mengetahui
afex
, fungsi utama untuk model campuran adalah untuk memberikan nilai-p untuk efek tetap, misalnya ,:Dale Barr dari Barr et al. (2013) makalah lebih berhati-hati dalam merekomendasikan pengurangan struktur efek-acak daripada disajikan dalam jawaban amuba. Dalam pertukaran twitter baru - baru ini dia menulis:
Jadi hati-hati disarankan.
Sebagai salah satu pengulas saya juga dapat memberikan beberapa wawasan tentang mengapa kami the Bates et al. (2015) kertas tetap tidak dipublikasikan. Saya dan dua pengulas lainnya (yang menandatangani, tetapi akan tetap tidak disebutkan namanya di sini) memiliki beberapa kritik dengan pendekatan PCA (tampaknya tidak berprinsip dan tidak ada bukti bahwa itu lebih unggul dalam hal kekuasaan). Lebih lanjut, saya percaya ketiganya mengkritik bahwa makalah ini tidak fokus pada masalah bagaimana menentukan struktur efek-acak, tetapi juga mencoba untuk memperkenalkan GAMM. Dengan demikian, kertas Bates et al (2015) berubah menjadi Matuschek et al. (2017) makalah yang membahas masalah struktur efek acak dengan simulasi dan Baayen et al. (2017) makalah yang memperkenalkan GAMM.
Ulasan lengkap saya tentang Bates et al. draft dapat ditemukan di sini . IIRC, ulasan lain memiliki jenis poin utama yang serupa.
sumber
lmer_alt
pada dasarnya bekerja persis sepertilmer
(atau bahkanglmer
) dengan satu-satunya perbedaan yang memungkinkan||
sintaks. Jadi saya tidak yakin mengapa Anda ingin menghindariafex
di semua biaya. Itu bahkan harus bekerja tanpa melampirkan (yaitu,afex::lmer_alt(...)
).cbind
ke data. Kemudian istilah efek-acak dalam rumus diganti dengan yang baru di mana masing-masing kolom yang baru dibuat digabungkan dengan tanda +. Lihat baris 690 hingga 730 di github.com/singmann/afex/blob/master/R/mixed.R||
, ini adalah poin yang sangat penting, terima kasih telah membawanya dan menjelaskannya kepada saya (saya mengedit jawaban saya untuk mencerminkannya). Saya suka fungsi inilmer_alt
diafex
. Saya hanya akan menyebutkan di sini untuk kelengkapan bahwa untuk mendapatkan hasil yang sama denganlmer
panggilan vanili tanpa preprocessing tambahan, misalnya dapat ditentukan(1+dummy(Machine,'B')+dummy(Machine,'C') || Worker)
. Ini jelas menjadi sangat rumit ketika variabel kategori memiliki banyak tingkatan.dummy()
hanya berfungsi dengan kontras pengobatan default dan tidak ketika efek-acak menggunakan jumlah-ke-nol kontras (yang harus digunakan jika model memiliki interaksi). Anda dapat misalnya, melihat bahwa jika Anda membandingkan komponen varians dalam contoh di atas untuklmer_alt
panggilan denganmixed
panggilan.Saya juga memiliki masalah ini ketika menggunakan estimasi kemungkinan maksimum - hanya saya menggunakan algoritma Goldstein IGLS yang diimplementasikan melalui perangkat lunak MLwiN dan bukan LME4 di R. Namun dalam setiap kasus masalah telah teratasi ketika saya beralih ke estimasi MCMC menggunakan hal yang sama perangkat lunak. Saya bahkan memiliki korelasi lebih dari 3 yang diselesaikan ketika saya mengubah estimasi. Menggunakan IGLS, korelasi dihitung estimasi paska kovarians dibagi dengan produk dari akar kuadrat dari produk dari varians terkait - dan ini tidak memperhitungkan ketidakpastian dalam masing-masing estimasi konstituen.
Perangkat lunak IGLS tidak 'tahu' bahwa kovarian menyiratkan korelasi dan hanya menghitung perkiraan fungsi varians konstan, linier, kuadrat dll. Sebaliknya pendekatan MCMC dibangun berdasarkan asumsi sampel dari distribusi normal multivariat yang sesuai dengan varian dan kovarian dengan sifat baik dan propogasi kesalahan penuh sehingga ketidakpastian dalam estimasi kovarian diperhitungkan dalam estimasi varians dan sebaliknya.
MLwin menjadi rantai estimasi MCMC dengan estimasi IGLS dan matriks kovariansi varians non-negatif yang pasti mungkin perlu diubah dengan mengubah kovarians menjadi nol pada awalnya sebelum memulai pengambilan sampel.
Untuk contoh yang berhasil lihat
Mengembangkan model bertingkat untuk menganalisis kontekstual, heterogenitas, dan perubahan menggunakan MLwiN 3, Volume 1 (diperbarui September 2017); Volume 2 juga ada di RGate
https://www.researchgate.net/publication/320197425_Vol1Training_manualRevisedSept2017
Lampiran untuk Bab 10
sumber