繁体   English   中英

为 R 中的 LM 模型创建一个通过变量列表的循环

[英]Creating a loop through a list of variables for an LM model in R

我正在尝试从变量组合列表中创建多个线性回归模型(如果更有用,我也将它们单独作为数据框!)

变量列表如下所示:

Vars
x1+x2+x3
x1+x2+x4
x1+x2+x5
x1+x2+x6
x1+x2+x7

我正在使用的循环如下所示:

for (i in 1:length(var_list)){
  lm(independent_variable ~ var_list[i],data = training_data)
  i+1
}

但是,它无法识别将x1+x2+x3等作为模型输入的var_list[i]字符串。

有谁知道如何修理它?

谢谢你的帮助。

我们可以用paste创建公式

out <- vector('list', length(var_list))

for (i in seq_along(var_list)){
  out[[i]] <- lm(paste('independent_variable',  '~', var_list[i]),
               data = training_data)
 }

否则,可以通过reformulate

lm(reformulate(var_list[i], 'independent_variable'), data = training_data)

您甚至不必使用循环。 应用应该很好用。

training_data <- as.data.frame(matrix(sample(1:64), nrow = 8))
colnames(training_data) <- c("independent_variable", paste0("x", 1:7))

Vars <- as.list(c("x1+x2+x3",
                "x1+x2+x4",
                "x1+x2+x5",
                "x1+x2+x6",
                "x1+x2+x7"))

allModelsList <- lapply(paste("independent_variable ~", Vars), as.formula)
allModelsResults <- lapply(allModelsList, function(x) lm(x, data = training_data))  

如果您需要模型摘要,您可以添加:

allModelsSummaries = lapply(allModelsResults, summary) 

例如,您可以通过执行以下操作访问模型lm(independent_variable ~ x1+x2+x3)的系数 R²:

allModelsSummaries[[1]]$r.squared

我希望它有帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM