I've been digging into the API of statsmodels.regression.linear_model.RegressionResults
and have found how to retrieve different flavors of heteroskedasticity corrected standard errors (via properties like HC0_se
, etc.) However, I can't quite figure out how to get the t-tests on the coefficients to use these corrected standard errors. Is there a way to do this in the API, or do I have to do it manually? If the latter, can you suggest any guidance on how to do this with statsmodels results?
The fit
method of the linear models, discrete models and GLM, take a cov_type
and a cov_kwds
argument for specifying robust covariance matrices. This will be attached to the results instance and used for all inference and statistics reported in the summary table.
Unfortunately, the documentation doesn't really show this yet in an appropriate way. The auxiliary method that actually selects the sandwiches based on the options shows the options and required arguments: http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLS.fit.html
For example, estimating an OLS model and using HC3
covariance matrices can be done with
model_ols = OLS(...)
result = model_ols.fit(cov_type='HC3')
result.bse
result.t_test(....)
Some sandwiches require additional arguments, for example cluster robust standard errors, can be selected in the following way, assuming mygroups
is an array that contains the groups labels:
results = OLS(...).fit(cov_type='cluster', cov_kwds={'groups': mygroups}
results.bse
...
Some robust covariance matrices make additional assumptions about the data without checking. For example heteroscedasticity and autocorrelation robust standard errors or Newey-West, HAC
, standard errors assume a sequential time series structure. Some panel data robust standard errors also assume stacking of the time series by individuals.
A separate option use_t
is available to specify whether the t and F or the normal and chisquare distributions should be used by default for Wald tests and confidence intervals.
fit
. bse
and t_test
were just two examples where the specified cov_type
is used. The robust sandwich covariance is stored in cov_params_default
and used everywhere where we need the covariance of the parameter estimates. A simple way to verify it is to create two results instances with different cov_types
and check that the results that depend on the covariance matrix are different, e.g. in summary()
. –
Groth © 2022 - 2024 — McMap. All rights reserved.
result.bse
needed for the robust residuals fromHC*
to be used in the t-tests, and to appear inresult.resid
? Or ismodel_ols.fit(cov_type='HC3')
all I need? – Smedley