当前位置: 首页 > article >正文

你的时间序列真的平稳吗?手把手教你用ADF检验(Dickey-Fuller)和滚动统计为预测模型打好基础

时间序列平稳性诊断实战从理论到Python实现时间序列分析中平稳性检验是建模前的关键步骤。许多经典预测模型如ARIMA都建立在数据平稳的假设之上。但现实中的时间序列往往带有趋势或季节性直接建模会导致预测失效。本文将系统讲解平稳性的核心概念并手把手演示如何通过ADF检验和滚动统计方法诊断时间序列的平稳性。1. 平稳性的本质与分类1.1 严平稳与宽平稳严平稳要求序列的所有统计特性包括高阶矩都不随时间变化。数学上对任意时间位移τ联合概率分布满足F_{X}(x_{t_1},...,x_{t_k}) F_{X}(x_{t_1τ},...,x_{t_kτ})宽平稳弱平稳则只需满足三个条件均值恒定E[X_t] μ与t无关方差恒定Var(X_t) σ²有限且不变自协方差仅与时滞相关Cov(X_t, X_s) γ(|t-s|)实际分析中通常使用宽平稳标准因其更易检验且大多数模型只需满足弱平稳条件1.2 非平稳序列的典型特征特征类型表现形式对建模的影响趋势性长期上升/下降导致伪回归问题季节性周期性波动预测出现系统性偏差结构突变统计特性突然变化模型参数失效2. 视觉诊断滚动统计法2.1 移动窗口技术实现import pandas as pd import matplotlib.pyplot as plt def plot_rolling_stats(series, window12): 绘制滚动统计量 # 计算滚动统计量 rolling_mean series.rolling(windowwindow).mean() rolling_std series.rolling(windowwindow).std() # 创建画布 plt.figure(figsize(12, 6)) # 绘制原始序列 plt.plot(series, colorblue, labelOriginal) plt.plot(rolling_mean, colorred, labelRolling Mean) plt.plot(rolling_std, colorblack, labelRolling Std) plt.legend(locbest) plt.title(Rolling Mean Standard Deviation) plt.show() # 示例使用 from statsmodels.datasets import co2 data co2.load().data plot_rolling_stats(data[co2], window24)2.2 解读要点平稳序列滚动均值和标准差应在小范围内波动存在趋势滚动均值呈现明显上升/下降方差非恒定滚动标准差呈现规律性变化窗口大小的选择对于月度数据通常选择12或24季度数据选择4。窗口过大会平滑过多细节过小则波动剧烈难以判断3. 统计检验ADF测试详解3.1 ADF检验的数学模型ADF检验通过以下回归模型进行Δy_t α βt γy_{t-1} δ_1Δy_{t-1} ... δ_pΔy_{t-p} ε_t其中关键假设检验为H₀: γ 0 存在单位根序列非平稳H₁: γ 0 序列平稳3.2 Python实现与结果解读from statsmodels.tsa.stattools import adfuller def adf_test(series, regressionc): 执行ADF检验并格式化输出 result adfuller(series, regressionregression) print(ADF Statistic: %f % result[0]) print(p-value: %f % result[1]) print(Critical Values:) for key, value in result[4].items(): print(\t%s: %.3f % (key, value)) if result[1] 0.05: print(未能拒绝原假设 - 序列可能非平稳) else: print(拒绝原假设 - 序列可能是平稳的) # 检验CO2数据 adf_test(data[co2].dropna())典型输出结果解析ADF Statistic: -2.312 p-value: 0.167 Critical Values: 1%: -3.440 5%: -2.866 10%: -2.569判断规则ADF统计量临界值绝对值比较→ 拒绝H₀p-value 0.05 → 拒绝H₀3.3 检验类型选择回归类型模型包含项适用场景c常数项无趋势序列ct常数趋势项有趋势序列nc无附加项罕见理论分析4. 非平稳序列的转换方法4.1 差分处理一阶差分公式diff_1 series.diff().dropna()季节性差分以12个月为例diff_seasonal series.diff(12).dropna()4.2 对数转换适用于指数增长趋势log_series np.log(series)4.3 组合策略# 先对数再差分 transformed np.log(series).diff().dropna()转换效果评估矩阵方法适用场景优点缺点一阶差分线性趋势简单直接可能过度差分季节性差分周期性波动消除季节影响需要知道周期长度对数变换指数趋势稳定方差对零值敏感5. 进阶诊断KPSS与PP检验5.1 KPSS检验与ADF检验互为补充from statsmodels.tsa.stattools import kpss def kpss_test(series, regressionc): result kpss(series, regressionregression) print(KPSS Statistic: %f % result[0]) print(p-value: %f % result[1]) print(Critical Values:) for key, value in result[3].items(): print(\t%s: %.3f % (key, value))5.2 组合判断策略ADF结果KPSS结果结论拒绝H₀不拒绝H₀确定平稳不拒绝H₀拒绝H₀确定非平稳都拒绝H₀都拒绝H₀需进一步分析6. 实战案例股票价格序列分析以苹果公司股价为例import yfinance as yf # 获取数据 aapl yf.download(AAPL, start2020-01-01, end2023-01-01)[Adj Close] # 可视化分析 plot_rolling_stats(aapl, window30) # ADF检验 adf_test(aapl, regressionct) # 转换后检验 log_returns np.log(aapl).diff().dropna() adf_test(log_returns)关键发现原始股价序列ADF检验p值为0.98强烈非平稳对数收益率序列p值0.01可视为平稳7. 建模前的完整性检查清单视觉检查绘制原始序列和滚动统计量ADF检验选择适当的回归类型转换验证每次转换后重新检验残差诊断建模后检查残差是否白噪声def full_diagnostic(series): 完整诊断流程 # 1. 绘制原始序列 plt.figure(figsize(12,4)) plt.subplot(121) series.plot(titleOriginal Series) # 2. 绘制滚动统计 plt.subplot(122) plot_rolling_stats(series) # 3. 执行ADF检验 print(\nADF Test Results:) adf_test(series) # 4. 执行KPSS检验 print(\nKPSS Test Results:) kpss_test(series)在真实项目中我发现同时使用多种检验方法可以避免单一方法的局限性。特别是对于金融时间序列结合ADF和KPSS检验能给出更可靠的结论。当检验结果出现矛盾时建议优先考虑ADF结果并辅以视觉分析。

相关文章:

你的时间序列真的平稳吗?手把手教你用ADF检验(Dickey-Fuller)和滚动统计为预测模型打好基础

时间序列平稳性诊断实战:从理论到Python实现 时间序列分析中,平稳性检验是建模前的关键步骤。许多经典预测模型(如ARIMA)都建立在数据平稳的假设之上。但现实中的时间序列往往带有趋势或季节性,直接建模会导致预测失效…...

Playwright MCP终极指南:让大语言模型拥有浏览器自动化的超能力

Playwright MCP终极指南:让大语言模型拥有浏览器自动化的超能力 【免费下载链接】playwright-mcp Playwright MCP server 项目地址: https://gitcode.com/gh_mirrors/pl/playwright-mcp Playwright MCP(Model Context Protocol)是微软…...

告别炼丹玄学:用EfficientNet-B0到B7的缩放系数,在PyTorch里精准匹配你的算力

告别炼丹玄学:用EfficientNet-B0到B7的缩放系数,在PyTorch里精准匹配你的算力 当你在个人GPU或边缘设备上部署深度学习模型时,是否经常遇到这样的困境:模型要么太大导致显存溢出,要么太小无法达到预期精度?…...

Arm CoreSight调试架构与寄存器安全机制详解

1. Arm CoreSight调试架构概述在嵌入式系统开发领域,调试接口的设计质量直接影响着开发效率和问题定位能力。Arm CoreSight架构作为业界领先的调试与追踪解决方案,通过标准化的寄存器映射和总线协议,为SoC设计提供了完整的调试基础设施。这套…...

为什么92%参会者在P3东区绕行超4分钟?2026大会停车动线算法白皮书首度披露

更多请点击: https://intelliparadigm.com 第一章:2026年AI技术大会停车指引概览 2026年AI技术大会主会场设于上海张江科学城国际会展中心,周边共开放3个智能停车场(P1–P3),全部支持车牌自动识别、无感支…...

指标漂移、用户冷启动、LLM幻觉干扰——大模型A/B测试三大盲区全解析,SITS大会实证数据支撑

更多请点击: https://intelliparadigm.com 第一章:指标漂移、用户冷启动、LLM幻觉干扰——大模型A/B测试三大盲区全解析,SITS大会实证数据支撑 在2024年SITS(Scalable Intelligence Testing Summit)大会上&#xff0c…...

边缘计算中的3D占据映射技术与Gleanmer SoC优化

1. 边缘计算时代的3D占据映射技术革新在自动驾驶汽车穿越复杂城市道路时,在AR眼镜试图将虚拟物体精准叠加到现实场景时,设备都需要实时理解周围环境的3D结构。传统解决方案如激光雷达点云只能提供稀疏的空间采样,而基于体素的OctoMap虽然能构…...

FPGA高生产力设计:从RTL到C语言的演进与实践

1. 现代FPGA设计方法论的演进背景 在当今的电子系统设计中,FPGA因其可重构性和并行处理能力,已成为视频处理、无线通信、数据中心加速等领域的核心器件。但随着工艺节点不断进步,现代FPGA的容量已突破百万逻辑单元级别,传统RTL&am…...

基于vDisk的IDV云桌面机房建设方案解析

基于vDisk的IDV云桌面机房建设方案解析本文为教学机房新建/改造场景下,基于vDisk的IDV云桌面落地建设方案,由上海澄成信息技术有限公司提供产品支撑,核心采用澄成 vDisk IDV云桌面的镜像磁盘统一管理能力,配套AI教学环境升级模块&…...

把“贪吃蛇”做成塔防Boss,这个Unity模板是怎么设计的?附完整变现思路

在 Unity Asset Store 上,大多数塔防模板都遵循一个经典逻辑:敌人走路径,玩家建塔防守。 但今天这个插件 Snake Army Defense - Complete Mobile Game Template,做了一件很有意思的事——它把传统塔防玩法“反过来了”。 敌人不…...

八大网盘直链解析神器:彻底告别下载限速烦恼的终极指南

八大网盘直链解析神器:彻底告别下载限速烦恼的终极指南 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百度网盘 / 阿里云盘 / 中国移动云盘 / 天翼…...

LinkSwift:八大网盘直链下载助手终极指南,告别客户端束缚![特殊字符]

LinkSwift:八大网盘直链下载助手终极指南,告别客户端束缚!🚀 【免费下载链接】Online-disk-direct-link-download-assistant 一个基于 JavaScript 的网盘文件下载地址获取工具。基于【网盘直链下载助手】修改 ,支持 百…...

注册github账户时出现问题怎么解决

...

批量生成内容?先优化你的Prompt!

很多人用 GPT 批量生成内容时,问题不是模型不够强,而是指令太模糊。 比如:帮我写一些小红书文案。 生成 50 个标题。 给我做一批产品介绍。这些指令看似省事,实际很容易带来三个问题: 输出风格不稳定内容重复、泛泛而谈…...

【c++面向对象编程】第4篇:类与对象(三):拷贝构造函数与深浅拷贝问题

目录 一、一个崩溃的程序 二、拷贝构造函数是什么? 调用时机(三个场景) 三、浅拷贝 vs 深拷贝 浅拷贝(默认行为) 深拷贝(正确的做法) 四、什么时候必须自己写拷贝构造函数? 一…...

智能体网格(Agent Mesh)架构解析:构建大规模异构智能体协同网络

1. 项目概述与核心价值最近在开源社区里,一个名为sampleXbro/agentsmesh的项目引起了我的注意。乍一看这个标题,你可能会觉得它有些神秘,甚至有点“缝合怪”的味道——sampleX、bro、agents、mesh,这些词组合在一起,到…...

【c++面向对象编程】第3篇:类与对象(二):构造函数与析构函数

目录 一、一个让人头疼的问题 二、构造函数:对象出生时的“第一声啼哭” 1. 最基本的构造函数 2. 带参数的构造函数(重载) 3. 初始化列表:更高效的初始化方式 三、默认构造函数:那个“看不见”的函数 四、析构函…...

Letta框架:全栈AI应用开发,从模型集成到部署上线的完整解决方案

1. 项目概述:一个开箱即用的AI应用开发框架最近在折腾AI应用开发的朋友,估计都绕不开一个核心痛点:想法很美好,落地很骨感。从模型调用、提示词工程,到前后端集成、状态管理,再到部署上线,每个环…...

【c++面向对象编程】第2篇:类与对象(一):定义第一个类——成员变量与成员函数

目录 一、从一个日常需求开始 二、定义你的第一个类 三、访问修饰符:public、private、protected 举个例子,看看区别: 四、成员变量怎么声明? 五、成员函数:两种实现方式 方式一:类内实现&#xff08…...

AI编程智能体评估平台CodingAgentExplorer:从原理到实践的系统评测指南

1. 项目概述:一个探索智能体编码能力的开源工具最近在GitHub上闲逛,发现了一个挺有意思的项目:tndata/CodingAgentExplorer。光看名字,你可能会觉得这又是一个“AI写代码”的工具,市面上这类工具已经多如牛毛了。但当我…...

iPhone 5c中国遇冷复盘:产品定价、市场预期与战略博弈的深度解析

1. 项目概述:一次关于市场预期的“误判”复盘2013年秋天,苹果公司发布了被外界普遍视为“专为新兴市场打造”的iPhone 5c。这款拥有多彩聚碳酸酯外壳的手机,在发布前就被贴上了“廉价iPhone”的标签,尤其是针对像中国这样庞大且正…...

《Java面试85题图解版(二)》进阶深化中篇:Spring核心 + 数据库进阶

📘 《Java面试85题图解版(二)》进阶深化中篇:Spring核心 数据库进阶 阅读提示:这是“图解比喻一句话总结”面试题库第二篇的进阶深化中篇,覆盖Spring核心与Spring Boot(9题)和数据库…...

物联网标准演进与云平台破局:从M2M到IoT的实战路径

1. 从M2M到IoT:一场迟来的标准革命十多年前,当我第一次接触“机器对机器”这个概念时,感觉它就像个被锁在工厂车间里的幽灵——功能强大,但离普通人的生活无比遥远。那时的M2M,谈论的是专用网络、私有协议和封闭的垂直…...

EDA工程师成长与验证技术演进:从算法到芯片的实践闭环

1. 从算法到芯片:一位EDA工程师的成长路径解析在半导体这个行当里待久了,你会发现,那些真正能把工具做“透”、把流程理“顺”的人,往往自己就亲手“焊”过板子、调过RTL、追过时序违例。Prakash Narain的故事,就是一个…...

ClawMorph:为OpenClaw AI智能体实现安全可逆的“一键换装”

1. 项目概述:一个为AI智能体“一键换装”的开发者工具如果你正在使用OpenClaw这类AI智能体框架,并且厌倦了每次想让智能体扮演不同角色(比如从产品经理切换到设计师)时,都需要手动去修改一堆配置文件、提示词文件&…...

番茄小说下载器:打造个人专属离线小说图书馆的完整指南

番茄小说下载器:打造个人专属离线小说图书馆的完整指南 【免费下载链接】fanqienovel-downloader 下载番茄小说 项目地址: https://gitcode.com/gh_mirrors/fa/fanqienovel-downloader 你是否曾在通勤路上突然想读小说,却因为网络信号不佳而无法加…...

从CEO到营销技术专家:创业者退休后的身份重构与价值延续

1. 从创业者到“退休者”:身份的骤然转变卖掉自己一手创办并经营了近四十年的公司,这种感觉,远非“退休”二字可以概括。它不是一次计划已久的悠闲旅行,更像是一场毫无预兆的急刹车。前一天,你还在会议室里为下一代产品…...

DevSquad:基于Docker Compose的一站式开发环境解决方案

1. 项目概述:一个为开发者量身定制的“特种作战小队”如果你是一名开发者,无论是独立作战还是身处团队,一定都经历过这样的场景:为了搭建一个项目,你需要反复安装和配置各种开发工具、运行环境、依赖包。从代码编辑器、…...

AI心智理论评估:VLM意图理解接近人类,但视角采样能力存在瓶颈

1. 项目概述:当AI“读懂”人心时,它在想什么?在人工智能领域,有一个听起来颇具哲学意味的挑战:如何让机器理解“心智”?这不仅仅是让AI识别图像中的物体或生成流畅的文本,而是让它能够像人类一样…...

5分钟快速上手:Blender 3MF插件让你轻松实现3D打印模型转换

5分钟快速上手:Blender 3MF插件让你轻松实现3D打印模型转换 【免费下载链接】Blender3mfFormat Blender add-on to import/export 3MF files 项目地址: https://gitcode.com/gh_mirrors/bl/Blender3mfFormat 你是否曾经在Blender中精心设计了色彩丰富的3D模型…...