gpt4 book ai didi

线性回归上的 R 循环

转载 作者:行者123 更新时间:2023-12-03 08:08:17 24 4
gpt4 key购买 nike

我浏览了论坛,但找不到我要找的东西。


我想运行几次简单的线性回归。每次使用不同的列作为自变量时,因变量保持不变。运行它后,我希望能够从每个回归中提取 R 平方。我的思考过程是使用一个简单的 for 循环。但是,我无法让它工作。

假设我使用以下数据:

    num value person1 person2 person3
0 1 229 29 81 0
1 2 203 17 75 0
2 3 244 62 0 55

并且我想在 value 上运行回归使用三个变量:person1 , person2person3 。请注意,这是一个最小的工作示例,但我希望概括这个想法。

所以我最初的尝试是:

column <- names(df)[-2]
for(i in 3:5){
temp <- df[,c("value", column[i])]
lm.test <- lm(value ~ ., data = temp)
i + 1
}

但是,当我运行 summary(lm.test) 时我只得到最后一次回归的摘要,即 lm(value ~ person3)我认为这是有道理的,但是当尝试将其重写为:lm.test[i] <- lm(value ~ ., data = temp)时我收到以下错误:

debug at #3: temp <- df[,c("value", column[i])]

表明第 3 行有问题?

如果可能的话,我希望能够捕获每个回归的摘要,但是我真正追求的是每个回归的 R 平方

最佳答案

您可以在循环中创建公式,然后运行lm。例如,如果我想在 mtcars 上运行回归,以在每个 cyl、wt、hp 上回归 mpg,我可以使用以下命令:

vars <- c("cyl", "wt", "hp")
lm_results <- lapply(vars, function(col){
lm_formula <- as.formula(paste0("mpg ~ ", col))
lm(lm_formula, data = mtcars)
})

然后您可以再次迭代 lm_results 来获取 r.squared:

lapply(lm_results, function(x) summary(x)$r.squared)

关于线性回归上的 R 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71546726/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com