Binomial glmm พร้อมตัวแปรเด็ดขาดพร้อมความสำเร็จเต็มรูปแบบ


11

ฉันกำลังเรียกใช้ glmm พร้อมกับตัวแปรตอบสนองทวินามและตัวทำนายหมวดหมู่ ผลแบบสุ่มจะได้รับจากการออกแบบที่ซ้อนกันที่ใช้สำหรับการรวบรวมข้อมูล ข้อมูลมีลักษณะดังนี้:

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

รุ่นแรกที่ฉันใช้ดูเหมือนว่านี้

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

ฉันได้รับคำเตือนสองข้อที่มีลักษณะดังนี้:

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?

สรุปโมเดลแสดงให้เห็นว่าหนึ่งในวิธีการรักษามีข้อผิดพลาดมาตรฐานขนาดใหญ่ผิดปกติซึ่งคุณสามารถดูได้ที่นี่:

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 

ฉันลองใช้เครื่องมือเพิ่มประสิทธิภาพที่แตกต่างจากการควบคุมและฟังก์ชั่นจากแพ็คเกจอื่นและฉันได้ผลลัพธ์ที่คล้าย ฉันใช้โมเดลโดยใช้ glm โดยไม่สนใจเอฟเฟกต์แบบสุ่มและปัญหายังคงอยู่ ในขณะที่สำรวจข้อมูลฉันตระหนักว่าการรักษาด้วย Std สูง ข้อผิดพลาดมีความสำเร็จในตัวแปรตอบกลับเท่านั้น เพียงเพื่อตรวจสอบว่าอาจทำให้เกิดปัญหาฉันเพิ่มจุดข้อมูลปลอมด้วย "ความล้มเหลว" สำหรับการรักษาและรูปแบบการทำงานที่ราบรื่นและให้ข้อผิดพลาดมาตรฐานที่เหมาะสม คุณสามารถดูได้ที่นี่:

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 .

ฉันสงสัยว่าปรีชาของฉันถูกต้องเกี่ยวกับการขาดความล้มเหลวในการรักษาที่ป้องกันการประมาณที่ดีและฉันจะแก้ไขปัญหานี้ได้อย่างไร

ขอบคุณล่วงหน้า!

คำตอบ:


15

สัญชาตญาณของคุณถูกต้อง ปรากฏการณ์นี้เรียกว่าแยกสมบูรณ์ คุณสามารถค้นหาค่อนข้างมาก (ตอนที่คุณรู้ว่าชื่อของมัน) Googling รอบ ... มันมีการกล่าวถึงเป็นธรรมอย่างละเอียดที่นี่ในบริบททั่วไปและที่นี่ในบริบทของ GLMMs วิธีการแก้ปัญหามาตรฐานการแก้ไขปัญหานี้คือการเพิ่มระยะขนาดเล็กที่ผลักดันพารามิเตอร์กลับไปยังศูนย์ - ในบริบท frequentist นี้เรียกว่าการลงโทษหรืออคติแก้ไขวิธีการ อัลกอริทึมมาตรฐานเกิดจาก Firth (1993, "การลดความลำเอียงของการประมาณโอกาสสูงสุด" Biometrika 80, 27-38) และนำมาใช้ในแพ็คเกจ logistfบน CRAN ในบริบทของ Bayesian กรอบนี้เป็นการเพิ่มจุดอ่อนก่อนพารามิเตอร์ที่มีผลคงที่

สำหรับความรู้ของฉันอัลกอริทึมของ Firth ไม่ได้ถูกขยายไปยัง GLMMs แต่คุณสามารถใช้เคล็ดลับแบบเบย์โดยใช้แพ็คเกจblmeซึ่งทำให้ชั้นเบย์แบบบางอยู่ด้านบนสุดของlme4แพ็คเกจ นี่คือตัวอย่างจากการสนทนา GLMM ที่ลิงก์ด้านบน:

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

สองบรรทัดแรกในตัวอย่างนี้ตรงกับที่เราจะใช้ในglmerโมเดลมาตรฐาน สุดท้ายระบุว่าก่อนหน้านี้สำหรับผลกระทบคงที่คือการกระจายปกติหลายตัวแปรที่มีเมทริกซ์ความแปรปรวนร่วมแปรปรวนในแนวทแยง เมทริกซ์คือ 4x4 (เพราะเรามีพารามิเตอร์ผลกระทบคงที่ 4 ตัวในตัวอย่างนี้) และความแปรปรวนก่อนหน้าของแต่ละพารามิเตอร์คือ 9 (ตรงกับค่าเบี่ยงเบนมาตรฐาน 3 ซึ่งอ่อนสวย - นั่นหมายถึง +/- 2SD คือ ( -6,6) ซึ่งเป็นช่วงที่มีขนาดใหญ่มากในระดับ logit)

ข้อผิดพลาดมาตรฐานขนาดใหญ่มากของพารามิเตอร์ในตัวอย่างของคุณเป็นตัวอย่างของปรากฏการณ์ที่เกี่ยวข้องอย่างใกล้ชิดกับการแยกสมบูรณ์ (มันเกิดขึ้นเมื่อใดก็ตามที่เราได้รับค่าพารามิเตอร์ที่รุนแรงในรูปแบบโลจิสติก) ที่เรียกว่าผล Hauck-เนอร์

ข้อมูลอ้างอิงที่อาจเป็นประโยชน์อีกสองรายการ (ฉันยังไม่ได้ขุดลงไปด้วยตนเอง):

  • Gelman A, Jakulin A, Pittau MG และ Su TS (2008) การแจกแจงค่าเริ่มต้นเล็กน้อยที่ให้ข้อมูลก่อนหน้านี้สำหรับการกระจายแบบโลจิสติกและการถดถอยอื่น ๆ พงศาวดารของสถิติประยุกต์ , 2, 1360–383
  • JoséCortiñas Abrahantes และ Marc Aerts (2012) วิธีแก้ปัญหาสำหรับการแยกสำหรับข้อมูลไบนารีคลัสเตอร์แบบจำลองทางสถิติ 12 (1): 3–27 ดอย: 10.1177 / 1471082X1001200102

การค้นหา Google Scholar ล่าสุดสำหรับ "bglmer 'การแยกแบบสมบูรณ์" "จะพบ:

  • Quiñones, AE และ WT Wcislo “ เคล็ดลับการดูแลลูกขยายความลับใน Eusocial เหงื่อผึ้งMegalopta genalis ” แมลง Sociaux 62.3 (2015): 307–313

ว้าวขอบคุณมาก !! นี่เป็นเหตุผลที่สมบูรณ์แบบและรุ่นนี้ทำงานได้อย่างราบรื่นด้วย bglmer ฉันจะมีคำถามอีกหนึ่งคำถามฉันสามารถใช้วิธีการเช่นเดียวกับใน lme4 เพื่อประเมินผลแบบสุ่มและแบบคงที่ในคำอื่น ๆ เพื่อเปรียบเทียบแบบจำลองที่แตกต่างกัน?

2
ผมจะบอกว่าอย่างนั้น แต่ผมไม่ทราบว่ามีการสนับสนุนอย่างเป็นทางการใด ๆ และ / หรือ peer-reviewed การแสดงความเห็นของฉัน ...
เบน Bolker

ขอบคุณ! นี่คือปัญหาของฉันเช่นกัน การติดตามอย่างรวดเร็ว: ตรงกันข้ามกับตัวอย่างของคุณซึ่งมีปัจจัยหนึ่งที่มี 4 ระดับฉันมีการออกแบบ 2 x 2 ซึ่งแต่ละปัจจัยมี 2 ระดับ (ดังนั้นทั้งหมดยังคงเป็น 4 ระดับ) ฉันสามารถใช้diag (9,4)กับแบบจำลองของฉันได้หรือไม่ ฉันไม่มีความชำนาญด้านเมทริกซ์ดังนั้นฉันจึงต้องการตรวจสอบอีกครั้ง เพื่อที่จะพิสูจน์ว่าวิธีแก้ปัญหานี้ในบทความของฉันฉันควรอ้างถึง Firth (1993) หรือมีบทความที่เกี่ยวข้องโดยตรงมากกว่านี้ซึ่งนำวิธีแก้ปัญหาของคุณมาใช้กับ bglmer ()
โซล

2
ดูคำตอบที่อัปเดต
Ben Bolker

2
ฉันคิดอย่างนั้น - มันน่าจะสำคัญแค่ไหนว่ามีจำนวนพารามิเตอร์เอฟเฟกต์คงที่ทั้งหมด
Ben Bolker
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.