Add Alternative Variance Estimates to Models Estimates¶
Description¶
A simple object-orientation infrastructure to add alternative standard errors, e.g.
sandwich estimates or New-West standard errors to fitted regression-type models, such as
fitted by lm()
or glm()
.
Usage¶
withSE(object, vcov, ...)
withVCov(object, vcov, ...)
## S4 method for signature 'lm'
withVCov(object, vcov, ...)
## S4 method for signature 'withVCov'
summary(object, ...)
## S4 method for signature 'withVCov.lm'
summary(object, ...)
Arguments¶
object
-
a fitted model object
vcov
-
a function that returns a variance matrix estimate, a given matrix that is such an estimate, or a character string that identifies a function that returns a variance matrix estimate (e.g.
"HAC"
forvcovHAC
). ...
-
further arguments, passed to
vcov()
or, respectively, to the parent method ofsummary()
Value¶
withVCov
returns a slightly modified model object: It adds an attribute named “.VCov”
that contains the alternate covaraince matrix and modifies the class attribute. If e.g.
the original model object has class “lm” then the model object modified by withVCov
has the class attribute c("withVCov.lm", "withVCov", "lm")
.
Details¶
Using withVCov()
an alternative variance-covariance matrix is attributed to a fitted
model object. Such a matrix may be produced by any of the variance estimators provided by
the “sandwich” package or any package that extends it.
withVCov()
has no consequences on how a fitted model itself is printed or
represented, but it does have consequences what standard errors are reported, when the
function summary()
or the function mtable()
is applied.
withSE()
is a convenience front-end to withVCov()
. It can be called in the same
way as withVCov
, but also allows to specify the type of variance estimate by a
character string that identifies the function that gives the covariance matrix (e.g.
"OPG"
for vcovOPG
).
Examples¶
## Generate poisson regression relationship
x <- sin(1:100)
y <- rpois(100, exp(1 + x))
## compute usual covariance matrix of coefficient estimates
fm <- glm(y ~ x, family = poisson)
library(sandwich)
fmo <- withVCov(fm,vcovOPG)
vcov(fm)
(Intercept) x
(Intercept) 0.004830183 -0.004044435
x -0.004044435 0.008581153
vcov(fmo)
(Intercept) x
(Intercept) 0.005671343 -0.003860582
x -0.003860582 0.010624085
summary(fm)
Call:
glm(formula = y ~ x, family = poisson)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.7116 -0.9125 -0.1460 0.5391 1.8815
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.96253 0.06950 13.85 <2e-16 ***
x 1.06755 0.09263 11.52 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for poisson family taken to be 1)
Null deviance: 249.001 on 99 degrees of freedom
Residual deviance: 87.547 on 98 degrees of freedom
AIC: 350.6
Number of Fisher Scoring iterations: 5
summary(fmo)
Call:
glm(formula = y ~ x, family = poisson)
Deviance Residuals:
Min 1Q Median 3Q Max
-1.7116 -0.9125 -0.1460 0.5391 1.8815
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 0.96253 0.07531 12.78 <2e-16 ***
x 1.06755 0.10307 10.36 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
(Dispersion parameter for poisson family taken to be 1)
Null deviance: 249.001 on 99 degrees of freedom
Residual deviance: 87.547 on 98 degrees of freedom
AIC: 350.6
Number of Fisher Scoring iterations: 5
mtable(Default=fm,
OPG=withSE(fm,"OPG"),
summary.stats=c("Deviance","N")
)
Calls:
Default: glm(formula = y ~ x, family = poisson)
OPG: glm(formula = y ~ x, family = poisson)
=======================================
Default OPG
---------------------------------------
(Intercept) 0.963*** 0.963***
(0.069) (0.075)
x 1.068*** 1.068***
(0.093) (0.103)
---------------------------------------
Deviance 87.547 87.547
N 100 100
=======================================
Significance: *** = p < 0.001;
** = p < 0.01;
* = p < 0.05
vo <- vcovOPG(fm)
mtable(Default=fm,
OPG=withSE(fm,vo),
summary.stats=c("Deviance","N")
)
Calls:
Default: glm(formula = y ~ x, family = poisson)
OPG: glm(formula = y ~ x, family = poisson)
=======================================
Default OPG
---------------------------------------
(Intercept) 0.963*** 0.963***
(0.069) (0.075)
x 1.068*** 1.068***
(0.093) (0.103)
---------------------------------------
Deviance 87.547 87.547
N 100 100
=======================================
Significance: *** = p < 0.001;
** = p < 0.01;
* = p < 0.05