使用R

时间:2016-05-27 19:56:06

标签: r regression linear

我开发了一个R代码,需要计算相同多元回归模型(15个变量)的10000多倍。我需要为每个模型提取所获得的t统计量,仅用于一个自变量。我需要为每个模型申请一个Heteroskedasticity-Consistent Covariance Matrix Estimator,我正在使用White的估算器通过 coeftest vcovHC 来做,但是我注意到这个操作增加了很多所需的模拟计算时间。因此我想知道是否有办法加速代码,因为我只需要第二个变量的t统计量。

作为一个例子,这是我在每次迭代时所做的一个玩具示例。

   model <- lm(y ~ a + b + c, data=data)

   model <- coeftest(model ,vcov.=vcovHC(model ,type="HC"))

   t[i] <- summary(MUR)$coef[2,3]

1 个答案:

答案 0 :(得分:0)

使用hccm包中的car函数,然后直接提取 t 值,可以减少约30%的处理异方差校正的协方差矩阵。请参见下面的模拟:

library(lmtest)
library(sandwich)
library(microbenchmark)
library(ggplot2)
library(car)

microbenchmark(
    hccm =   {
    m <- lm(cty ~ displ + cyl, data = mpg)
    V <- hccm(m, "hc0")
    cfs <- m$coefficients
    ses <- sqrt(diag(V))
    cfs / ses
  },
  coeftest = {
    m <- lm(cty ~ displ + cyl, data = mpg) 
    coeftest(m, vcov. = vcovHC(m, type = "HC0"))
  }
)

输出:

Unit: milliseconds
     expr      min       lq     mean   median       uq      max neval cld
     hccm 1.695146 1.777919 1.939631 1.822293 1.891840 10.65045   100  a 
 coeftest 2.557013 2.650025 2.735701 2.684586 2.764373  3.37536   100   b