gpt4 book ai didi

r - lme4模型在功能上的总结(lmerTest)

转载 作者:行者123 更新时间:2023-12-02 08:45:02 38 4
gpt4 key购买 nike

如果有以下数据

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))

反而得到不同的数据,总结的结果是错误的。

这似乎不是最好的方法,而且我认为它很容易犯错误。普通的 lm 及其相应的 summary 函数不存在此问题。有没有办法让 lmerTest 摘要不易出错?

最佳答案

do.call 技巧有效(但它确实是一种解决方法)。

gglm = function(form, data){
lm = do.call(lmer, list(formula=form, data=data))
return(lm)
}
m2 = gglm(f, d)
s2 = summary(m2)

关于r - lme4模型在功能上的总结(lmerTest),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27528245/

38 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com