让 statsmodels 在系数 t 检验中使用异方差校正的标准误差
Posted
技术标签:
【中文标题】让 statsmodels 在系数 t 检验中使用异方差校正的标准误差【英文标题】:Getting statsmodels to use heteroskedasticity corrected standard errors in coefficient t-tests 【发布时间】:2015-08-13 18:03:02 【问题描述】:我一直在研究 statsmodels.regression.linear_model.RegressionResults
的 API,并找到了如何检索不同风格的异方差校正标准错误(通过 HC0_se
等属性)但是,我不太清楚如何对系数进行 t 检验,以使用这些修正后的标准误差。有没有办法在 API 中做到这一点,还是我必须手动做到这一点?如果是后者,您能否就如何使用 statsmodels 结果提供任何指导?
【问题讨论】:
【参考方案1】:线性模型、离散模型和 GLM 的 fit
方法采用 cov_type
和 cov_kwds
参数来指定稳健的协方差矩阵。这将附加到结果实例并用于汇总表中报告的所有推理和统计数据。
不幸的是,文档并没有真正以适当的方式显示这一点。 根据选项实际选择三明治的辅助方法显示了选项和所需的参数: http://statsmodels.sourceforge.net/devel/generated/statsmodels.regression.linear_model.OLS.fit.html
例如,估计一个OLS模型并使用HC3
协方差矩阵可以用
model_ols = OLS(...)
result = model_ols.fit(cov_type='HC3')
result.bse
result.t_test(....)
假设mygroups
是一个包含组标签的数组,一些三明治需要额外的参数,例如集群稳健标准误差,可以通过以下方式选择:
results = OLS(...).fit(cov_type='cluster', cov_kwds='groups': mygroups
results.bse
...
一些稳健的协方差矩阵无需检查即可对数据做出额外假设。例如异方差性和自相关稳健标准误或 Newey-West,HAC
,标准误假设一个连续的时间序列结构。一些面板数据稳健标准误还假设个人时间序列的堆叠。
一个单独的选项 use_t
可用于指定默认情况下是否应将 t 和 F 或正态和卡方分布用于 Wald 检验和置信区间。
【讨论】:
很抱歉再次打扰您,但是在 t-测试中使用来自HC*
的稳健残差需要调用result.bse
并出现在result.resid
?还是我只需要model_ols.fit(cov_type='HC3')
?
不,您不需要在fit
之后调用任何其他内容。 bse
和 t_test
只是使用指定 cov_type
的两个示例。稳健的三明治协方差存储在cov_params_default
中,并在我们需要参数估计协方差的任何地方使用。验证它的一种简单方法是创建两个具有不同cov_types
的结果实例,并检查依赖于协方差矩阵的结果是否不同,例如在summary()
.以上是关于让 statsmodels 在系数 t 检验中使用异方差校正的标准误差的主要内容,如果未能解决你的问题,请参考以下文章
检查回归中的两个系数在 Python statsmodels 中是不是不同