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

本文涉及的产品
RDS DuckDB + QuickBI 企业套餐,8核32GB + QuickBI 专业版
简介: 时间序列分析中,确定序列的平稳性至关重要。本文介绍如何使用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

目录
相关文章
|
12月前
|
Kubernetes 关系型数据库 文件存储
手把手教你完成极空间 NAS Docker 镜像加速配置
本教程详细介绍了如何在极空间NAS上配置轩辕镜像加速器,以提升Docker镜像的下载速度与稳定性。内容涵盖账号注册、网络确认、加速器设置及验证方法,并提供常见问题解决方案,帮助用户高效完成容器化应用部署。
4448 1
|
12月前
|
安全 关系型数据库 数据库
数据仓库是什么,一文读懂数据仓库设计步骤
数据仓库是企业整合、存储和分析历史数据的核心工具,支持决策与趋势预测。设计需经历明确业务需求、梳理数据源、概念建模、逻辑设计、物理实现及测试维护等步骤。通过合理规划结构、安全机制与数据集成(如使用FineDataLink),可有效提升数据质量与分析效率,助力企业发挥数据价值。
|
数据可视化 vr&ar
时间序列分析实战(七):多个变量的ARIMA模型拟合
时间序列分析实战(七):多个变量的ARIMA模型拟合
R语言时间序列平稳性几种单位根检验(ADF,KPSS,PP)及比较分析
R语言时间序列平稳性几种单位根检验(ADF,KPSS,PP)及比较分析
|
存储 安全 算法
陪玩系统功能 陪玩平台 陪玩系统用户体验 陪玩系统安全性 陪玩系统开发
陪玩系统旨在为用户寻找合适的陪玩者,提供注册登录、资料展示、搜索匹配、预约支付、实时沟通及评价反馈等功能。平台拥有丰富的陪玩资源,便捷的预约流程,安全的支付环境和良好的用户体验。系统通过优化算法、提升沟通效率、丰富服务内容和建立社区互动来提升用户体验。安全性方面,系统采用数据加密、防火墙、支付安全和实名认证等措施。开发过程包括需求分析、系统设计、前后端开发、测试优化和上线推广。
1303 2
|
编译器 Linux C语言
ARM64上开启MTE
ARM64上开启MTE
【Matlab 2019b】Matlab在figure中如何把横坐标或者纵坐标单位转换为10的几次方
本文提供了在Matlab中如何改变图形坐标轴单位的方法,举例说明了如何将横轴刻度标签设置为特定的年份,并调整刻度取值以匹配自变量的变化。
2904 1
|
TensorFlow 算法框架/工具 Python
最新版tensorflow安装教程,pip安装+手动安装
最新版tensorflow安装教程,pip安装+手动安装
6830 1
|
算法 调度
【调度算法】NSGA II
【调度算法】NSGA II
2149 1
|
存储 Linux
Linux 本地yum源配置 (详简篇)
Linux 本地yum源配置 (详简篇)
6851 1

热门文章

最新文章