我正在使用glmulti
glmer 的包装器(二项式),它summary
是:
This is glmulti 1.0.7, Apr. 2013.
Length Class Mode
0 NULL NULL
按照在这个线程上所做的事情,虽然这是 for lmer
,
glmulti 在使用带有 lme4 的遗传算法时无限期运行,我得到与上面相同的结果。难道是因为版本已经改变并且包装必须以不同的方式进行?以下是虚拟代码(从上面的链接中提取):
x = as.factor(round(runif(30),1))# dummy grouping factor
yind = runif(30,0,10) # mock dependent variable
a = runif(30) # dummy covariate
b = runif(30) # another dummy covariate
c = runif(30) # an another one
d = runif(30)
tmpdata <- data.frame(x=x,yind=yind,a=a,b=b,c=c,d=d)
lmer.glmulti <- function (formula, data, random = "", ...) {
lmer(paste(deparse(formula), random), data = data, REML=F, ...)
}
summary(glmulti(formula = yind~a*b*c*d,
data = tmpdata,
random = '+(1|x)',
level = 2,
method = 'h',
crit = 'aicc',
marginality = TRUE,
fitfunc = lmer.glmulti))
lme4
版本:1.1.5
glmulti
版本:1.0.7
《R 版本 3.0.2 (2013-09-25)》
解决方案
这有效:
lmer.glmulti <- function (formula, data, random, ...) {
lmer(paste(deparse(formula), random), data = data)
}
glmulti(y = yind~a*b*c*d,
data = tmpdata,
random = '+(1|x)',
level = 2,
method = 'h',
crit = 'aicc',
marginality = TRUE,
fitfunc = lmer.glmulti)
packageVersion('lme4') '1.1.5'</p>
packageVersion('glmulti') '1.0.7'</p>
版本:3.1.0
仅供参考:来自包维护者:
“fitfunc 必须是函数的名称,因此您的其他调用(包括 glmulti 调用中的函数定义)无法正常工作。”
“你将 glmulti 的第一个参数命名为‘公式’,它必须是未命名的或‘y’……对不起。但是 y 是一个公式(如果传递一个字符串,它只是因变量)。”