同时考虑多个线性模型

时间:2019-05-10 11:47:57

标签: r

我正在尝试同时运行许多线性回归模型。请帮助我为此编写代码。

我正在处理两个数据帧。在第一个数据帧中有100个因变量,在第二个数据帧中我有100个因变量。现在我想要简单的线性模型,例如

lm1 <- lm(data_frame_1[[1]] ~ data_frame_2[[1]])
lm2 <- lm(data_frame[[2]] ~ data_frame[[2]]) 

等等,这意味着我必须运行100个回归模型。我想同时做。请帮助我编写相应的代码以同时运行所有这些模型。

2 个答案:

答案 0 :(得分:0)

目前还不清楚您的意思是什么。但是也许在您的情况下进行循环比较好?

model.list = list()
for (i in 1:100){
  model.list[[i]] = lm(data.frame.1[[i]] ~ data.frame2[[i]])
}

答案 1 :(得分:0)

使用最后在注释中定义的dataframe_1dataframe_2,我们定义一个函数LM,该函数采用x名称和y名称,并使用列对x执行y的回归从那些数据帧。结果是lm对象的列表。请注意,每个输出列表组件的输出中的Call:行正确地标识了使用了哪些列。

LM <- function(xname, yname) {
  fo <- formula(paste(yname, "~", xname))
  do.call("lm", list(fo, quote(cbind(dataframe_1, dataframe_2))))
}
Map(LM, names(dataframe_1), names(dataframe_2))

给予:

$x1

Call:
lm(formula = y1 ~ x1, data = cbind(dataframe_1, dataframe_2))

Coefficients:
(Intercept)           x1  
     3.0001       0.5001

... etc ...

注意

使用内置的anscombe数据帧,将dataframe_1定义为x列,将data_frame_2定义为y列。

dataframe_1 <- anscombe[grep("x", names(anscombe))]
dataframe_2 <- anscombe[grep("y", names(anscombe))]