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
выше.