r语言 - 如何编写 For 循环函数来运行多个回归并存储结果?



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

问题:我已经尝试了很多次运行"For"循环。我不知道如何根据current_date列为每个回归创建和命名新变量

数据描述:链接到数据集 它是表格格式的美国各州的数据集(有点类似于整洁数据(。 每个行或观测值都是指特定日期的特定状态。 每列引用状态的一个属性任务:主要问题:自动运行一系列回归的过程,按日期存储结果并将其导出(写入(到csv文件中。

任务顺序:

  1. 运行回归
    1. 使用扫帚整理回归结果(系数、标准误差和 p-vale(
    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因为它给了你更多的控制。

最新更新