【问题标题】:How do I run a regression with different variables in R using a loop?如何使用循环在 R 中使用不同变量运行回归?
【发布时间】:2021-08-21 11:02:26
【问题描述】:

我想估计以下回归模型:

y <- rnorm(1:100)
x1 <- 1:100
x2 <- 1:100
x3 <- 1:100

my_data <- data.frame(cbind(y, x1, x2, x3))

m1 <- lm(y ~ x1, data = my_data)
m2 <- lm(y ~ x2, data = my_data)
m3 <- lm(y ~ x3, data = my_data)

我想像这样运行多个模型,在每个模型中使用相同的数据集和不同的自变量。如何使用循环来运行每个模型?

【问题讨论】:

    标签: r loops regression


    【解决方案1】:

    这可以使用apply() 函数轻松完成:

    data_to_analyse <- my_data[, -1] # leave out the y column for this analysis
    
    out <- apply(data_to_analyse, 2, function(current_col){
    
    lm.out <- lm(my_data$y ~ current_col)
    
    })
    

    这会获取 data.frame ("current_col") 的每一列,然后执行线性回归。该函数的输出是一个列表,其中包含每个回归的结果,每个条目都由变量名称命名。

    【讨论】:

    • 为了便于比较,您可以在将输出放入列表之前broom::tidy 输出,然后dplyr::bind_rows 以获取包含所有结果的数据帧。请务必在您的bind_rows 中包含.id = "name",以便能够区分哪个输出来自哪个列。
    猜你喜欢
    • 2021-08-24
    • 2012-10-29
    • 2020-12-09
    • 1970-01-01
    • 2021-02-18
    • 1970-01-01
    • 2022-11-29
    • 2018-03-11
    • 2015-12-30
    相关资源
    最近更新 更多