簡體   English   中英

在R中使用coeftest加速線性回歸

[英]Speed-up linear regression using coeftest in R

我開發了一個R代碼,該代碼需要計算超過1000萬次相同的多元回歸模型(15個變量)。 我需要為每個模型提取僅針對一個自變量的t統計量。 我需要為每個模型應用異方差一致的協方差矩陣估計器,並且正在通過coeftestvcovHC使用懷特估計器進行此操作,但是我注意到此操作增加了仿真所需的計算時間。 因此,我想知道是否有一種方法可以加快代碼速度,因為我只需要第二個變量的t統計量即可。

以下是我在每次迭代中所做的一個玩具示例:

   model <- lm(y ~ a + b + c, data = data)
   model <- coeftest(model, vcov. = vcovHC(model, type = "HC"))
   t[i] <- summary(MUR)$coef[2, 3]

所涉及的變量總是相同的,但是我正在隨機排列它們的值。 換句話說,我置換模型矩陣X。

使用car包裝的hccm函數然后直接提取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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM