python一元线性回归分析代码(python线性回归实例)

前 言

在开始本文内容之前,请大家自行安装Statsmodels库,方法是在cmd命令行中输入:pip install Statsmodels

Statsmodels是Python的统计建模和计量经济学工具包,包括一些描述统计、统计模型估计和推断。

01

问题与数据

问题

在建模之前,首先我们要明白要解决什么问题?我们要寻找什么变量?我们的数据是截面数据还是时间序列等…

1、问题

探索利率和股票价格负相关关系

2、变量

选取上海银行同业拆借利率作为自变量,上证指数作为因变量

3、数据

选取20160101至20190101的Shibor和上证指数的时间序列数据建模

数据

有一种逻辑:利率下降——存款减少贷款增加——市场资金充裕——流入股市——股价推高

我们选取市场化程度较高的Shibor代表利率、上证指数收盘价代表股价看看能否验证这个逻辑。

python一元线性回归分析代码(python线性回归实例)

我们通过tushare数据接口获取相关数据并进行了简单处理,因为是时间序列,我们对原始数据进行一阶差分,获取其对数收益率序列

02

一元线性回归

建模前准备

因为是时间序列数据,在做一元线性回归建模时要考虑其是否是平稳序列,很明显上证指数并不是平稳序列,因此我们先对其一阶差分数据进行ADF单位根检验,若能通过检验,我们也可以用非平稳时间序列建模,只需要检验是否存在协整关系,若存在则不会出现伪回归现象。

看图可以判断上证指数并非平稳序列,这里也可以通过ADF检验进行判断。

通过ADF检验,我们发现两个对数收益率序列P值均小于0.01,t值均小于-3.43954,拒绝原假设。两个序列都满足平稳,接下来我们用OLS进行建模。

线性回归

结果汇总,首先看F值出现的概率,小于0.05,说明模型很好的预测了因变量的变化;其次,常数项和回归系数的P值均小于0.001,说明通过显著性检验,自变量Shibor可以显著预测因变量SZ指数变化;最后我们发现R2(拟合优度)很小,只有0.232,说明拟合效果并不是很好,不过这有可能是过于分散导致,改善方法是增加变量。

协整检验

之前已知,上证指数时间序列是非平稳的,在二者一阶差分通过ADF检验情况下,我们用原始数据建模,必须在最后进行协整检验。如果满足协整,即使是非平稳时间序列可以建模。Engel-Granger两部协整检验法是对线性模型的残差进行ADF检验,若残差平稳,则二者是满足协整。

残差的P值小于0.05,拒绝原假设,Shibor和上证指数是协整的,模型有效。

可视化

看图可知,这是一条斜率为正的曲线,当Shibor利率提高时,上证指数往往也有所增长,这和我们日常的逻辑相悖,考虑到影响股价的因素太多,导致理论和实践不一样的情况。

尾言

纸上得来终觉浅,通过实证往往一针见血看穿理论。本文主要演示了如何通过python的Satasmodels库进行一元线性回归的建模。全程演示只供交流学习使用,不构成投资意见。

欢迎阅读

发表评论

登录后才能评论