perfom glmer.nb(), сообщение об ошибке:(maxstephalfit) Сокращению шага PIRLS не удалось уменьшить отклонение в pwrssUpdate

Когда мы выполняем glmer.nb, мы просто получаем сообщение об ошибке

> glm1 <- glmer.nb(Jul ~ scale(I7)+ Maylg+(1|Year), data=bph.df)

Ошибка: (maxstephalfit) PIRLS-шаг-половинкам не удалось уменьшить отклонение в pwrssUpdate. Дополнительно: Предупреждение: в theta.ml(Y, mu, sum(w), w, limit = control$maxit, trace = control$trace >: достигнут предел итерации

Кто может мне помочь? Спасибо большое!

Мои данные указаны ниже.

   Year    Jul A7    Maylg L7b
331 1978   1948  6 1.322219   4
343 1979   8140 32 2.678518   2
355 1980 106896 26 2.267172   2
367 1981  36227 25 4.028205   2
379 1982  19085 18 2.752816   2
391 1983  26010 32 2.086360   3
403 1984   1959  1 2.506505   4
415 1985   8025 18 2.656098   0
427 1986   9780 20 1.939519   0
439 1987  48235 29 4.093912   1
451 1988   7473 30 2.974972   2
463 1989   2850 25 2.107210   2
475 1990  10555 18 2.557507   3
487 1991  70217 30 4.843563   0
499 1992   2350 31 1.886491   2
511 1993   3363 32 2.956649   4
523 1994   5140 37 1.934498   4
535 1995  14210 36 2.492760   1
547 1996   3644 27 1.886491   1
559 1997   9828 29 1.653213   1
571 1998   3119 41 2.535294   4
583 1999   5382 10 2.472756   3
595 2000    690  5 1.886491   2
607 2001    871 13       NA   2
619 2002  12394 27 0.845098   5
631 2003   4473 36 1.342423   2

1 ответ

У вас будет много проблем с этим набором данных, среди прочего, потому что у вас есть случайный эффект на уровне наблюдения (у вас есть только одна точка данных на Year) и пытаемся подогнать отрицательную биномиальную модель. По сути, это означает, что вы пытаетесь согласовать избыточную дисперсию двумя различными способами одновременно.

Если вы подходите к модели Пуассона, вы можете видеть, что результаты сильно недоразвиты (для модели Пуассона остаточное отклонение должно быть приблизительно равно остаточным степеням свободы).

library("lme4")
glm0 <- glmer(Jul ~ scale(A7)+ Maylg+(1|Year), data=bph.df,
              family="poisson")
print(glm0)
Generalized linear mixed model fit by maximum likelihood (Laplace
  Approximation) [glmerMod]
 Family: poisson  ( log )
Formula: Jul ~ scale(A7) + Maylg + (1 | Year)
   Data: bph.df
      AIC       BIC    logLik  deviance  df.resid 
 526.4904  531.3659 -259.2452  518.4904        21 
Random effects:
 Groups Name        Std.Dev.
 Year   (Intercept) 0.9555  
Number of obs: 25, groups:  Year, 25
Fixed Effects:
(Intercept)    scale(A7)        Maylg  
     7.3471       0.3363       0.6732  
deviance(glm0)/df.residual(glm0)
## [1] 0.0003479596

Или в качестве альтернативы:

library("aods3")
gof(glm0)
## D  = 0.0073, df = 21, P(>D) = 1
## X2 = 0.0073, df = 21, P(>X2) = 1

glmmADMB удается соответствовать этому, но я не знаю, насколько я мог бы доверять результатам (параметр дисперсии очень большой, что указывает на то, что модель в основном сходится к распределению Пуассона в любом случае).

bph.df <- na.omit(transform(bph.df,Year=factor(Year)))
glmmadmb(Jul ~ scale(A7)+ Maylg+(1|Year), data=bph.df,
         family="nbinom")
GLMM's in R powered by AD Model Builder:

  Family: nbinom 
  alpha = 403.43 
  link = log 

Fixed effects:
  Log-likelihood: -259.25 
  AIC: 528.5 
  Formula: Jul ~ scale(A7) + Maylg + (1 | Year) 
(Intercept)   scale(A7)       Maylg 
  7.3628472   0.3348105   0.6731953 

Random effects:
Structure: Diagonal matrix
Group=Year
            Variance StdDev
(Intercept)   0.9105 0.9542

Number of observations: total=25, Year=25

Результаты практически идентичны модели Пуассона из lme4 выше.

Другие вопросы по тегам