r - 使用 lapply 从多个 lmer 模型中提取系数
问题描述
我已经有一段时间了,但无法有效地做到这一点。我想跨多个变量运行许多 lmer 模型,并从每个模型中提取系数以放入数据框中。
到目前为止,我有以下
ivlist<-c("hp", "drat", "wt", "qsec", "vs", "am", "gear", "carb")
mtcars<-mtcars
mtcars$id<- sample(c(1:16), 32, replace=TRUE, prob = c(1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16, 1/16))
mod <- lapply(ivlist, function(x) {
lmer(substitute(mpg ~ cyl + disp + i*disp + (1|id), list(i = as.name(x))), data = mtcars, na.action=na.exclude)
})
res <- lapply(seq_along(mod[c(1:8)]), function(j) {
model = names(mod[[j]])
Vcov <- vcov(mod[[j]], useScale = FALSE)
betas <- fixef(mod[[j]])
se <- sqrt(diag(Vcov))
zval <- betas / se
pval <- 2 * pnorm(abs(zval), lower.tail = FALSE)})
do.call(cbind(names,betas, se, zval, pval), res)
我现在被困住了。它告诉我没有 se 对象。你们能帮忙吗。如果您能建议我如何仅针对交互效果执行此操作,那就更好了。
先感谢您
解决方案
在R
中,我们得到最后一个输出为return
。在这里,我们可能需要返回 alist
或作为命名向量中的所有对象
res <- lapply(seq_along(mod[c(1:8)]), function(j) {
model <- names(mod[[j]])
Vcov <- vcov(mod[[j]], useScale = FALSE)
betas <- fixef(mod[[j]])
se <- sqrt(diag(Vcov))
zval <- betas / se
pval <- 2 * pnorm(abs(zval), lower.tail = FALSE)
list(betas = betas, se = se, zval = zval, pval = pval)
})
do.call(rbind, lapply(res, as.data.frame))
# betas se zval pval
#(Intercept) 39.5138536412 2.988611e+00 13.2214778 6.595523e-40
#cyl 0.3492185844 9.057326e-01 0.3855648 6.998190e-01
#disp -0.0805987883 2.376294e-02 -3.3917859 6.943868e-04
#hp -0.1074943073 3.537576e-02 -3.0386435 2.376459e-03
#disp:hp 0.0003166872 1.121111e-04 2.8247615 4.731583e-03
#(Intercept)1 10.6595603973 1.187663e+01 0.8975240 3.694394e-01
#cyl1 -0.8828858263 7.606152e-01 -1.1607522 2.457427e-01
# ...
推荐阅读
- firebase - Firestore - 使用 FirebaseAuth 的 uid 作为进一步关系的文档索引的好习惯
- kotlin - net.corda.nodeapi.internal.persistence.CouldNotCreateDataSourceException:无法创建数据源
- javascript - React Native(Android):无法通过 JNI 在作业中返回字符串
- c++ - 使用矢量化数据进行高效的并行张量收缩
- python-3.x - Sympy TypeError - 无法将浮点对象解释为整数
- vue.js - 如何使用项目 id 而不是索引来设置 Vue.set
- google-cloud-platform - 应用需要访问客户谷歌云项目
- sql-server - 使用 unix bash 脚本连接 SQL Server 的方法
- c++ - 模板参数推导不一致
- r - 无效类“corMatrix”对象:“sd”插槽具有非有限条目:lmer() R