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

别再只盯着ADF了!用Python的statsmodels做KPSS检验,区分‘水平平稳’和‘趋势平稳’的保姆级指南

别再只盯着ADF了用Python的statsmodels做KPSS检验区分‘水平平稳’和‘趋势平稳’的保姆级指南时间序列分析中平稳性检验是绕不开的关键步骤。很多数据分析师一提到平稳性检验第一反应就是ADF检验Augmented Dickey-Fuller test这就像提到时间序列预测就想到ARIMA一样自然。但ADF检验并非万能钥匙它有自己的局限性和适用场景。今天我们要介绍的是ADF检验的好搭档——KPSS检验它能帮助我们更准确地判断时间序列是水平平稳还是趋势平稳。在实际业务场景中比如股票价格分析、销售预测、宏观经济指标研究等我们经常会遇到这样的困惑ADF检验说序列是平稳的但肉眼看起来明明有明显的趋势或者ADF检验说非平稳但去除趋势后残差看起来又很平稳。这种矛盾结论往往源于对平稳性类型的错误判断。KPSS检验正是解决这一痛点的利器。1. 为什么需要KPSS检验与ADF检验的互补关系ADF检验和KPSS检验就像一枚硬币的两面它们从不同角度检验平稳性。ADF检验的零假设是序列有单位根即非平稳而KPSS检验的零假设是序列是平稳的水平平稳或趋势平稳。这种互补性使得两者结合使用能给出更可靠的结论。常见组合结果及解释检验组合ADF结果KPSS结果可能解释情况1不拒绝H₀拒绝H₀序列很可能是非平稳的情况2拒绝H₀不拒绝H₀序列很可能是平稳的情况3拒绝H₀拒绝H₀可能是趋势平稳需要进一步检验情况4不拒绝H₀不拒绝H₀检验功效不足需要更多数据在Python的statsmodels库中KPSS检验通过kpss()函数实现关键参数是regressionc检验水平平稳性序列围绕恒定均值波动ct检验趋势平稳性序列围绕确定性趋势波动2. 实战用Python进行KPSS检验让我们通过一个完整的例子来演示如何使用KPSS检验。假设我们有一组模拟的销售数据显示出明显的线性增长趋势。import numpy as np import matplotlib.pyplot as plt from statsmodels.tsa.stattools import kpss # 生成模拟数据线性趋势季节性噪声 np.random.seed(42) t np.arange(120) # 10年月度数据 trend 0.05 * t seasonal 5 * np.sin(2 * np.pi * t / 12) noise np.random.normal(0, 2, len(t)) sales 50 trend seasonal noise # 可视化 plt.figure(figsize(12, 6)) plt.plot(sales) plt.title(模拟销售数据含趋势和季节性) plt.xlabel(时间月) plt.ylabel(销售额) plt.grid(True) plt.show()2.1 检验水平平稳性我们先检验序列是否是水平平稳的即没有趋势围绕恒定均值波动# 水平平稳性检验regressionc kpss_stat, p_value, lags, crit_values kpss(sales, regressionc) print(fKPSS统计量水平平稳: {kpss_stat:.4f}) print(fP值: {p_value:.4f}) print(临界值:) for key, value in crit_values.items(): print(f {key}%: {value:.4f}) # 解释结果 if p_value 0.05: print(结论拒绝水平平稳的原假设序列可能非平稳) else: print(结论无法拒绝水平平稳的原假设)2.2 检验趋势平稳性接下来检验序列是否是趋势平稳的即去除趋势后是平稳的# 趋势平稳性检验regressionct kpss_stat, p_value, lags, crit_values kpss(sales, regressionct) print(f\nKPSS统计量趋势平稳: {kpss_stat:.4f}) print(fP值: {p_value:.4f}) print(临界值:) for key, value in crit_values.items(): print(f {key}%: {value:.4f}) # 解释结果 if p_value 0.05: print(结论拒绝趋势平稳的原假设) else: print(结论无法拒绝趋势平稳的原假设)提示在实际分析中建议同时进行ADF检验和KPSS检验比较两者的结果。当结论矛盾时通常更相信KPSS检验的结果特别是在样本量较大的情况下。3. 业务场景中的决策流程在实际业务分析中如何根据KPSS检验结果做出正确决策下面是一个实用的决策流程图可视化检查首先绘制时间序列图观察是否有明显趋势或季节性ADF检验进行ADF检验记录p值KPSS检验如果不确定是否有趋势先做水平平稳检验(regressionc)如果序列有明显趋势直接做趋势平稳检验(regressionct)结果解读ADF拒绝且KPSS不拒绝序列是平稳的ADF不拒绝且KPSS拒绝序列是非平稳的两者都拒绝可能是趋势平稳需要差分或去趋势两者都不拒绝检验功效不足考虑增加样本量不同业务场景的检验选择建议业务场景推荐检验理由股票价格KPSS(ct)ADF价格通常有趋势关注趋势平稳性销售数据KPSS(c)先验促销可能造成水平突变经济指标两者都做宏观经济数据可能有结构性变化传感器数据KPSS(c)通常期望围绕固定值波动4. 常见陷阱与解决方案即使了解了KPSS检验的基本用法在实际应用中还是会遇到各种问题。以下是几个常见陷阱及解决方案4.1 陷阱一忽视长期方差估计KPSS检验统计量的计算依赖于长期方差的准确估计。默认情况下statsmodels使用Newey-West估计器自动选择滞后阶数但在某些情况下可能需要手动调整。# 手动设置滞后阶数比如12适用于年度季节性数据 kpss_stat, p_value, lags, crit_values kpss(sales, regressionct, nlags12)注意滞后阶数选择过大可能降低检验功效过小可能导致标准误低估。一般规则是取⌈4(T/100)^(2/9)⌉其中T是样本量。4.2 陷阱二与ADF检验结果矛盾当ADF和KPSS给出矛盾结论时可以尝试以下步骤检查序列是否具有确定性趋势绘制图形对序列进行一阶差分重新检验如果差分后ADF拒绝而KPSS不拒绝说明原序列可能是差分平稳的考虑使用其他检验方法如PP检验作为佐证4.3 陷阱三季节性数据的处理对于有明显季节性的数据直接应用KPSS检验可能不合适。解决方法包括先进行季节性差分再检验平稳性使用季节性KPSS检验虽然statsmodels未直接提供但可以通过去季节化实现from statsmodels.tsa.seasonal import seasonal_decompose # 季节性分解 result seasonal_decompose(sales, modeladditive, period12) deseasonal sales - result.seasonal # 对去季节化数据做KPSS检验 kpss_stat, p_value, lags, crit_values kpss(deseasonal, regressionct)4.4 陷阱四结构突变的影响如果时间序列存在结构突变如政策变化、突发事件导致的均值漂移KPSS检验可能会错误地拒绝平稳性假设。解决方法识别突变点可以使用statsmodels.tsa.regime_switching分段检验平稳性使用考虑结构突变的单位根检验5. 进阶技巧解读KPSS检验结果深入理解KPSS检验输出中的各个参数能帮助我们做出更准确的判断KPSS统计量值越大越倾向于拒绝平稳性原假设p值小于显著性水平通常0.05时拒绝原假设临界值1%、5%、10%三个水平统计量超过则拒绝滞后阶数影响长期方差估计自动选择可能不适合所有情况KPSS检验结果报告示例KPSS Statistic for trend stationarity: 0.1234 p-value: 0.0678 Critical Values: 1% : 0.2160 5% : 0.1460 10%: 0.1190解读统计量(0.1234) 5%临界值(0.1460)p值(0.0678) 0.05结论无法拒绝趋势平稳的原假设对于金融时间序列分析我习惯同时运行ADF和KPSS检验当结果不一致时会优先考虑KPSS的结果特别是处理有明显趋势的资产价格数据时。曾经有一个加密货币价格预测项目ADF检验显示平稳(p0.01)但KPSS强烈拒绝平稳性(p0.01)最终证明KPSS的结果更符合实际情况——价格确实存在长期趋势。

相关文章:

别再只盯着ADF了!用Python的statsmodels做KPSS检验,区分‘水平平稳’和‘趋势平稳’的保姆级指南

别再只盯着ADF了!用Python的statsmodels做KPSS检验,区分‘水平平稳’和‘趋势平稳’的保姆级指南 时间序列分析中,平稳性检验是绕不开的关键步骤。很多数据分析师一提到平稳性检验,第一反应就是ADF检验(Augmented Dick…...

5分钟掌握1Fichier下载管理器:轻松突破下载限制的终极解决方案

5分钟掌握1Fichier下载管理器:轻松突破下载限制的终极解决方案 【免费下载链接】1fichier-dl 1Fichier Download Manager. 项目地址: https://gitcode.com/gh_mirrors/1f/1fichier-dl 1Fichier下载管理器是一款专为1Fichier文件分享平台设计的智能下载工具&a…...

直接序列扩频技术原理与PSoC实现详解

1. 直接序列扩频技术基础解析直接序列扩频(DSSS)是一种通过伪随机码(PN序列)扩展信号频谱的无线通信技术。1941年由好莱坞女星Hedy Lamarr和作曲家George Antheil首次提出(美国专利#2,292,387),这项技术如今已广泛应用于蜂窝电话、无线局域网…...

别再暴力finetune了!(Python轻量化微调的3种范式切换策略——精度不降、显存直降68%)

更多请点击: https://intelliparadigm.com 第一章:暴力微调的困局与轻量化微调的必要性 在大语言模型(LLM)落地实践中,全参数微调(Full Fine-tuning)常被称作“暴力微调”——它要求加载全部模…...

碾压传统搜索:大模型 Advanced RAG 架构设计与 FAISS 向量检索性能调优

这一篇,我们要聊聊目前 AI 领域最火、也是最有商业价值的落地架构。 随着大语言模型(LLM)的爆发,很多企业发现直接把 PDF 丢给 GPT 问问题,经常会出现“幻觉”或者回答不准确。为了解决这个问题,RAG&#x…...

GraphRAG 实战最大的坑:一个实体,七种身份

当你以为 GraphRAG 最难的是"建图",实际上最难的是"给实体定类型"——哪怕你已经预定义了严格的类型 schema。一、先看一组真实数据 我们拿 3GPP TS 23.502(5G 核心网信令流程规范)跑了一次 GraphRAG 的实体抽取。这份文…...

为什么你的XGBoost风控模型突然失效?——央行2024新规下特征穿越检测实战方案

更多请点击: https://intelliparadigm.com 第一章:为什么你的XGBoost风控模型突然失效?——央行2024新规下特征穿越检测实战方案 2024年3月起施行的《金融人工智能模型监管指引(试行)》明确要求:所有面向信…...

量化进阶:基于 L2 限价订单簿 (LOB) 的微观结构特征工程与深度学习预测

量化进阶:基于 L2 限价订单簿 (LOB) 的微观结构特征工程与深度学习预测 在量化交易的江湖里,有一个公开的秘密:价格不是平滑移动的,而是由一笔笔限价单(Limit Orders)的挂单、撤单和市价单(Mark…...

量子计算编程框架QUASAR:强化学习优化汇编代码生成

1. 量子计算与汇编代码的碰撞 量子计算正在从实验室走向实际应用,但编写量子程序仍然是个技术活。传统量子编程需要开发者同时理解量子物理原理和特定硬件架构,这种双重门槛让很多潜在开发者望而却步。我在量子计算领域摸爬滚打多年,亲眼见过…...

Otter.ai CLI工具:为开发者与AI智能体打造自动化会议管理方案

1. 项目概述:一个为开发者与AI智能体打造的Otter.ai命令行工具 如果你和我一样,每天要处理大量的会议录音和转录文本,那么Otter.ai这个工具你一定不陌生。它确实是个会议记录的神器,能自动识别不同说话人,生成带时间戳…...

分布式系统自适应路由优化:RouteMoA架构解析

1. 项目背景与核心价值在分布式系统架构中,混合代理模式已成为处理高并发、异构网络环境的主流方案。但传统静态路由策略在面对动态网络拓扑和波动性流量时,常常出现资源分配不均、响应延迟等问题。RouteMoA项目的核心创新在于实现了基于实时网络状态的自…...

从零部署YOLO到DJI遥控器:手把手教你用MSDK打造一个‘会看’的无人机巡检App

从零部署YOLO到DJI遥控器:手把手教你用MSDK打造一个‘会看’的无人机巡检App 想象一下,你的无人机不仅能按照预设航线飞行,还能实时识别电力塔上的绝缘子破损、安防区域内的异常人员活动——这就是智能巡检系统的魅力所在。本文将带你从零开始…...

避坑指南:为什么我总劝新手安装Anaconda时别勾选‘添加到PATH’?

为什么Anaconda安装时不该勾选"添加到PATH"?深度解析环境变量陷阱 第一次安装Anaconda时,那个看似无害的"Add Anaconda to my PATH environment variable"选项就像潘多拉魔盒——勾选它可能打开一连串意想不到的问题。作为处理过数百…...

微众银行年营收363亿:同比降4.8% 净利110亿 不良贷款率1.41%

雷递网 雷建平 5月3日微众银行(WeBank)日前发布2025年的年报,年报显示,微众银行2025年营收为362.84亿元,较上年同期的381.28亿元下降4.8%。微众银行2023年营收为393.6亿元,这意味着,微众银行的营…...

诚益生物冲刺港股:年亏损4460万美元 业务深度绑定阿斯利康

雷递网 雷建平 5月3日诚益生物开曼有限公司(简称:“诚益生物”)日前更新招股书,准备在港交所上市。诚益生物于2025年12月向FDA提交ECC4703作为司美格鲁肽辅助治疗肥胖症╱超重的IIa期试验的IND申请,并于2026年1月收到F…...

Python日志把磁盘写爆了?一个真实案例教你用logrotate和find命令优雅管理日志文件

Python日志管理实战:如何用logrotate和find命令避免磁盘爆满 1. 从真实案例看日志管理的痛点 那天凌晨三点,监控系统突然报警——生产环境的核心服务全部宕机。紧急登录服务器排查,发现磁盘空间被日志文件占满,Python应用抛出OSEr…...

网商银行年营收206亿:净利33亿 万向三农与复星卖老股

雷递网 雷建平 5月3日网商银行日前公布2025年的年报。年报显示,网商银行2025年营收为205.63亿元,较上年同期的213.14亿元下降3.5%。网商银行2025年运营利润为33.22亿元,较上年同期的34亿元下降2.3%;净利为32.93亿元,较…...

终极指南:CyberpunkSaveEditor - 免费开源《赛博朋克2077》存档编辑器完全教程

终极指南:CyberpunkSaveEditor - 免费开源《赛博朋克2077》存档编辑器完全教程 【免费下载链接】CyberpunkSaveEditor A tool to edit Cyberpunk 2077 sav.dat files 项目地址: https://gitcode.com/gh_mirrors/cy/CyberpunkSaveEditor 想要完全掌控夜之城的…...

ai赋能开发:在idea社区版中集成快马ai实现智能编程辅助

AI赋能开发:在IDEA社区版中集成快马AI实现智能编程辅助 最近在尝试将AI能力集成到日常开发工具中,发现IDEA社区版结合快马平台的AI模型可以打造一个相当实用的智能编程助手。这个项目原型主要实现了代码质量自动审查、智能补全和自然语言转代码等功能&a…...

UCIe物理层实战:从链路初始化到坏Lane替换,手把手教你理解芯片互连的‘握手’与‘修复’

UCIe物理层实战:从链路初始化到坏Lane替换,手把手教你理解芯片互连的‘握手’与‘修复’ 在Chiplet架构成为半导体行业新宠的今天,UCIe(Universal Chiplet Interconnect Express)作为开放标准正逐步统一异构芯片的互连…...

别再只装不用了!用Docker Compose一键部署Neo4j,并导入你的第一个电影关系图谱

用Docker Compose快速搭建Neo4j并构建电影关系图谱 在数据关系日益复杂的今天,传统关系型数据库在处理多层级关联时常常力不从心。图数据库以其直观的节点-关系模型,成为解决这类问题的利器。Neo4j作为图数据库领域的佼佼者,凭借其强大的Cyph…...

告别localhost!Vite+Vue3项目打包后,直接双击index.html就能运行的保姆级教程

告别localhost!ViteVue3项目打包后直接双击运行的终极指南 每次开发完Vue项目,最尴尬的时刻莫过于把打包好的dist文件夹发给产品经理,对方却打不开index.html。作为前端开发者,我们都经历过这种窘境——明明在开发环境运行得好好的…...

提升直播平台开发效率:用快马AI一键生成fenghud.live核心模块代码

最近在开发一个类似fenghud.live的直播平台项目时,发现很多功能模块其实都有现成的解决方案,但自己从头写不仅耗时还容易踩坑。后来尝试用InsCode(快马)平台的AI生成代码功能,意外发现能快速产出可直接集成的高质量模块代码,效率提…...

用python开发的工具【Excel智能合并工具】:1分钟合并15个文件×多Sheet,经常处理Excel的你注意啦!

🌈 Hi,~小工具继续,领取方法在文末~📌 常处理Excel的小伙伴此工具不要错过啦!🛠️ 前面分享了【照片批量加水印】-【Excel表格自动合并/拆分】-【批量生成二维码】-【Word自动生成】-【PDF信息提取】-【Exc…...

基于强化学习的GPU内核生成技术优化实践

1. GPU内核生成技术概述GPU内核生成是现代高性能计算中的核心技术,它通过优化计算密集型任务的并行执行效率来提升整体性能。与传统的CPU编程不同,GPU编程需要充分利用硬件的并行计算能力,将计算任务分解为多个线程块(Thread Block)和线程网格…...

企业级AI模型安全部署:NVIDIA NIM微服务架构解析

1. 企业级AI模型安全部署的核心挑战 在金融、医疗、政务等高度敏感的行业领域,AI模型部署面临三重矛盾:创新效率与合规要求的矛盾、数据价值与隐私风险的矛盾、技术迭代与系统稳定的矛盾。以某跨国银行为例,其AI团队在测试开源LLM时发现&…...

别再折腾CUDA版本了!手把手教你用Anaconda+Python3.10一键搞定PaddlePaddle-GPU 2.6.0

深度学习环境配置革命:用Anaconda三分钟搞定PaddlePaddle-GPU 每次看到"CUDA版本不兼容"的报错提示,是不是感觉血压瞬间飙升?作为过来人,我完全理解那种在NVIDIA驱动、CUDA、cuDNN版本地狱里反复挣扎的痛苦。但今天我要…...

从SAM文件到NTLM Hash:深入理解Windows 10密码存储机制与安全演进

Windows 10密码存储机制:从SAM文件到NTLM Hash的安全演进 在数字化时代,操作系统安全始终是技术领域的热点话题。作为全球使用最广泛的桌面操作系统,Windows的密码存储机制经历了多次重大变革,每一次升级都反映了安全理念的进步与…...

基于MCP协议构建Gemini研究助手:工具调用与智能体开发实践

1. 项目概述与核心价值 最近在折腾AI智能体(Agent)和工具调用(Tool Calling)相关的东西,发现了一个挺有意思的项目: capyBearista/gemini-researcher-mcp 。简单来说,这是一个为Google的Gemi…...

Windows系统wpnapps.dll文件丢失找不到无法启动程序解决

在使用电脑系统时经常会出现丢失找不到某些文件的情况,由于很多常用软件都是采用 Microsoft Visual Studio 编写的,所以这类软件的运行需要依赖微软Visual C运行库,比如像 QQ、迅雷、Adobe 软件等等,如果没有安装VC运行库或者安装…...