如果有以下数据:
d = data.frame(out=rnorm(10), explain=rnorm(10), age=rnorm(10), sex=sample(c("M", "F"), size=10, replace=T), group=rep(c(1:5), 2))
f = as.formula("out ~ explain + age + sex + (1|group)")
如果你想使用lme4拟合线性模型,可以这样做:
require(lme4)
require(lmerTest)
m = lmer(f, d)
s = summary(m)
可以,这很好。但是如果该模型在另一个函数中进行拟合,例如
gglm = function(form, data){
lm = lmer(form, data=data)
return(lm)
}
m2 = gglm(f, d)
s2 = summary(m2)
我遇到了一个错误。
summary from lme4 is returned
some computational error has occurred in lmerTest
显然,这是因为模型的匹配是使用一个名为data
的对象完成的,该对象在外部范围内不可见。因此,如果我执行data = d
,我将获得与之前相同的结果。但是,如果我执行
data = data.frame(out=rnorm(10), explain=rnorm(10), age=rnorm(10), sex=sample(c("M", "F"), size=10, replace=T), group=rep(c(1:5), 2))
使用 lmerTest
的汇总结果可能会出现错误,因为它在处理数据时与普通的 lm
和对应的 summary
函数不同。这种方法似乎不是最优解,容易出错。 是否有办法使 lmerTest
的总结更少出现错误?