Модель Лмера не зможе сходитися


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

Дивіться цю розмову щодо альтернативного методу оцінки конвергенції. Конкретно, цей коментар від Бена Болкера:

Дякую. Ще простішим тестом було б взяти пристосований приклад, який дав вам попередження про конвергенцію, і погляньте на результати
relgrad <- with(fitted_model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
та побачите, чи досить розумні вони (наприклад, <0,001?)

Крім того, ви можете спробувати поради Болкера тут , а це спробувати інший оптимізатор.


1
що робити, якщо max (abs (relgrad)) дає значення 2.9239489e-05?
Єнс

1
@Jens тоді це було б дійсно, дуже мало (e-05 означає "запишіть 5 нулів, а потім цифри, які ви бачите зліва", з крапкою після першого нуля). Так що людина була б дуже задоволена цією цінністю!
Артур Ложка
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.