Модель смешанных эффектов с нулевыми завышенными данными - Сообщение об ошибке с использованием zeroinfl () из пакета 'pscl' - PullRequest
0 голосов
/ 25 июня 2018

У меня проблемы с функцией zeroinfl() из пакета 'pscl'.Вот краткий обзор моих ситуаций:

Я пытаюсь выяснить, влияют ли на нативную плотность ствола на участке фокусные виды на этом участке.Я использую модель смешанных эффектов со случайным эффектом, являющимся сайтом (я собрал данные на 6 разных сайтах).Вот как выглядит смешанная модель с использованием функции glmer() из пакета 'lme4':

nonstem.model <- glmer(nonstem ~ focalspecies + (1|site), family = "poisson", data = data, na.action=na.omit)

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

nonstem.ZIP = zeroinfl(nonstem ~ focalspecies + (1|site), dist="poisson", link = "logit", data = data)

Но я получил сообщение об ошибке:

Ошибка в contrasts<- (*tmp*, значение = contr.funs [1 + isOF [nn]]):
контрасты могут применяться только к факторам с 2 или более уровнями. Дополнительно: Предупреждение: В Ops.factor (1, site): '|'не имеет значения для факторов

Итак, я понял, что я не могу иметь случайный эффект здесь, и поэтому я изменил его на фиксированный эффект.

nonstem.ZIP = zeroinfl(nonstem ~ focalspecies + site, dist="poisson", link = "logit", data = data)

Однако теперь я получаю это сообщение об ошибке:

Ошибка в solve.default (as.matrix (fit $ hessian)): система вычислительно единственная:номер условия = 4.70937e-36

Если я изменил распределение с "Пуассона" на "Негин", то появится похожее сообщение об ошибке:

Ошибка при решении.по умолчанию (as.matrix (fit $ hessian)): система вычислительно единственная: число взаимных условий = 2.92265e-19

Кто-нибудь знает, что означает это сообщение об ошибке?Или, если есть другой пакет / функция, которую я могу использовать?Буду признателен за любую оказанную помощь.

1 Ответ

0 голосов
/ 26 июня 2018

Что касается вашего комментария, вы можете использовать базовые R stats::anova для сравнения двух моделей.

Вот воспроизводимый пример с использованием Salamanders выборочных данных из glmmTMB

library(glmmTMB);
fit1 = glmmTMB(
    count ~ spp * mined + (1|site),
    zi = ~ spp * mined,
    data = Salamanders,
    family = poisson);
fit2 = glmmTMB(
    count ~ spp + mined + (1|site),
    zi = ~ spp + mined,
    data = Salamanders,
    family = poisson);

anova(fit1, fit2)
#Data: Salamanders
#Models:
#fit2: count ~ spp + mined + (1 | site), zi=~spp + mined, disp=~1
#fit1: count ~ spp * mined + (1 | site), zi=~spp * mined, disp=~1
#     Df    AIC    BIC  logLik deviance  Chisq Chi Df Pr(>Chisq)
#fit2 17 1785.5 1861.4 -875.75   1751.5
#fit1 29 1778.1 1907.7 -860.04   1720.1 31.405     12   0.001708 **
#---
#Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Кредит, причитающийся кредит: пример был скорректирован с здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...