文章目录

  • 一、使用“OLS+稳健标准误”
  • 二、加权最小二乘法(WLS)
  • 三、可行加权最小二乘法(FWLS)

通过上篇内容,我们通过画残差图、BP检验、怀特检验、GQ检验等方法,发现模型存在异方差性。本篇文章主要介绍如何对异方差进行处理。

一、使用“OLS+稳健标准误”

如果存在异方差,一种处理方法是,仍然进行OLS回归,但使用在异方差情况下也成立的稳健标准误。

标准误在统计推断中发挥着至关重要的作用,直接影响着系数的显著性和置信区间,并最终影响到假设检验的结论。因此,正确地估计标准误在实证分析的过程中显得尤为重要。

White标准误(异方差稳健的标准误):
HC0:White(1980)提出的异方差稳健的标准误
HC1:Mackinon and White(1985)提出的异方差稳健的标准误
HC2:MacKinnon and White(1985)提出的异方差稳健的标准误
HC3:MacKinnon and White(1985)提出的异方差稳健的标准误
Newey-West标准误(异方差自相关稳健的标准误):
HAC

我们以伍德里奇《计量经济学导论:现代方法》的”第8章 异方差性“的案例8.4为例,使用HPRICE1中的数据,分别采用OLS模型,OLS模型+HC0标准误、OLS模型+HAC标准误对方程进行估计,代码如下:

import wooldridge as woo
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smfhprice1 = woo.dataWoo('hprice1')
#建立OLS回归模型:
reg = smf.ols(formula='price ~ lotsize + sqrft + bdrms', data=hprice1)
results = reg.fit()
print(results.summary().tables[1])#使用white标准误(异方差稳健的标准误)
reg_HC0 = smf.ols(formula='price ~ lotsize + sqrft + bdrms', data=hprice1)
results_HC0 =reg_HC0.fit(cov_type='HC0', use_t=True)
print(results_HC0.summary().tables[1])#使用Newey-West标准误(异方差自相关稳健的标准误)
reg_HAC = smf.ols(formula='price ~ lotsize + sqrft + bdrms', data=hprice1)
results_HAC =reg_HAC.fit(cov_type='HAC', use_t=True,cov_kwds={'maxlags':1}) #maxlags表示滞后阶数
print(results_HAC.summary().tables[1])

结果如下:

==============================================================================coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept    -21.7703     29.475     -0.739      0.462     -80.385      36.844
lotsize        0.0021      0.001      3.220      0.002       0.001       0.003
sqrft          0.1228      0.013      9.275      0.000       0.096       0.149
bdrms         13.8525      9.010      1.537      0.128      -4.065      31.770
==============================================================================
==============================================================================coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept    -21.7703     41.033     -0.531      0.597    -103.368      59.828
lotsize        0.0021      0.007      0.289      0.773      -0.012       0.016
sqrft          0.1228      0.041      3.014      0.003       0.042       0.204
bdrms         13.8525     11.562      1.198      0.234      -9.139      36.844
==============================================================================
==============================================================================coef    std err          t      P>|t|      [0.025      0.975]
------------------------------------------------------------------------------
Intercept    -21.7703     36.606     -0.595      0.554     -94.565      51.024
lotsize        0.0021      0.001      1.660      0.101      -0.000       0.005
sqrft          0.1228      0.018      6.999      0.000       0.088       0.158
bdrms         13.8525      8.814      1.572      0.120      -3.675      31.380
==============================================================================

可以发现“OLS+稳健标准误”的方法并不会改变模型的系数,只是使用稳健标准误。通常,OLS标准误放在圆括号()中,而异方差稳健标准误放在方括号[]中。因此,该模型方程可以写成如下形式:
price^=−21.77+0.00207lotsize+0.123sqrft+13.85bdrms(29.475)(0.001)(0.013)(9.010)[41.033][0.007][0.041][11.562]\widehat{price}=-21.77+0.00207lotsize +0.123sqrft+13.85bdrms\\ \quad (29.475)\qquad (0.001) \qquad (0.013)\qquad(9.010)\\ \quad [41.033]\qquad [0.007] \qquad [0.041]\qquad[11.562] price​=−21.77+0.00207lotsize+0.123sqrft+13.85bdrms(29.475)(0.001)(0.013)(9.010)[41.033][0.007][0.041][11.562]

二、加权最小二乘法(WLS)

由于方差较小的观测值包含的信息量较大,故对于异方差的另一处理办法是,给予方差较小的观测值较大的权重,继而进行加权最小二乘估计。WLS的基本思想:通过变量转换,使得变化后的模型满足扰动项同方差的假定,然后进行OLS估计。

考虑线性模型:
yi=β0+β1xi1+...+βkxik+uiy_i= \beta_0+\beta_1x_{i1}+...+\beta_kx_{ik}+u_i yi​=β0​+β1​xi1​+...+βk​xik​+ui​

Xi=(1,xi1,...,xik)X_i=(1,x_{i1},...,x_{ik}) Xi​=(1,xi1​,...,xik​)
条件同方差的原假设为:
H0:Var(ui∣Xi)=σ2H_0:Var(u_i|X_i)=\sigma^2 H0​:Var(ui​∣Xi​)=σ2
如果原假设不成立,假定:
Var(ui∣Xi)=E(ui2∣Xi)=σ2h(Xi)=σ2hiVar(u_i|X_i)=E(u_i^2|X_i)=\sigma^2h(X_i)=\sigma^2h_i Var(ui​∣Xi​)=E(ui2​∣Xi​)=σ2h(Xi​)=σ2hi​
其中,h(X)h(X)h(X)是解释变量的某种函数,并决定着异方差性。由于方差必须为正,所以h(X)h(X)h(X)恒>0。

在原线性模型中同时乘以权重1/hi1/\sqrt{h_i}1/hi​​,线性模型变为:
yi/hi=β0/hi+β1xi1/hi+...+βkxik/hi+ui/hiy_i/\sqrt{h_i}= \beta_0/\sqrt{h_i}+\beta_1x_{i1}/\sqrt{h_i}+...+\beta_kx_{ik}/\sqrt{h_i}+u_i/\sqrt{h_i} yi​/hi​​=β0​/hi​​+β1​xi1​/hi​​+...+βk​xik​/hi​​+ui​/hi​​

yi∗=β0+β1xi1∗+...+βkxik∗+ui∗y_i^*= \beta_0+\beta_1x_{i1}^*+...+\beta_kx_{ik}^*+u_i^* yi∗​=β0​+β1​xi1∗​+...+βk​xik∗​+ui∗​
其中标星号的变量都表示将原对应变量除以hi\sqrt{h_i}hi​​
Var(ui/hi)=1/hiVar(ui)=σ2hi/hi=σ2Var(u_i/\sqrt{h_i})=1/h_iVar(u_i)=\sigma^2h_i/h_i=\sigma^2 Var(ui​/hi​​)=1/hi​Var(ui​)=σ2hi​/hi​=σ2
可见,新扰动项ui/hiu_i/\sqrt{h_i}ui​/hi​​不再存在异方差

三、可行加权最小二乘法(FWLS)

WLS的难点在于找到函数h(Xi)h(X_i)h(Xi​)。不过,我们可以模型化函数hhh,得到每个hih_ihi​的估计值,记为h^i\hat{h}_ih^i​。用h^i\hat{h}_ih^i​取代hih_ihi​进行加权最小二乘运算,就称为FWLS.

在做BP检验时,进行如下辅助回归:
e2=δ0+δ1x1+δ2x2...+δkxk+error{e}^2=\delta_0+\delta_1x_1+\delta_2x_2...+\delta_kx_k+error e2=δ0​+δ1​x1​+δ2​x2​...+δk​xk​+error
其中,e2e^2e2为原方程的残差平方和。通过此辅助回归的拟合值,即可获得σ2\sigma^2σ2的估计值:
σ^2=δ^0+δ^1x1+δ^2x2...+δ^kxk\hat{\sigma}^2=\hat{\delta}_0+\hat{\delta}_1x_1+\hat{\delta}_2x_2...+\hat{\delta}_kx_k σ^2=δ^0​+δ^1​x1​+δ^2​x2​...+δ^k​xk​
然而,上式可能出现σ^2<0\hat{\sigma}^2<0σ^2<0的情形,而方差不能为负数。为保证σ^2\hat{\sigma}^2σ^2始终为正,一般假设条件方差函数为对数形式:
lne2=δ0+δ1x1+δ2x2...+δkxk+errorln{e}^2=\delta_0+\delta_1x_1+\delta_2x_2...+\delta_kx_k+error lne2=δ0​+δ1​x1​+δ2​x2​...+δk​xk​+error
对此方程进行OLS回归,可得lne2ln{e}^2lne2的预测值,记为lnσ^2ln\hat{\sigma}^2lnσ^2;进而得到:
σ^2=exp(δ^0+δ^1x1+δ^2x2...+δ^kxk)\hat{\sigma}^2=exp(\hat{\delta}_0+\hat{\delta}_1x_1+\hat{\delta}_2x_2...+\hat{\delta}_kx_k) σ^2=exp(δ^0​+δ^1​x1​+δ^2​x2​...+δ^k​xk​)
然后以1/σ^21/\hat{\sigma}^21/σ^2为权重对原方程进行WLS估计。

处理异方差的FWLS程序:

1、将yyy对x1x_1x1​,x2x_2x2​,…,xkx_kxk​做回归并得到残差eee

2、将OLS残差平方后取自然对数得到og(e2)og(e^2)og(e2)

3、log(e2)log(e^2)log(e2)对x1x_1x1​,x2x_2x2​,…,xkx_kxk​做回归并得到拟合值lnσ^2ln\hat{\sigma}^2lnσ^2

4、求出拟合值的指数σ^2\hat{\sigma}^2σ^2

5、以1/σ^21/\hat{\sigma}^21/σ^2为权数,用WLS估计方程

我们以伍德里奇《计量经济学导论:现代方法》的”第8章 异方差性“的案例8.7为例,使用SMOKE中的数据分别进行OLS估计和FWLS估计。

import wooldridge as woo
import numpy as np
import pandas as pd
import statsmodels.api as sm
import statsmodels.formula.api as smfsmoke = woo.dataWoo('smoke')#OLS:
reg_ols = smf.ols(formula='cigs ~ np.log(income) + np.log(cigpric) +''educ + age + I(age**2) + restaurn',data=smoke)
results_ols = reg_ols.fit()
print(results_ols.summary())#log(残差平方)对自变量做回归
smoke['loge2'] = np.log(results_ols.resid ** 2)
reg_loge2 = smf.ols(formula='loge2 ~ np.log(income) + np.log(cigpric) +''educ + age + I(age**2) + restaurn', data=smoke)
results_loge2 = reg_loge2.fit()# FWLS
wls_weight = list(1 / np.exp(results_loge2.fittedvalues))
reg_wls = smf.wls(formula='cigs ~ np.log(income) + np.log(cigpric) +''educ + age + I(age**2) + restaurn',weights=wls_weight, data=smoke)
results_wls = reg_wls.fit()
print(results_wls.summary())

结果为:

                            OLS Regression Results
==============================================================================
Dep. Variable:                   cigs   R-squared:                       0.053
Model:                            OLS   Adj. R-squared:                  0.046
Method:                 Least Squares   F-statistic:                     7.423
Date:                Wed, 04 May 2022   Prob (F-statistic):           9.50e-08
Time:                        20:53:14   Log-Likelihood:                -3236.2
No. Observations:                 807   AIC:                             6486.
Df Residuals:                     800   BIC:                             6519.
Df Model:                           6
Covariance Type:            nonrobust
===================================================================================coef    std err          t      P>|t|      [0.025      0.975]
-----------------------------------------------------------------------------------
Intercept          -3.6398     24.079     -0.151      0.880     -50.905      43.625
np.log(income)      0.8803      0.728      1.210      0.227      -0.548       2.309
np.log(cigpric)    -0.7509      5.773     -0.130      0.897     -12.084      10.582
educ               -0.5015      0.167     -3.002      0.003      -0.829      -0.174
age                 0.7707      0.160      4.813      0.000       0.456       1.085
I(age ** 2)        -0.0090      0.002     -5.176      0.000      -0.012      -0.006
restaurn           -2.8251      1.112     -2.541      0.011      -5.007      -0.643
==============================================================================
Omnibus:                      225.317   Durbin-Watson:                   2.013
Prob(Omnibus):                  0.000   Jarque-Bera (JB):              494.255
Skew:                           1.536   Prob(JB):                    4.72e-108
Kurtosis:                       5.294   Cond. No.                     1.33e+05
==============================================================================Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 1.33e+05. This might indicate that there are
strong multicollinearity or other numerical problems.WLS Regression Results
==============================================================================
Dep. Variable:                   cigs   R-squared:                       0.113
Model:                            WLS   Adj. R-squared:                  0.107
Method:                 Least Squares   F-statistic:                     17.06
Date:                Wed, 04 May 2022   Prob (F-statistic):           1.32e-18
Time:                        20:53:14   Log-Likelihood:                -3207.8
No. Observations:                 807   AIC:                             6430.
Df Residuals:                     800   BIC:                             6462.
Df Model:                           6
Covariance Type:            nonrobust
===================================================================================coef    std err          t      P>|t|      [0.025      0.975]
-----------------------------------------------------------------------------------
Intercept           5.6355     17.803      0.317      0.752     -29.311      40.582
np.log(income)      1.2952      0.437      2.964      0.003       0.437       2.153
np.log(cigpric)    -2.9403      4.460     -0.659      0.510     -11.695       5.815
educ               -0.4634      0.120     -3.857      0.000      -0.699      -0.228
age                 0.4819      0.097      4.978      0.000       0.292       0.672
I(age ** 2)        -0.0056      0.001     -5.990      0.000      -0.007      -0.004
restaurn           -3.4611      0.796     -4.351      0.000      -5.023      -1.900
==============================================================================
Omnibus:                      325.055   Durbin-Watson:                   2.050
Prob(Omnibus):                  0.000   Jarque-Bera (JB):             1258.137
Skew:                           1.908   Prob(JB):                    6.30e-274
Kurtosis:                       7.780   Cond. No.                     2.30e+05
==============================================================================Notes:
[1] Standard Errors assume that the covariance matrix of the errors is correctly specified.
[2] The condition number is large, 2.3e+05. This might indicate that there are
strong multicollinearity or other numerical problems.

用ols估计出来的方程:
cigs^=−3.64+0.880log(income)−0.751log(cigpric)−0.501educ+0.771lage−0.0090age2−2.83restaurn\widehat{cigs}=-3.64+0.880log(income)-0.751log(cigpric)-0.501educ\\+0.771lage-0.0090age^2-2.83restaurn cigs​=−3.64+0.880log(income)−0.751log(cigpric)−0.501educ+0.771lage−0.0090age2−2.83restaurn
用FWLS估计出来的方程:
cigs^=5.64+1.30log(income)−2.94log(cigpric)−0.463educ+0.482lage−0.0056age2−3.46restaurn\widehat{cigs}=5.64+1.30log(income)-2.94log(cigpric)-0.463educ\\+0.482lage-0.0056age^2-3.46restaurn cigs​=5.64+1.30log(income)−2.94log(cigpric)−0.463educ+0.482lage−0.0056age2−3.46restaurn
参考资料:Python处理标准误https://www.vincentgregoire.com/standard-errors-in-python/#With-statsmodels

【Python计量】异方差性的处理相关推荐

  1. python 计量经济 35岁 工作_Python在计量经济与统计学中的应用

    Python for Econometrics and Statistics (Python在计量经济与统计学中的应用) [点击链接进入主页].这套笔记将重点介绍Python在计量经济学与统计分析中的 ...

  2. 【Python计量】联立方程模型

    文章目录 一.联系方程模型 二.联立方程模型的Python实现 (一)获取数据 (二)两阶段最小二乘法估计联立方程 1.采用statsmodels进行2SLS回归 2.采用linearmodels进行 ...

  3. python 计量_距离度量以及python实现(二)

    7.夹角余弦(Cosine) 也可以叫余弦相似度. 几何中夹角余弦可用来衡量两个向量方向的差异,机器学习中借用这一概念来衡量样本向量之间的差异. (1)在二维空间中向量A(x1,y1)与向量B(x2, ...

  4. 【Python计量】Logit模型

    文章目录 一.离散选择模型 二.Logit模型 三.Logit模型的python实现--采用statsmodels (一)案例一 (二)案例二 此文章首发于微信公众号Python for Financ ...

  5. 【Python计量】多重共线性的检验和解决

    文章目录 一.多重共线性的产生原因 二.多重共线性的检验 1.简单相关系数法 2.方差膨胀因子法(variance inflation factor,VIF) 三.多重共线性的解决 我们以伍德里奇&l ...

  6. python 计量做hp滤波_[方法]季节调整与hp滤波方法

    进行时间序列的数据分析时,季节因素调整与hp滤波是进行数据处理与准备工作的常见必要环节.本文简要梳理季节调整与hp滤波的应用场景,以及在Python中的实现方法. 1. 季节调整方法 季节调整的目的是 ...

  7. python 计量做hp滤波_R语言提取时间序列的周期性成分应用EMD,小波滤波器,Baxter过滤器等...

    原文链接:http://tecdat.cn/?p=5399 介绍 对商业周期的分析需要提取时间序列的周期性成分,该时间序列通常也受到诸如潜在趋势或噪声等其他因素的影响.本文介绍了一些在最近的文献中用于 ...

  8. 【python计量】statsmodels进行OLS回归——以伍德里奇数据为例

    伍德里奇的<计量经济学导论>,是目前国内外最经典的计量经济学教材,非常适合新手入门学习.本文将围绕伍德里奇<计量经济学导论>的案例,探讨如何用python实现. 一.获取伍德里 ...

  9. 【Python计量】两期面板数据分析

    本文讨论两个时期的面板数据的分析方法. [例1]伍德里奇<计量经济学导论:现代方法>的"第13章 跨时横截面的混合:简单面板数据处理方法"的例13.5,利用SLP75_ ...

最新文章

  1. python计算每月工资-[Python] 2018新税法下工资计算
  2. 【OFDM频域同步】基于OFDM数字电视地面广播系统中频域同步技术matlab仿真
  3. 白话Elasticsearch23-深度探秘搜索技术之通过ngram分词机制实现index-time搜索推荐
  4. java生成动态验证码_动态生成验证码案例
  5. 7价 半导体掺杂_天津大学封伟团队:新型半导体二维原子晶体锗硅烷材料的带隙调控...
  6. parallels网络初始化失败_33 个神经网络「炼丹」技巧
  7. t检验的p值对照表_统计学|各类统计检验方法大汇总
  8. 字节跳动宣布取消大小周;淘宝、支付宝等阿里系App取消开屏广告;Python 3.10 beta 4 发布|极客头条...
  9. 明天开始放假了[2.5-2.13],春节期间计划
  10. 反编译 - ILSpy的使用方法(看Unity源代码的方法)
  11. 机器学习实战笔记1——机器学习导论
  12. 日志易陈军:迭代加速,日志分析助力IT智能化
  13. java.lang.IllegalStateException: Only fullscreen activities can request orientation
  14. vs2019使用方法
  15. 为什么要学计算机演讲稿,我们为什么要学习科学演讲稿
  16. mariadb master and salve configure
  17. vivo电池损耗指令代码_vivo手机电池换新活动开启,69起即可换新电池
  18. python数学公式代码_PythonStudy_‘数学公式计算器’代码
  19. 推荐系统实战(5)——基于内容的推荐算法(CB)
  20. Springboot2.0实现在线图片处理(自动去背景、换背景色等功能)

热门文章

  1. ue4蓝图ui的初步创建(游戏暂停)
  2. gstreamer 常用指令
  3. Educoder头歌数据结构链表及其应用
  4. linux——存储结构与磁盘划分。
  5. XC7K160T-1FBG484I、XC7A100T-2CSG324I FPGA可编程门阵列 PDF规格书
  6. ie浏览器主页被毒霸锁定,解决
  7. SpringBoot Dao层常用注解
  8. 25G SFP28 CWDM光模块与其它XWDM方案的对比
  9. linux-2.6.38.2移植到mini2440开发板上
  10. 重装系统后控制面板里面没有休眠选项怎么办