关于一次运行几个简单的回归

时间:2019-05-08 05:07:31

标签: r

想一次运行四个线性模型

我有一个包含四个因变量和4个独立变量的数据。我创建了因变量列表,还创建了自变量列表。我想一次像

一样运行4个线性模型
lm(y1~x1)
lm(y2~x2)
lm(y3~x3)
lm(y4~x4)

虽然我可以一一完成,但我想一次运行。请帮助

1 个答案:

答案 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