加快置信区间的复制

Speed up replications of confidence intervals

我多次尝试根据回归模型 运行 的系数加快置信区间的计算速度。我想知道是否有办法提高性能。这是接近我想要实现的代码。 运行 这不会花太多时间,但我有一个更大的数据集,已经 运行 将近一天了还没有得到结果。

#Sample some cases and run regression model
regfun <- function(x=mtcars) {
  take.smp <- sample(nrow(x),10,replace=TRUE)
  smp <- x[unlist(take.smp),]
  mod <- lm(smp[[1]]~ smp[[2]] + smp[[3]] + smp[[4]])
  coef(mod)
}

#Repeat the regression model to get more coefficients
repcoef <- function() t(replicate(2000, regfun()))

#Generate more replications based on the repeated coefficient function 
#to get reliable confidence intervals 
repci <- replicate(1000,t(apply(repcoef(), 2, quantile, probs=c(.025,.975), na.rm=TRUE)))

这样使用lm.fit代替lm

regfun2 <- function(x = mtcars) {
  take.smp <- sample(1:length(x), 10, replace=TRUE)
  smp <- x[unlist(take.smp), ] # NB: `unlist` is not necessary
  mod <- lm.fit(model.matrix(~ smp[[2]] + smp[[3]] + smp[[4]]), smp[[1]])
  mod$coefficients
}

这个更快:

library(microbenchmark)
microbenchmark(
  lm = regfun(),
  lm.fit = regfun2(),
  times = 100
)
Unit: microseconds
   expr      min        lq     mean    median       uq      max neval cld
     lm 1323.168 1412.1260 1750.011 1668.2765 1916.277 2946.757   100   b
 lm.fit  786.764  855.1195 1030.725  948.5295 1112.704 1914.135   100  a