Binomial glmm dengan variabel kategori dengan keberhasilan penuh


11

Saya menjalankan glmm dengan variabel respons binomial dan prediktor kategoris. Efek acak diberikan oleh desain bersarang yang digunakan untuk pengumpulan data. Data terlihat seperti ini:

m.gen1$treatment
 [1] sucrose      control      protein      control      no_injection .....
Levels: no_injection control sucrose protein
m.gen1$emergence 
 [1]  1  0  0  1  0  1  1  1  1  1  1  0  0....
> m.gen1$nest
 [1] 1  1  1  2  2  3  3  3  3  4  4  4  .....
Levels: 1 2 3 4 5 6 8 10 11 13 15 16 17 18 20 22 24

Model pertama yang saya jalankan terlihat seperti ini

m.glmm.em.<-glmer(emergence~treatment + (1|nest),family=binomial,data=m.gen1)

Saya mendapatkan dua peringatan yang terlihat seperti ini:

Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model failed to converge with max|grad| = 0.0240654 (tol = 0.001, component 4)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
  Model is nearly unidentifiable: large eigenvalue ratio
 - Rescale variables?

Ringkasan model menunjukkan bahwa salah satu perawatan memiliki kesalahan standar yang luar biasa besar, yang dapat Anda lihat di sini:

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)  
(Intercept)         2.565      1.038   2.472   0.0134 *
treatmentcontrol   -1.718      1.246  -1.378   0.1681  
treatmentsucrose   16.863   2048.000   0.008   0.9934  
treatmentprotein   -1.718      1.246  -1.378   0.1681 

Saya mencoba pengoptimal yang berbeda dari kontrol dan fungsi glmer dari paket lain, dan saya mendapatkan hasil yang serupa. Saya telah menjalankan model menggunakan GLM mengabaikan efek acak, dan masalahnya tetap ada. Sambil menjelajahi data saya menyadari bahwa perawatan dengan Std tinggi. kesalahan hanya berhasil dalam variabel respons. Hanya untuk memeriksa apakah itu dapat menyebabkan masalah, saya menambahkan titik data palsu dengan "kegagalan" untuk perawatan itu dan model berjalan dengan lancar, dan memberikan kesalahan standar yang masuk akal. Anda dapat melihatnya di sini:

Fixed effects:
                 Estimate Std. Error z value Pr(>|z|)  
(Intercept)        3.4090     1.6712   2.040   0.0414 *
treatmentcontrol  -1.8405     1.4290  -1.288   0.1978  
treatmentsucrose  -0.2582     1.6263  -0.159   0.8738  
treatmentprotein  -2.6530     1.5904  -1.668   0.0953 .

Saya bertanya-tanya apakah intuisi saya benar tentang kurangnya kegagalan untuk perawatan yang mencegah estimasi yang baik, dan bagaimana saya bisa mengatasi masalah ini.

Terima kasih sebelumnya!

Jawaban:


15

Intuisi Anda sangat tepat. Fenomena ini disebut pemisahan total . Anda dapat menemukan cukup banyak (sekarang Anda tahu namanya) Googling sekitar ... Hal ini dibahas secara menyeluruh di sini dalam konteks umum , dan di sini dalam konteks GLMM . Solusi standar untuk masalah ini adalah dengan menambahkan istilah kecil yang mendorong parameter kembali ke nol - dalam konteks yang sering disebut metode hukuman atau bias-diperbaiki . Algoritma standar adalah karena Firth (1993, "Bias reduksi estimasi kemungkinan maksimum" Biometrika 80, 27-38), dan diimplementasikan dalam paket logistfpada CRAN. Dalam konteks Bayesian ini dibingkai sebagai menambahkan yang lemah sebelum parameter efek tetap.

Sepengetahuan saya, algoritma Firth belum diperluas ke GLMM, tetapi Anda dapat menggunakan trik Bayesian dengan menggunakan paket blme , yang menempatkan lapisan Bayesian tipis di bagian atas lme4paket. Berikut adalah contoh dari diskusi GLMM yang tertaut di atas:

cmod_blme_L2 <- bglmer(predation~ttt+(1|block),data=newdat,
                   family=binomial,
                   fixef.prior = normal(cov = diag(9,4)))

Dua baris pertama dalam contoh ini persis sama dengan yang akan kita gunakan dalam glmermodel standar ; yang terakhir menentukan bahwa sebelum untuk efek tetap adalah distribusi normal multivariat dengan matriks varians-kovarians diagonal. Matriksnya 4x4 (karena kami memiliki 4 parameter efek tetap dalam contoh ini), dan varian sebelumnya dari masing-masing parameter adalah 9 (sesuai dengan standar deviasi 3, yang cukup lemah - yang berarti +/- 2SD adalah ( -6,6), yang merupakan rentang yang sangat besar pada skala logit).

Kesalahan standar yang sangat besar dari parameter dalam contoh Anda adalah contoh dari fenomena yang berkaitan erat dengan pemisahan lengkap (terjadi setiap kali kita mendapatkan nilai parameter ekstrim dalam model logistik) yang disebut efek Hauck-Donner .

Dua referensi yang lebih bermanfaat (saya sendiri belum menggali):

  • Gelman A, Jakulin A, Pittau MG dan Su TS (2008) Distribusi sebelumnya yang tidak informatif dan informatif untuk model logistik dan regresi lainnya. Annals of Applied Statistics , 2, 1360-383.
  • José Cortiñas Abrahantes dan Marc Aerts (2012) Solusi untuk pemisahan untuk data biner berkerumun Statistik Pemodelan 12 (1): 3–27 doi: 10.1177 / 1471082X1001200102

Pencarian sarjana Google yang lebih baru untuk "bglmer 'separasi lengkap'" ditemukan:

  • Quiñones, AE, dan WT Wcislo. “Perawatan Diperpanjang Kripik dalam Lebah Megalopta genalis Berkeringat Eusocial .” Insectes Sociaux 62.3 (2015): 307–313.

wow terima kasih banyak !! Ini masuk akal, dan model sekarang berjalan dengan lancar dengan bglmer. Saya hanya akan memiliki satu pertanyaan lagi, dapatkah saya menggunakan metode seperti pada lme4 untuk menilai efek acak dan tetap, dengan kata lain untuk membandingkan model yang berbeda?

2
Saya akan mengatakan demikian, tetapi saya tidak tahu apakah ada dukungan formal dan / atau peer-review untuk pendapat saya ...
Ben Bolker

Terima kasih! Ini persis masalah saya juga. Tindak lanjut cepat: berbeda dengan contoh Anda, yang memiliki satu faktor dengan 4 level, saya memiliki desain 2 x 2 di mana setiap faktor memiliki 2 level (sehingga totalnya masih 4 level). Bisakah saya juga menggunakan diag (9,4) untuk model saya? Saya tidak berpengalaman dengan matriks jadi saya ingin memeriksa ulang. Terkait, untuk membenarkan solusi ini dalam makalah saya, haruskah saya mengutip Firth (1993) atau ada makalah yang lebih langsung relevan, yang telah mengimplementasikan solusi Anda menggunakan bglmer ()?
Sol

2
lihat jawaban yang diperbarui.
Ben Bolker

2
Saya kira begitu - seharusnya hanya masalah berapa banyak parameter efek tetap yang ada secara total.
Ben Bolker
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.