Повторная выборка для оценки коэффициента регрессии с использованием% dopar% в R, работающего очень медленно - PullRequest
0 голосов
/ 18 апреля 2020

Я пытаюсь оценить коэффициент регрессии через 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)
...