Синтаксис glmulti для логистической регрессии со смешанными эффектами в lme4

Я пытаюсь сравнить значения AIC (или AICc) различных логистических (или гамма-моделей) смешанных эффектов, содержащих все переменные в моем наборе данных, упрощенную версию которого можно скачать здесь: https://drive.google.com/file/d/1YO17J7Dx1cFD0Wf3fNGe-a37ccTKyWNp/view?usp=sharing. Однако я новичок в glmulti и использую lme4 в течение месяца или около того, поэтому я считаю, что я делаю что-то очень неправильно:

Я создал исходную модель, содержащую все переменные, следующим образом:

data_reprex <- read_csv("reprex_glmulti_data.csv")


data_reprex <- within(data_reprex, {
  Dog <- factor(Dog) 
  Box <-factor(Box)
  Sex <- factor(Sex)
  Group <- factor(Group)
  Breedtype <- factor(Breedtype)
  OwnerSeverity <- factor(OwnerSeverity, levels = c("None", "Mild", "Moderate", "Severe"))
})


outcome_model <- glmer(SuccessBinary ~ Interval + Box + Trial + Age + Sex + Breedtype + OwnerSeverity +
                         Group + Group*Interval + Group*Box + Group*Trial + Group*Age + Group*Sex + Group*Breedtype 
                       + (1 | Dog), data = data_reprex, family = binomial, nAGQ=100)

Модель работает нормально (за исключением нескольких предупреждений, которые я уже исследовал). Однако я хочу запустить glmulti для моделей с каждой комбинацией этих переменных, чтобы определить лучшую модель, и попробовал несколько различных форм синтаксиса, основанных на различных примерах, которые я нашел в Интернете, но ни одна из этих работ (я также пытался изменить критерий и настройки "confsetsize"):

attempt1 <- glmulti(SuccessBinary ~ Interval + Box + Trial + Age + Sex + Breedtype + OwnerSeverity +
         Group + (1 | Dog), data=data_reprex,
       level=1, fitfunction=glmer, family= binomial, crit="aicc", confsetsize=150)

attempt2 <- glmulti(SuccessBinary ~ Interval + Box + Trial + Age + Sex + Breedtype + OwnerSeverity +
                      Group + (1 | Dog), data=data_reprex,
                    level=1, fitfunction=glmer, crit="aicc", confsetsize=150)


attempt3 <- glmulti(outcome_model, level=2, fitfunction=glmer, crit=AICc)

attempt4 <- glmulti(outcome_model, level=2, crit=AICc)

Сообщения об ошибках включают в себя:

Improper call of glmulti.

Error in .subset2(x, i, exact = exact) : 
  attempt to select less than one element in get1index

Я также иногда получаю предупреждающие сообщения, такие как:

 In Ops.factor(Interval + Box + Trial + Age + Sex + Breedtype + OwnerSeverity,  :
  ‘+’ not meaningful for factors

In Ops.factor(Interval + Box + Trial + Age + Sex + Breedtype + OwnerSeverity +  : ‘|’ not meaningful for factors

Я предполагаю, что это проблема синтаксиса, и мне нужно изменить структуру кода, потому что я использую логистический блеск, а не glm, как большинство примеров, которые я нашел в Интернете, и из документации я считаю, что glmulti должен быть совместимым с моделями от lme4. Кто-нибудь может мне посоветовать, как это структурировать, чтобы оно работало? (Кроме того, существует ли относительно простой способ включить только взаимодействия с переменной "Группа" вместо всех других переменных?)

РЕДАКТИРОВАТЬ: В качестве последней попытки я также пытался использовать приведенный здесь совет (хотя я думаю, что я, возможно, несколько запутался): смешанные модели glmulti и liner используют следующий код, но это тоже не работает:

glmer2.glmulti <- setMethod('getfit', 'merMod', function(object, ...) {
  summ=summary(object)$coef
  summ1=summ[,1:2]
  if (length(dimnames(summ)[[1]])==1) {
    summ1=matrix(summ1, nr=1, dimnames=list(c("(Intercept)"),c("Estimate","Std. Error")))
  }
  cbind(summ1, df=rep(10000,length(fixef(object))))
})

attempt5 <- glmulti(SuccessBinary ~ Interval + Box + Trial + Age + Sex + Breedtype + OwnerSeverity +
                      Group + (1 | Dog), data=data_reprex,
                    level=1, fitfunction=glmer2.glmulti, family=binomial, crit="aicc", confsetsize=150)

Заранее спасибо!

1 ответ

Я запутался, а также попытался применить glmulti к модели со смешанным эффектом, оснащенной glmmTMB, и получил очень похожие сообщения об ошибках, чем вы. Мне не удалось заставить его работать с glmulti, но мне кажется, что функция dredge из пакета MuMIn здесь работает для меня. Может быть, вы могли бы попробовать это? (Если вы еще не нашли решение).

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