我正在尝试同时运行许多线性回归模型。请帮助我为此编写代码。
我正在处理两个数据帧。在第一个数据帧中有100个因变量,在第二个数据帧中我有100个因变量。现在我想要简单的线性模型,例如
lm1 <- lm(data_frame_1[[1]] ~ data_frame_2[[1]])
lm2 <- lm(data_frame[[2]] ~ data_frame[[2]])
等等,这意味着我必须运行100个回归模型。我想同时做。请帮助我编写相应的代码以同时运行所有这些模型。
答案 0 :(得分:0)
目前还不清楚您的意思是什么。但是也许在您的情况下进行循环比较好?
model.list = list()
for (i in 1:100){
model.list[[i]] = lm(data.frame.1[[i]] ~ data.frame2[[i]])
}
答案 1 :(得分:0)
使用最后在注释中定义的dataframe_1
和dataframe_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))]