vcovHC和置信区间

12
在拟合模型后,是否可能使用通过vcovHC(来自sandwich包)获得的强健vcov,以进行置信区间(confint)计算?

2
请尝试在stats.stackexchange.com上提出这个问题。 - Brandon Bertelsen
1个回答

13

不可以直接使用confint函数和健壮的vcov一起使用。但是手动完成这个过程十分简单。

x <- sin(1:100)
y <- 1 + x + rnorm(100)
## model fit and HC3 covariance
fm <- lm(y ~ x)
Cov <- vcovHC(fm)

tt <-qt(c(0.025,0.975),summary(fm)$df[2])
se <- sqrt(diag(Cov))
ci <-coef(fm) + se %o% tt

否则,您可以根据自己的需要调整 confint.default() 函数:

confint.robust <- function (object, parm, level = 0.95, ...)
{
    cf <- coef(object)
    pnames <- names(cf)
    if (missing(parm))
        parm <- pnames
    else if (is.numeric(parm))
        parm <- pnames[parm]
    a <- (1 - level)/2
    a <- c(a, 1 - a)
    pct <- stats:::format.perc(a, 3)
    fac <- qnorm(a)
    ci <- array(NA, dim = c(length(parm), 2L), dimnames = list(parm,
        pct))
    ses <- sqrt(diag(sandwich::vcovHC(object)))[parm]
    ci[] <- cf[parm] + ses %o% fac
    ci
}

正如Brandon所建议的,如果你在stats.stackexchange.com上询问这些问题,你会更有可能得到快速回答。


一如既往——完美运作。谢谢@Joris。Misha - Misha
好的回答,为什么你选择了qnorm而不是qt?对象$df.residual具有所需的df参数。 - Max Gordon
我已经深入研究了正态分布与t分布的问题,似乎在使用HC矩阵时应该使用正态分布,请参考我在CrossValidated上的问题和答案 - Max Gordon

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接