glmer — непоследовательные проблемы сходимости

Я начинаю строить модель, которая выглядит так:

model_sim <- glmer(Accuracy ~ x*y*z_scaled + (1 |Participant), 
          binomial(link = "logit"), data = Data)

И это не сошлось, поэтому я запустил функцию allFit:

(model_sim <- allFit(model_sim, maxfun = 1e+05))

чтобы увидеть, есть ли на самом деле разумные причины для беспокойства, он сошелся с 5 из 6 оптимизаторов, все с одним и тем же значением, поэтому я выбрал тот, который я всегда выбираю - bobyqa с 1e + 05 итераций, но он снова не сошелся. Кто-нибудь может объяснить, почему это произошло? Разве он не должен сходиться на основе всех подходящих результатов? Что бы вы сделали в такой ситуации?

$fixef

 $llik
      bobyqa                   Nelder_Mead                    nlminbwrap 
      -24286.15               -24286.15                     -24286.15 
 nloptwrap.NLOPT_LN_NELDERMEAD     nloptwrap.NLOPT_LN_BOBYQA 
                -24286.15                     -24286.15 

  $theta
                                     Participant.(Intercept)
  bobyqa                                      0.6872716
  Nelder_Mead                                 0.6872370
  nlminbwrap                                  0.6872456
  nloptwrap.NLOPT_LN_NELDERMEAD               0.6872732
  nloptwrap.NLOPT_LN_BOBYQA                   0.6872732

person CatM    schedule 13.10.2019    source источник
comment
Можете ли вы показать использование, например. summary(model_sim)[c("fixef","llik","theta)] (путем редактирования вопроса)?   -  person Ben Bolker    schedule 13.10.2019
comment
Да, конечно.   -  person CatM    schedule 13.10.2019
comment
@ Бен Болкер, мне отказаться от случайной структуры?   -  person CatM    schedule 14.10.2019


Ответы (1)


Возможно, вы неправильно понимаете значение/назначение allFit() (и, возможно, самих предупреждений о конвергенции). allFit() на самом деле ничего не меняет/заставляет что-либо сходиться «лучше» — он просто проверяет, сходятся ли различные алгоритмы оптимизации к одному и тому же решению (или достаточно похожим решениям). .

Ваш вывод показывает, что все доступные оптимизаторы сходятся к одним и тем же коэффициентам, по крайней мере, к нескольким знакам после запятой (надеюсь, разница между коэффициентом Probability 0,449 и 0,451 не будет иметь существенного значения для ваших выводов), и что разница в логарифмическое правдоподобие составляет менее 0,005 единиц логарифмического правдоподобия (что мало). Таким образом, мой вывод в этом случае таков, что подгонка в порядке, и на самом деле не имеет значения, какой оптимизатор вы используете.

person Ben Bolker    schedule 15.10.2019
comment
Да, я понял это. Но как только я выбираю оптимизатор на основе функции allFit и делаю (model_sim2 ‹- update(model_sim, glmerControl(optimizer=bobyqa, optCtrl = list(maxfun = 1e+05))), он не сходится. Итак, я должен просто игнорировать тот факт, что вторая модель с оптимизатором и большим количеством итераций не может сходиться, поскольку allFit () указывает, что, когда она сходится, она сходится к аналогичным решениям? - person CatM; 15.10.2019
comment
Предоставляет ли allFit() информацию о том, какие оптимизаторы сошлись? Так разве нельзя было ожидать, что при их использовании модель сойдется? - person CatM; 15.10.2019