โมเดล Lmer ไม่สามารถบรรจบกัน


12

มีการอธิบายข้อมูลของฉันที่นี่สิ่งที่อาจทำให้เกิด "รูปแบบข้อผิดพลาด () เป็นข้อผิดพลาดเอกพจน์" ใน aov เมื่อทำการวัด ANOVA ซ้ำแล้วซ้ำอีก?

ฉันพยายามที่จะเห็นผลของการโต้ตอบโดยใช้lmerกรณีพื้นฐานของฉันคือ:

my_null.model <- lmer(value ~ Condition+Scenario+ 
                             (1|Player)+(1|Trial), data = my, REML=FALSE)

my.model <- lmer(value ~ Condition*Scenario+ 
                             (1|Player)+(1|Trial), data = my, REML=FALSE)

การใช้งานanovaให้ผลลัพธ์ที่สำคัญกับฉัน แต่เมื่อฉันลองพิจารณาความชันแบบสุ่ม ( (1+Scenario|Player)) แบบจำลองล้มเหลวด้วยข้อผิดพลาดนี้:

  Warning messages:
 1: In commonArgs(par, fn, control, environment()) :
   maxfun < 10 * length(par)^2 is not recommended.
 2: In optwrap(optimizer, devfun, getStart(start, rho$lower, rho$pp),  :
  convergence code 1 from bobyqa: bobyqa -- maximum number of function evaluations exceeded
 3: In commonArgs(par, fn, control, environment()) :
  maxfun < 10 * length(par)^2 is not recommended.
 4: In optwrap(optimizer, devfun, opt$par, lower = rho$lower, control = control,  :
   convergence code 1 from bobyqa: bobyqa -- maximum number of function evaluations exceeded
 5: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Model failed to converge with max|grad| = 36.9306 (tol = 0.002)
 6: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
   Model failed to converge: degenerate  Hessian with 1 negative eigenvalues

อีกทางหนึ่งหากไม่สามารถรวมตัวกันได้หลังจากทำซ้ำหลายครั้ง (ฉันตั้งไว้ที่100 000) และฉันได้รับผลลัพธ์เดียวกันหลังจากนั้น50kและ100kหมายความว่ามันใกล้เคียงกับมูลค่าจริงมากเพียงไม่ถึง ดังนั้นฉันสามารถรายงานผลลัพธ์เช่นนี้ได้ไหม

โปรดทราบว่าเมื่อฉันตั้งค่าการทำซ้ำสูงมากฉันจะได้รับคำเตือนเหล่านี้เท่านั้น:

 Warning messages:
1: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
 Model failed to converge with max|grad| = 43.4951 (tol = 0.002)
2: In checkConv(attr(opt, "derivs"), opt$par, ctrl = control$checkConv,  :
 Model failed to converge: degenerate  Hessian with 1 negative eigenvalues

คำตอบ:


8

ดูบทสนทนานี้เพื่อหาวิธีทางเลือกในการประเมินการลู่เข้า ความคิดเห็นนี้จาก Ben Bolker โดยเฉพาะ:

ขอบคุณ การทดสอบที่เรียบง่ายยิ่งขึ้นคือการเป็นตัวอย่างที่เหมาะสมที่ให้คำเตือนการลู่เข้าหากันและดูผลลัพธ์
relgrad <- with(fitted_model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
และดูว่ามันเล็กพอสมควรหรือไม่ (เช่น <0.001?)

หรือคุณอาจลองใช้คำแนะนำของโบลเคอร์ที่นี่ซึ่งก็คือการลองใช้เครื่องมือเพิ่มประสิทธิภาพที่แตกต่างกัน


1
เราควรทำอย่างไรถ้า max (abs (relgrad)) ให้ค่า 2.9239489e-05
Jens

1
@Jens นั้นจะเล็กจริง ๆ (e-05 หมายถึง "เขียน 5 ศูนย์แล้วตัวเลขที่คุณเห็นทางซ้าย" โดยมีจุดหลังจากศูนย์แรก) ดังนั้นหนึ่งจะมีความสุขสวยกับค่าที่!
Arthur Spoon
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.