2010-09-28 9 views
11

Ist es möglich, den robusten vcov, der von vcovHC (aus dem Sandwich-Paket) erhalten wird, nach dem Einbau eines Modells zu verwenden?vcovHC und Konfidenzintervall

+2

Versuchen Sie, dieses auf stats.stackexchange.com zu fragen –

Antwort

13

Nein, Sie können die Funktion confint nicht direkt mit dem robusten vcov verwenden. Aber es ist ziemlich einfach, das per Hand zu machen.

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 

Andernfalls können Ihre die confint.default() Funktion an die eigenen Bedürfnisse anpassen:

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 
} 

Wie Brandon bereits vorgeschlagen, würden Sie mehr Chancen auf eine schnelle Antwort, wenn man diese Dinge auf Statistiken fragen. staplexchange.com

+0

Wie immer-- Funktioniert perfekt. Thx @Joris. Misha – Misha

+0

Außergewöhnliche Antwort –

+0

Schöne Antwort, warum hast du qnorm anstelle von qt gewählt? Das Objekt $ df.residual hat den benötigten df-Parameter. –