r - 在 R 中使用不断变化的结果变量运行多个回归
问题描述
我有一个如下所示的数据框(df):
condition dv1 dv2 dv3
1 2 4 3
2 5 7 4
3 7 1 2
为了同时运行多个回归,我使用了这样的代码:
dfdv <- df[,2:4]
output <- lm(as.matrix(dfdv) ~ condition, data = df)
summary(output)
这为我提供了 dv1、dv2 和 dv3 的所有 dv ~ 条件回归。这些是输出中给出的回归:
dv1 ~ condition
dv2 ~ condition
dv3 ~ condition
但是,我现在想控制回归中的不同条件。具体来说,我想找出一种有效运行以下回归的方法。
dv1 ~ condition + dv1
dv1 ~ condition + dv2
dv1 ~ condition + dv3
我使用与上述类似的原理尝试了以下操作,但没有成功。
dfdv <- df[,2:4]
output2 <- lm(dv1 ~ condition + as.matrix(dfdv), data = df)
summary(output2)
它给了我一个单一的回归,使用了一个回归中的所有 dv,而不是我想要的回归。这就是它给我的:
dv1 ~ condition + dv1 + dv2 + dv3
有谁知道我如何使用简单的代码执行这些回归分析?我的实际数据集中比我在这个例子中包含的更多。
解决方案
我们可以使用lapply
它。遍历列名“dv”,reformulate
通过指定响应和因变量创建公式,然后应用lm
v1 <- grep('^dv\\d+$", names(df), value = TRUE)
lapply(v1, function(dv) lm(reformulate(c(dv, "condition"),
dv), data = df))
或创建公式paste
lapply(v1, function(dv) lm(paste0(dv, " ~ ", "condition + ", dv), data = df))
推荐阅读
- php - 通过 AJAX 进行 SQL 插入和删除查询
- azure - Azure Functions + nodejs + vscode:启动配置以调试多个 azure function funcs?
- jquery - 如何对齐 td 标签内的 div 标签,使它们排成一行
- python - 使用循环将dict插入数据框
- pytorch - CoreML:为 ONNX RandomNormal 创建自定义层
- python-3.x - 我试图在 if 语句发生后让图像保持更长时间
- java - 比较两个字符串,都用正则表达式
- android - 一旦在画布上绘制矩形,你能改变它的颜色吗?
- javascript - 使用ajax和python发送文件后从外部url获取数据
- c# - 在多线程环境中使用 Newtonsoft.Json.JsonConverter