时间序列平稳性的双重假设检验:KPSS与ADF方法比较研究

本文涉及的产品
实时数仓Hologres,5000CU*H 100GB 3个月
实时计算 Flink 版,5000CU*H 3个月
检索分析服务 Elasticsearch 版,2核4GB开发者规格 1个月
简介: 时间序列分析中,确定序列的平稳性至关重要。本文介绍如何使用KPSS检验和Dickey-Fuller检验验证序列平稳性。KPSS假设数据非平稳,而Dickey-Fuller假设数据平稳。通过构造平稳(白噪声)和非平稳(随机游走)序列并进行检验,展示了两种方法的应用。KPSS适用于检测围绕趋势的平稳性,Dickey-Fuller则用于检验单位根。建议同时使用两者以确保结论可靠。

在进行时间序列分析之前,确定序列的平稳性是一个关键步骤。平稳性指的是时间序列的统计特性(如均值和方差)在时间维度上保持不变。本文将详细介绍如何运用 KPSS 检验Dickey-Fuller 检验来验证序列的平稳性。这两种检验方法基于不同的统计假设:KPSS 检验的原假设是数据非平稳,而 Dickey-Fuller 检验则假设数据平稳。

时间序列平稳性的基本概念

时间序列的平稳性主要体现在三个方面:

  1. 均值稳定性:序列的期望值在时间维度上保持恒定
  2. 方差稳定性:数据波动范围保持相对稳定
  3. 无周期性:数据不存在明显的周期性波动或循环模式

平稳性是许多时间序列模型(如 ARIMA)的基本假设条件,对模型的有效性具有重要影响。

以下我们将通过构造平稳序列和非平稳序列来演示这两种检验方法的应用。

 importnumpyasnp  
 importpandasaspd  
 importmatplotlib.pyplotasplt  
 fromstatsmodels.tsa.stattoolsimportadfuller, kpss  

 # 构造平稳时间序列(白噪声过程)
 np.random.seed(42)  
 stationary_series=np.random.normal(loc=0, scale=1, size=500)  
 # 构造非平稳时间序列(随机游走过程)
 non_stationary_series=np.cumsum(np.random.normal(loc=0, scale=1, size=500))  
 # 创建数据框用于后续分析
 data=pd.DataFrame({  
     "Stationary": stationary_series,  
     "Non-Stationary": non_stationary_series  
 })  

 plt.figure(figsize=(12, 6))  
 plt.plot(data['Stationary'], label='Stationary Series')  
 plt.plot(data['Non-Stationary'], label='Non-Stationary Series')  
 plt.title('Stationary vs Non-Stationary Time Series')  
 plt.xlabel('Time')  
 plt.ylabel('Value')  
 plt.legend()  
 plt.grid()  
 plt.savefig('stationary_vs_non_stationary.png')  
 plt.show()

![]

 defkpss_test(series):  
     statistic, p_value, _, critical_values=kpss(series, regression='c')  
     print("KPSS Test:")  
     print(f"Statistic: {statistic:.4f}")  
     print(f"P-Value: {p_value:.4f}")  
     print("Critical Values:")  
     forkey, valueincritical_values.items():  
         print(f"{key}: {value:.4f}")  
     print(f"Conclusion: {'Stationary'ifp_value>0.05else'Non-Stationary'}\n")  

 defadf_test(series):  
     statistic, p_value, _, _, critical_values, _=adfuller(series)  
     print("Dickey-Fuller Test:")  
     print(f"Statistic: {statistic:.4f}")  
     print(f"P-Value: {p_value:.4f}")  
     print("Critical Values:")  
     forkey, valueincritical_values.items():  
         print(f"{key}: {value:.4f}")  
     print(f"Conclusion: {'Stationary'ifp_value<0.05else'Non-Stationary'}\n")  

 print("Testing the Stationary Series:\n")  
 kpss_test(data['Stationary'])  
 adf_test(data['Stationary'])  

 print("Testing the Non-Stationary Series:\n")  
 kpss_test(data['Non-Stationary'])  
 adf_test(data['Non-Stationary'])

平稳序列检验结果分析

  • KPSS 检验结果显示 p 值大于显著性水平 0.05,未能拒绝序列平稳的原假设
  • Dickey-Fuller 检验的 p 值小于 0.05,拒绝序列存在单位根的原假设,证实序列平稳性

非平稳序列检验结果分析

  • KPSS 检验的 p 值小于 0.05,拒绝平稳性假设,表明序列非平稳
  • Dickey-Fuller 检验的 p 值大于 0.05,未能拒绝单位根假设,同样证实序列非平稳性

总结

时间序列的平稳性检验是建模过程中的重要环节。KPSS 和 Dickey-Fuller 检验提供了两种互补的统计方法,可以帮助研究者准确评估序列的平稳性特征,并为后续的数据转换(如差分处理)提供依据。

  • KPSS 检验适用于验证时间序列是否围绕确定性趋势呈现平稳特性
  • Dickey-Fuller 检验主要用于检验序列是否存在单位根,尤其适用于 ARIMA 建模前的平稳性验证

由于这两种检验方法基于不同的统计假设,在实际应用中通常建议同时使用两种方法进行交叉验证,以获得更可靠的结论。

https://avoid.overfit.cn/post/be3a54e988ff4970a54584dbbf6ec2e5

目录
相关文章
|
2月前
|
机器学习/深度学习 算法 数据可视化
时间序列预测的不确定性区间估计:基于EnbPI的方法与应用研究
本文探讨了时间序列预测中不确定性量化的问题,特别是基于一致性预测理论的EnbPI方法。EnbPI通过集成学习和自举采样技术,解决了传统方法在处理非平稳时间序列数据时的局限性,提供了一种分布无关的预测区间构建方法,支持任意估计器的集成,并在推理阶段保持高效。实验结果显示,EnbPI在德国电力价格预测中表现出良好的覆盖率和适应性,尽管存在一定的计算成本。
60 0
|
9月前
|
数据可视化
【Eviews实战】——时序的平稳性检验
【Eviews实战】——时序的平稳性检验
|
9月前
|
数据处理
时间序列分析实战(一):时序平稳性和白噪声检验
时间序列分析实战(一):时序平稳性和白噪声检验
|
9月前
|
算法 Python
R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列
R语言随机波动模型SV:马尔可夫蒙特卡罗法MCMC、正则化广义矩估计和准最大似然估计上证指数收益时间序列
|
9月前
|
机器学习/深度学习 数据可视化
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
R语言Stan贝叶斯回归置信区间后验分布可视化模型检验|附数据代码
|
9月前
|
算法 数据建模
MATLAB随机波动率SV、GARCH用MCMC马尔可夫链蒙特卡罗方法分析汇率时间序列
MATLAB随机波动率SV、GARCH用MCMC马尔可夫链蒙特卡罗方法分析汇率时间序列
|
9月前
|
数据挖掘
R语言临床预测模型:分层构建COX生存回归模型STRATIFIED COX MODEL、KM生存曲线、PH假设检验
R语言临床预测模型:分层构建COX生存回归模型STRATIFIED COX MODEL、KM生存曲线、PH假设检验
|
9月前
|
数据挖掘
R语言稀疏主成分分析、因子分析、KMO检验和Bartlett球度检验分析上市公司财务指标数据
R语言稀疏主成分分析、因子分析、KMO检验和Bartlett球度检验分析上市公司财务指标数据
|
9月前
|
算法 Linux
R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数
R语言随机波动率(SV)模型、MCMC的Metropolis-Hastings算法金融应用:预测标准普尔SP500指数
|
9月前
|
算法 vr&ar Python
R语言隐马尔可夫模型HMM连续序列重要性重抽样CSIR估计随机波动率模型SV分析股票收益率时间序列
R语言隐马尔可夫模型HMM连续序列重要性重抽样CSIR估计随机波动率模型SV分析股票收益率时间序列