Model Lmer nie jest zbieżny

12

Moje dane są opisane tutaj Co może powodować, że „Model błędu () jest pojedynczym błędem” w aov przy dopasowywaniu ANOVA z powtarzanymi pomiarami?

Próbuję zobaczyć efekt interakcji przy użyciu, lmerwięc mój podstawowy przypadek to:

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)

Uruchomienie anovadaje mi znaczące wyniki, ale kiedy próbuję uwzględnić przypadkowe nachylenie ( (1+Scenario|Player)), model nie działa z tym błędem:

  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

Alternatywnie, jeśli nie zbiegnie się po wielu iteracjach (ustawiłem na 100 000), a następnie otrzymuję te same wyniki 50ki 100koznacza to, że jest bardzo zbliżony do rzeczywistej wartości, po prostu jej nie osiąga. Czy mogę w ten sposób zgłosić moje wyniki?

Zauważ, że gdy ustawię tak wysokie iteracje, otrzymuję tylko te ostrzeżenia:

 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
źródło

Odpowiedzi:

8

Zobacz rozmowę, aby znaleźć alternatywną metodę oceny konwergencji. W szczególności komentarz Bena Bolkera:

dzięki. Jeszcze prostszym testem byłoby zastosowanie dopasowanego przykładu, który dał ci ostrzeżenia o zbieżności oraz przyjrzenie się wynikom
relgrad <- with(fitted_model@optinfo$derivs,solve(Hessian,gradient))
max(abs(relgrad))
i sprawdzenie, czy jest dość mały (np. <0,001?)

Alternatywnie możesz wypróbować tutaj poradę Bolkera, dotyczącą wypróbowania innego optymalizatora.

filups21
źródło
1
co należy zrobić, jeśli max (abs (relgrad)) daje ci wartość 2.9239489e-05?
Jens
1
@Jens to byłoby naprawdę, bardzo małe (e-05 oznacza „zapisz 5 zer, a następnie liczby widoczne po lewej stronie”, z kropką po pierwszym zero). Więc byłby bardzo zadowolony z tej wartości!
Arthur Spoon,