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

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
Pio
источник

Ответы:

8

Смотрите этот разговор для альтернативного метода оценки конвергенции. В частности, этот комментарий от Бена Болкера:

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

Кроме того, вы можете попробовать совет Bolker здесь , чтобы попробовать другой оптимизатор.

filups21
источник
1
что делать, если max (abs (relgrad)) дает значение 2.9239489e-05?
Дженс
1
@Jens, тогда это будет очень, очень мало (e-05 означает «напишите 5 нулей, а затем цифры, которые вы видите слева», с точкой после первого нуля). Так что можно было бы очень доволен этим значением!
Артур Ложка