如何编写一个 For 循环函数来 运行 几个回归并存储结果?

How can I write a For loop function to run several regressions and store the results?

我想请求的帮助: 我正在尝试自动执行循环中的一系列任务。基本上它是 运行 一系列回归,存储结果并将其导出(写入)到 csv 文件中。

问题: 我曾多次尝试 运行 一个“For”循环。我不知道如何根据 current_date 列

为每个回归创建和命名新变量

数据说明: Link to dataset 它是一个表格格式的美国各州数据集(有点类似于 Tidy Data)。 每行或观察指的是特定日期的特定状态。 每列代表状态的一个属性 任务: 主要问题:自动化 运行 一系列回归的过程,按日期存储结果并将其导出(写入)到 csv 文件中。

任务顺序:

  1. 运行回归
    1. 使用扫帚整理回归结果(系数、标准误差和 p 值)
    2. 按特定日期存储结果
    3. 对另一个日期重复回归
    4. 使用扫帚整理回归结果(系数和模型)
    5. 按特定日期存储系数(系数、标准误差、p 值)的结果
    6. 按特定日期存储回归模型(R 方等)的结果

…… 最后,将所有结果导出为CSV文件

library(dplyr)
library(broom)
for(i in 1:length(current_date)){
    lmtest <- lm( outcome_var [[i]] ~ cumulative_var1_at_current_date + key_cat_var1, data = testdata)
    coeff_results<-tidy(lmtest)
    model_results<- glance(lmtest) 
    write.csv(coeff_results, “C:\Users\....combined_results.csv”)
    }

在这种情况下使用循环对我来说没有意义。此外,日期似乎不会影响回归的输出。你想要这样的东西吗:

library(dplyr)
library(broom)
current_date <- Sys.Date()
lmtest <- lm( outcome_var ~ cumulative_var1_at_current_date + key_cat_var1, data = testdata)
coeff_results <- tidy(lmtest)
model_results <- glance(lmtest) 
write.csv(coeff_results, paste0("coeff-results-", current_date, ".csv"))
write.csv(model_results, paste0("model-results", current_date, ".csv"))

如果不是,请举例说明什么是 current_date,以及它如何影响您的数据。

澄清当前日期的目的后:

所以基本上,您需要遍历 current_date 列中的唯一日期。然后,您必须保留与每一天相对应的数据。这是一个解决方案。

testdata$current_date <- as.Date(testdata$current_date, format = "%d/%m/%y")
all_dates <- unique(testdata$current_date)

for(i in 1:length(all_dates)) {
  lmtest <- filter(testdata, current_date %in% all_dates[i]) %>% 
    lm( outcome_var ~ cumulative_var1_at_current_date + key_cat_var1, data = .)
  coeff_results <- tidy(lmtest)
  model_results <- glance(lmtest)
  write.csv(coeff_results, paste0("coeff-results-", all_dates[i], ".csv"))
  write.csv(model_results, paste0("model-results", all_dates[i], ".csv"))
}

可能在 lm 中通过子集有更优雅的方式,但我个人更喜欢 dplyr::filter 因为它给了你更多的控制权。