一、目的:本文介绍用 python 做怀特异方差一致稳健标准误估计的方法。
二、参考文献
可参考这位前辈的文章:【Python计量】异方差性的处理_回归模型存在异方差应该怎么处理-CSDN博客
三、数据
数据如下,来自潘省初、周凌瑶教授的《计量经济学(第7版)》第120页的实例中的数据。
Country | C | Y |
1 | 6561 | 3393.1 |
2 | 1301 | 965.7 |
3 | 14938 | 32624.6 |
4 | 2904 | 4334.5 |
5 | 446 | 525.4 |
6 | 3801 | 9563.1 |
7 | 13926 | 37056.3 |
8 | 1877 | 3541.3 |
9 | 13761 | 36183.5 |
10 | 861 | 1096.8 |
11 | 1568 | 3108.9 |
12 | 8025 | 16695 |
13 | 12813 | 41133.5 |
14 | 3811 | 13293.5 |
15 | 285 | 382.8 |
16 | 324 | 323.6 |
17 | 4762 | 6944.4 |
18 | 2485 | 3668.8 |
19 | 1431 | 2910.4 |
20 | 3610 | 2049.8 |
21 | 4096 | 2028.3 |
22 | 986 | 1417.8 |
23 | 9727 | 25143.1 |
24 | 1219 | 1332.9 |
25 | 11861 | 21192.1 |
26 | 11594 | 29188.1 |
27 | 528 | 732.2 |
28 | 622 | 970.1 |
29 | 19402 | 36597.9 |
30 | 439 | 514.1 |
31 | 727 | 2541.5 |
四、模型与主要代码
这里主要展示了关键代码部分,其它代码略去。
在 smf 中,gls 可以替换为 ols,但由于 ols 是 gls 的特例,或者说 gls 是 ols 的广义化,个人习惯上用 gls。
代码中的 cov_type='HC0',对应的就是怀特1980异方差稳健标准误方法。
import statsmodels.formula.api as smf
model=smf.gls("C~Y",data=df,sigma=None)
result=model.fit(cov_type='HC0')
print(result.summary())
得到的结果如下:
你可能会问,和潘、周两位教授的书上的结果不一样啊?
这里需要特别解释一下,书里用的是 Eviews 里的怀特异方差稳健标准误的结果,其实 Eviews 那里不是 "怀特1980异方差稳健标准误方法",而是 "迈克金农-怀特1985异方差稳健标准误方法".当我们将上述代码中的 HC0 改为 HC1,就是"迈克金农-怀特1985异方差稳健标准误方法"了,得到的结果如下: