第五节 利用python进行WLS加权最小二乘回归

FBI WARNING: 好久没有写过文档了,偶然登陆账号发现一年前随手写下的“教程”竟然收到蛮多小伙伴们的支持,这是没想到的,谢谢各位大佬们。虽然计量经济学这门课早就结束,没有使用的机会,但最近写毕业论文有了不少数据,今天就对最近遇到的WLS进行总结吧~

一、关于WLS

我们知道关于OLS的假设,其中有一条就是随机扰动项同方差且相互独立,如果不满足这个条件,就会引发异方差性的相关问题。那如果存在异方差性该怎样解决呢?加权最小二乘法WLS(weighted least square)估计就这样出来了! 普通最小二乘法(OLS)目标是让我们的残差平方和最小,给予每一个观测同样的权重,如果这个时候存在异方差性,就应该对我们的残差不同的权重。WLS简单来讲就是:给残差比较小的观测更大的权重,给残差更小的观测一个更大的权重,异方差性得以解决。

二、代码实现

本次实验还是利用python的statesmodels快速完成,整个过程非常简单,直接上手吧!

1.statsmodels关于WLS方法的解读

来自官方文档

import statsmodels.api as sm

sm.WLS(endog,exog,weights)

#endog:自变量;exog:因变量;weight:加权的权重,默认为1

2.代码演示

WLS既然要给残差比较小的更大的权重,给残差更小的一个更大的权重,那么首先进行OLS回归,得到了回归的残差,取其绝对值的倒数作为权重进行WLS回归即可。

2.1 首先进行OLS回归

import pandas as pd

import numpy as np

import statsmodels.api as sm

# 随机生成数据

X=pd.DataFrame(np.random.random((200,4)),columns=['x1','x2','x3','x4'])

Y=np.random.random(200)

#OLS回归

X = sm.add_constant(X) #增加常数项列

model = sm.OLS(Y,X)

result = model.fit()

result.summary()

展示一下OLS的结果,随机生成的数据,仅供参考:

2.2进行加权最小二乘回归

#获取刚才OLS回归得到的残差,用其绝对值的倒数作为权重

w = 1/abs(reusult.resid)

model_w = sm.WLS(Y,X,weights=w) #输入参数,w表示权重

result_w = model_w.fit()

result_w.summary()

WLS的结果如下: 可以看到回归输出的参数和OLS回归相比还是有变化的,这里数据是随机生成的,我就不过多阐述了~好啦好啦,就这样吧!

总结

WLS的步骤大致总结为2步

OLS回归得到回归的残差序列(resid),取其绝对值的倒数作为权重;调用sm.WLS,将上一步骤得到的权重作为sm.WLS(Y,X,weights)中的weights进行回归即可

文章来源

评论可见,请评论后查看内容,谢谢!!!评论后请刷新页面。