Обновление lme4 выдает сообщение об ошибке Ошибка в `[[‹ -. data.frame` (`* tmp *`, i, value = integer (0))

На прошлой неделе я построил обобщенную смешанную линейную модель с lmer (lme4), которая отлично работала:

fit<-lmer(dat$presence~log(dat$SIZE_strict)*dat$Troph_level+log(dat$HAB500EXCL_strict+1)+(1|dat$dataset), family=poisson, REML=FALSE)

Однако после обновления пакета lme4 модель больше не работала, выдавая сообщение об ошибке:

Error in `[[<-.data.frame`(`*tmp*`, i, value = integer(0)) : 
  replacement has 0 rows, data has 174
In addition: Warning messages:
1: In lmer(dat$presence ~ log(dat$SIZE_strict) * dat$Troph_level +  :
  calling lmer with 'family' is deprecated; please use glmer() instead
2: In checkArgs("glmer", REML = FALSE) :
  extra argument(s) ‘REML’ disregarded

Использование glmer вместо lmer не помогло устранить первое сообщение об ошибке. Будем очень признательны за любые предложения!

Вот некоторые данные (называемые dat):

Troph_level presence    dataset SIZE_strict HAB500EXCL_strict
carnivorous 2   1   46155   26005
carnivorous larvae  0   1   46155   26005
phytophagous    2   1   46155   26005
phytophagous    0   3   195295  360882
carnivorous 0   3   195295  360882
carnivorous larvae  0   3   195295  360882
phytophagous    4   2   18272   21169
carnivorous larvae  0   2   18272   21169
carnivorous 1   2   18272   21169
carnivorous 1   2   24964   26745
carnivorous larvae  0   2   24964   26745
phytophagous    4   2   24964   26745
phytophagous    5   2   6220    12543
carnivorous larvae  0   2   6220    12543
carnivorous 1   2   6220    12543
phytophagous    0   3   102633  12198
carnivorous larvae  0   3   102633  12198
carnivorous 0   3   102633  12198
phytophagous    0   3   2092    291439
carnivorous larvae  1   3   2092    291439
carnivorous 0   3   2092    291439
phytophagous    3   5   80410   0

Спасибо заранее! Тоос ван Нордвейк


person user2891225    schedule 17.10.2013    source источник


Ответы (1)


Это ошибка в новой версии lme4 (которая будет исправлена ​​в следующем выпуске исправления), которая требует, чтобы группирующие переменные можно было найти в пределах фрейма данных, указанного аргументом data. В целом все будет работать более гладко (и ваш код будет легче читать), если вы используете аргумент data и откажетесь от использования переменных формы dat$var, например:

fit <- glmer(presence~log(SIZE_strict)*Troph_level+log(HAB500EXCL_strict+1)+
  (1|dataset), family=poisson, data=dat)
person Ben Bolker    schedule 17.10.2013
comment
релиз патча (1.0-5) должен выйти сейчас. - person Ben Bolker; 26.10.2013