20220213协整

协整

如果两个时间序列x(t)和y(t)的线性组合是稳态的,那么就称这两个序列具有共整合性或协整性。方程式y(t)-a x(t)应该是稳态的。
考虑醉汉牵着一条狗的情形,相关性可以反映出他们是否在同一个方向上前进。而协整性反映的则是一段时间人与狗之间的距离。这个距离从长期来看它始终介于0和绳长之间。
下面我们来用随机生成的时间序列和真实的的数据来展示协整关系,同时我们可以用ADF(Augmented Dickey-Fuller test)来确定时间序列的协整关系。

"XU YONG KANG"
#用ADF检验确定时间序列的协整关系
import numpy as np
import statsmodels.api as sm
import pandas
import numpy
import statsmodels.tsa.stattools as ts

#定义用来计算ADF统计量的函数
def calc_adf(x,y):
    result=sm.OLS(x,y).fit()
    return ts.adfuller(result.resid)

#将太阳黑子数据载入Numpy数组
data_loader=sm.datasets.sunspots.load_pandas()
data=data_loader.data.values
N=len(data)

#计算正弦值
t=np.linspace(-2*np.pi,2*np.pi,N)
sine=np.sin(np.sin(t))

#求正弦值与其自身的协整关系
print('Self ADF',calc_adf(sine,sine))
#输出的第一个值是对ADF的度量,第二个为P值,然后是时间延迟与样本量,最后是个字典,给出了这个样本量的t分布

#给正弦波添加噪音
noise=np.random.normal(0,0.01,N)

#显示添加噪音后协整关系
print('ADF since with noise',calc_adf(sine,sine+noise))
#发现p值下降,ADF的指标值低于字典中的所有临界值,拒绝协整

#再生成一个更大的余弦波并混入之前的噪音
cosine=100*np.cos(t)+10
print('ADF sinne vs cosine',calc_adf(sine,cosine+noise))

#正弦与之前太阳黑子数据的协整
print('Sine vs sunspots',calc_adf(sine,data))

我们可以发现添加噪音后的结果如下

ADF since with noise (-19.743704610270704, 0.0, 0, 308, {'1%': -3.45176116018037, '5%': -2.870970093607691, '10%': -2.571794416006072}, -1821.6759724036788)

发现p值下降,ADF的指标值低于字典中的所有临界值,拒绝协整。
对比结果,我们会发现除了正弦与正弦序列是接受协整的,其他序列对都拒绝协整。

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值