tl; dr возможно, ошибка в MuMIn::dredge()
- я все еще копаю - но, похоже, все работает нормально, если вы пропустите спецификацию extra="R^2"
.
воспроизводимый пример
set.seed(101)
dd <- data.frame(x1=rnorm(200),x2=rnorm(200),x3=rnorm(200),
f=factor(rep(1:10,each=20)),
n=50)
library(lme4)
dd$y <- simulate(~x1+x2+x3+(1|f),
family=binomial,
weights=dd$n,
newdata=dd,
newparams=list(beta=c(1,1,1,1),
theta=1))[[1]]
## fit model
m0 <- glmer(y~x1+x2+x3+(1|f),
family=binomial,
weights=n,
data=dd,
na.action="na.fail")
теперь попробуйте glmer () + dredge (), со спецификацией оптимизатора и без нее
library(MuMIn)
d0 <- dredge(m0)
m1 <- update(m0, control=glmerControl(optimizer="bobyqa"))
d1 <- dredge(m1)
Все это работает, поэтому проблема должна быть в некоторых необязательных аргументах.Проверка того, что:
d0B <- dredge(m0, beta=c("partial.sd"), extra = c("R^2")) ## works
d1B <- try(dredge(m1, beta=c("partial.sd"), extra = c("R^2"))) ## fails
Какой из дополнительных аргументов является виновником?
d1C <- dredge(m1, beta=c("partial.sd")) ## works
d1D <- try(dredge(m1, extra=c("R^2"))) ## fails
Если вы действительно, действительно хотите получить значения R ^ 2, вы можете загрузить / распаковатьИсходный код пакета, отредактируйте строку 101 из R/r.squaredLR.R
, как указано ниже (добавьте cl$control
в список элементов, для которых установлено значение NULL
, и переустановите пакет ...
===================================================================
--- R/r.squaredLR.R (revision 443)
+++ R/r.squaredLR.R (working copy)
@@ -98,7 +98,7 @@
if(formulaArgName != "formula")
names(cl)[names(cl) == formulaArgName] <- "formula"
cl$formula <- update(as.formula(cl$formula), . ~ 1)
- cl$method <- cl$start <- cl$offset <- contrasts <- NULL
+ cl$method <- cl$start <- cl$offset <- cl$control <- contrasts <- NULL
}
cl <- cl[c(TRUE, names(cl)[-1L] %in% names(call2arg(cl)))]
if(evaluate) eval(cl, envir = envir) else cl