想一次运行四个线性模型
我有一个包含四个因变量和4个独立变量的数据。我创建了因变量列表,还创建了自变量列表。我想一次像
一样运行4个线性模型lm(y1~x1)
lm(y2~x2)
lm(y3~x3)
lm(y4~x4)
虽然我可以一一完成,但我想一次运行。请帮助
答案 0 :(得分:0)
怎么样,
首先,将一些数据输入帧中。
x.values<-data.frame(
x_1 = rnorm(10),
x_2 = rnorm(10),
x_3 = rnorm(10)
)
y.values<-data.frame(y_1 = rnorm(10),
y_2 = rnorm(10),
y_3 = rnorm(10)
)
然后,使公式具有正则表达式
lmformulas <- list(as.formula(paste(grep("y_[1]", names(y.values), value = TRUE), paste(grep("x_[1]", names(x.values), value = TRUE), collapse = " + "), sep = " ~ ")),
as.formula(paste(grep("y_[2]", names(y.values), value = TRUE), paste(grep("x_[2]", names(x.values), value = TRUE), collapse = " + "), sep = " ~ ")),
as.formula(paste(grep("y_[3]", names(y.values), value = TRUE), paste(grep("x_[3]", names(x.values), value = TRUE), collapse = " + "), sep = " ~ "))
)
[[1]] y_1〜x_1
[[2]] y_2〜x_2
[[3]] y_3〜x_3`
最后,您可以立即获得想要的结果
lm_result <- lapply(lmformulas, function(x) {
lm(x, data = cbind(y.values,x.values))
}
)
[[1]]
致电: lm(公式= x,数据= cbind(y.values,x.values))
系数:
(拦截)x_1
-0.6081 0.1041
[[2]]
致电: lm(公式= x,数据= cbind(y.values,x.values))
系数:
(拦截)x_2
-0.452157 -0.001287
[[3]]
致电: lm(公式= x,数据= cbind(y.values,x.values))
系数:
(拦截)x_3
-0.1945 -0.1830