Я пытаюсь оценить коэффициент регрессии через DiD, используя повторную выборку контрольной группы. Моя цель - построить 10000 оценок коэффициента вместе с верхним и нижним доверительными интервалами 95%.
Выборка из контрольной группы с использованием обычного for-l oop работает, но занимает много времени, поэтому я бы хотел сделать это параллельно. Однако выполнение кода, который я написал всего за 10 итераций, занимает гораздо больше времени, чем обычно, (почти в 10 раз больше).
Может кто-нибудь сказать мне, что не так с моим кодом?
library(foreach)
library(doParallel)
library(estimatr)
cl <- parallel::makeCluster(detectCores()-1, type="FORK")
doParallel::registerDoParallel(cl)
##create a dataframe with results called boot_out
boot_out <- data.frame("beta"=numeric(), "ci_low"=numeric(),"ci_high"=numeric())
{foreach(1:10) %dopar% {
# sample 43 observations from the control group
control <- sample(sum_data$index[sum_data$treat==0], 43)
reg_data <- sum_data[sum_data$index %in% control, ]
#bind treatment observations to control group
reg_data <- rbind(reg_data, sum_data[sum_data$treat==1,])
##do the regression
x <- lm_robust(month_giving ~ treat*post, data=reg_data, se_type = "stata")
beta <- x$coefficients[[4]]
ci_low <- x$conf.low[[4]]
ci_high <- x$conf.high[[4]]
y <- data.frame("beta"=beta,"ci_low"=ci_low,"ci_high"=ci_high)
boot_out <- bind_rows(boot_out, y)
}}
stopCluster(cl)