20220213协整

这篇博客介绍了协整的概念,即两个时间序列的线性组合保持稳态。通过醉汉与狗的例子解释了协整与相关性的区别。文章通过Python的statsmodels库演示了如何使用ADF检验来确定时间序列的协整性,并展示了多个示例,包括正弦序列、加噪声后的正弦序列、余弦序列与太阳黑子数据。结果显示,只有正弦序列自身存在协整关系,其他组合则被拒绝协整。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

协整

如果两个时间序列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的指标值低于字典中的所有临界值,拒绝协整。
对比结果,我们会发现除了正弦与正弦序列是接受协整的,其他序列对都拒绝协整。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值