个人技术分享

一、目的:本文介绍用 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异方差稳健标准误方法"了,得到的结果如下: