前 言
在开始本文内容之前,请大家自行安装Statsmodels库,方法是在cmd命令行中输入:pip install Statsmodels
Statsmodels是Python的统计建模和计量经济学工具包,包括一些描述统计、统计模型估计和推断。
01
问题与数据
问题
在建模之前,首先我们要明白要解决什么问题?我们要寻找什么变量?我们的数据是截面数据还是时间序列等…
1、问题
探索利率和股票价格负相关关系
2、变量
选取上海银行同业拆借利率作为自变量,上证指数作为因变量
3、数据
选取20160101至20190101的Shibor和上证指数的时间序列数据建模
数据
有一种逻辑:利率下降——存款减少贷款增加——市场资金充裕——流入股市——股价推高
我们选取市场化程度较高的Shibor代表利率、上证指数收盘价代表股价看看能否验证这个逻辑。
我们通过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库进行一元线性回归的建模。全程演示只供交流学习使用,不构成投资意见。
欢迎阅读