时间序列的平稳性

news2024/10/5 14:41:58

如何检查时间序列是否平稳,如果它是非平稳的,我们可以怎么处理

当未来的数据与现在相似时,它更容易建模。平稳性描述了时间序列的统计特征不随时间变化的概念。因此一些时间序列预测模型,如自回归模型,依赖于时间序列的平稳性。

什么是平稳性?

平稳性描述了时间序列如何未来保持不变的概念。用数学术语来说,当时间序列的统计特性与时间无关时,它是平稳的,包括

  • 均值不变(为常数)
  • 方差不变
  • 协方差与时间无关

这就是平稳性的弱形式的定义。另一种平稳性是严格平稳性。这意味着相同大小的样本具有相同的分布。由于严格平稳性具有局限性和罕见性,所以本文仅关注弱形式平稳性。

为什么平稳性很重要?

一些时间序列预测模型(例如,自回归模型)需要平稳的时间序列,因为它们更容易建模,因为它们具有恒定的统计属性。因此如果时间序列不是平稳的,就应该尽量让它平稳。

如何检验平稳性?

你可以用两种方法来测试时间序列的平稳性:

  • 直观的方法:肉眼评估
  • 统计方法:单位根检验

我们将创建几个示例,使用Hyndman 和 Athanasopoulos的时间序列分析教材《Forecasting: principles and practice》中提到方法解释平稳性的视觉评估,并扩展它们的用法,并解释使用单位根测试进行的平稳性测试。数据来自R的fma 包。

1、直观地评估平稳性

最简单的方法是将时间序列分成两半,并比较时间序列的前半部分到后半部分的平均值、振幅和周期长度。

  • 均值常数-时间序列前半段的均值应该与后半段的均值相似。
  • 方差常数-时间序列的前半段的振幅应该与后半段相似。
  • 协方差与时间无关——时间序列前半部分的周期长度应该与后半部分的周期长度相似。周期应该在时间上是独立的(例如,不是每周或每月等)。

对于我们的例子,评估结果如下图所示:

2、统计评估平稳性——单位根检验

单位根是一种随机趋势,称为“带漂移的随机游走”。由于随机性无法预测,这意味着:

单位根存在:不稳定(不可预测),单位根不存在:平稳的

为了用单位根检验平稳性,可以将两个这两个假设作为初始假设:

  • 零假设(H0) -时间序列是平稳的(没有单位根存在)
  • 备择假设(H1) -时间序列不是平稳的(存在单位根)

然后根据以下两种方法评估是否拒绝零假设:

p 值方法:

如果 p 值 > 0.05,则无法拒绝原假设。如果 p 值 ≤ 0.05,则拒绝零假设。

临界值法:

如果检验统计量没有临界值那么极端,则无法拒绝原假设。如果检验统计量比临界值更极端,则拒绝原假设。当 p 值接近0.05时,应使用临界值法 。

有几个单位根测试可以用来检查平稳性。本文将重点介绍最流行的2个:

Augmented Dickey-Fuller test 和 Kwiatkowski-Phillips-Schmidt-Shin test

3、Augmented Dickey-Fuller test

Augmented Dickey-Fuller test的假设为:

H0:时间序列不是平稳的,因为有一个单位根(如果p值> 0.05)

H1:时间序列是平稳的,因为没有单位根(如果p值≤0.05)

在Python中,我们可以直接使用statsmodels.tsa.stattools库中的adfuller方法。

 from statsmodels.tsa.stattools import adfuller
 result = adfuller(df["example"].values)

如果我们可以拒绝ADF检验的零假设,则时间序列是平稳的:

下面是样本数据集的ADF测试结果:

4、Kwiatkowski-Phillips-Schmidt-Shin test

Kwiatkowski-Phillips-Schmidt-Shin (KPSS)检验的假设是[4]:

H0:时间序列是平稳的,因为没有单位根(如果p值> 0.05)

H1:时间序列不是平稳的,因为有一个单位根(如果p值≤0.05)

statsmodels.tsa.stattools库中的kpss方法,我们需要使用参数regression = 'ct’来指定检验的零假设是数据是趋势平稳的。

 from statsmodels.tsa.stattools import kpss
 
 result = kpss(df["example"].values, 
               regression = "ct")

如果我们不能拒绝KPSS检验的零假设,则时间序列是平稳的:

下面是样本数据集的KPSS测试结果:

非平稳时间序列数据处理

我们可以对一个非平稳时间序列应用不同的变换,使其接近平稳:因为有几种平稳性类型,所以我们可以结合ADF和KPSS测试来确定要进行哪些变换:

  • 如果ADF测试结果是平稳的,而KPSS测试结果是非平稳的,则时间序列是差分平稳的-对时间序列应用差分,并再次检查平稳。
  • 如果ADF检验结果是非平稳性的,而KPSS检验结果是平稳性的,则该时间序列为趋势平稳的-需要去掉去趋势,并再次检查平稳性。

1、差分

差分计算两个连续观测值之间的差值。它稳定了时间序列的平均值,从而降低了趋势

 df["example_diff"] = df["example"].diff()

2、同过模型拟合去趋势

从非平稳时间序列中去除趋势的一种方法是将一个简单的模型(例如,线性回归)拟合到数据上,然后对该拟合的残差进行建模。

 from sklearn.linear_model import LinearRegression
 
 # Fit model (e.g., linear model)
 X = [i for i in range(0, len(airpass_df))]
 X = numpy.reshape(X, (len(X), 1))
 y = df["example"].values
 model = LinearRegression()
 model.fit(X, y)
 
 # Calculate trend
 trend = model.predict(X)
 
 # Detrend
 df["example_detrend"] = df["example"].values - trend

结果如下:

3、对数变换

对数变换可以稳定时间序列的方差。

 df["example_diff"] = np.log(df["example"].value)

结果如下:

正如你所看到的,模型拟合的去趋势和对数变换都不能使我们的例子时间序列平稳。所以需要结合不同的技术使时间序列平稳。

总结

在时间序列预测中,具有恒定统计属性(均值、方差和协方差)且与时间无关的时间序列被描述为平稳的。由于稳定的统计特征,平稳时间序列比非平稳时间序列更容易建模。所以很多时间序列预测模型都假设了平稳性。

平稳性可以通过目测或统计方法进行检查。统计方法检查单位根,最流行的两种单位根测试是ADF和KPSS。这两种工具都可以在Python stattools库中找到。

如果时间序列是非平稳的,可以尝试通过差分、对数转换或去除趋势来使其接近平稳。

https://avoid.overfit.cn/post/88bce32903cd4aa4a04ad4fe58777372

作者:Leonie Monigatti

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/416626.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

IoC 之 Spring 统一资源加载策略【Spring源码】

《JavaPub源码》 文末是系列文章 IoC 之 Spring 统一资源加载策略 Spring 框架的核心是 IoC(Inversion of Control),它将应用程序的对象依赖关系管理和控制反转到容器中。在 Spring IoC 容器中,组件的创建和配置是通过外部配置…

IDEA 运行启动 pulsar-manager项目

IDEA 运行 pulsar-manager项目(gradle) 1、下载pulsar-manager源码 giithub地址 smn-manager 2、将项目导入IDEA并初始化项目 问题:SSL peer shut down incorrectly 将https改成http之后又会出现 Server returned HTTP response code: …

服务(第四篇)Apache的网页优化

一、网页压缩 ①首先检查是否安装 mod_deflate 模块 ②如果没有安装mod_deflate 模块,重新编译安装 Apache 添加 mod_deflate 模块 yum -y install gcc gcc-c pcre pcre-devel zlib-devel cd /opt/httpd-2.4.29/ ./configure \ --prefix/usr/local/httpd \ --enabl…

HDFS学习笔记 【Namenode/DN管理】

说明 DN管理管理了什么? NN上如何表示DN DN存储和块的关系 梳理DatanodeManager存储类 DatanodeDescriptor DN的抽象,依次继承。每一层增加一点额外的信息。 DatanodeId 基本的DN信息,hostname,数据传输接口,info服…

QTableView 设置selection-background-color和border不同时生效问题记录

问题: qtableview在使用过程种设置qss样式,设置选中时的背景色,以及边框颜色,不能同时生效。 解决: 在qss中设置QTableView的样式时,对于item项,selection-background-color的参数设置应该分…

在将公司“一拆六”后,阿里巴巴未来将释放出哪些投资价值?

来源:猛兽财经 作者:猛兽财经 阿里巴巴为何要将公司拆分为六大业务集团 3月28日,阿里巴巴集团董事会主席兼首席执行官张勇发布全员信,宣布启动“16N”组织变革,将公司拆分为六大业务集团和多家业务分公司。 在阿里巴巴…

关于FPGA(Vivado)后仿真相关问题的探讨

FPGA后仿真时,相比于功能仿真增加了门延时和布线延时,相对于门级仿真增加了布线延时,因此后仿真相比于功能仿真具有不同的特点。 下面所示的代码在功能仿真时是正确的的,但在后仿真时,似乎是有问题的。功能很简…

大数据项目组-月度考核汇报0102

目录 01-2023年02月-月度考核汇报 2月份完成项目情况 2月份学习情况 3月份学习计划 老师点评 02-2023年03月-月度考核汇报 项目完成情况 本月学习内容 下月学习计划 老师点评 01-2023年02月-月度考核汇报 2月份完成项目情况 MySQL数据同步到ElasticSearch任务进展&a…

linux shell 操作二进制文件(xxd、dd)

1&#xff0c;生成一个二进制文件 dd 工具 # 全零 二进制文件 dd if/dev/zero of1.bin bs1 count1024#全0xff tr \000 \377 < /dev/zero | dd ofall_0xff.bin bs1 count1024 > /dev/null xxd 工具&#xff1a;只能改单个地址 # echo "0x123" | xxd -r – xx…

【华为od2023-C++版】字符串重新排列、字符串重新排序

华为od机试题C2023个人练习使用 字符串重新排列、字符串重新排序 题目描述 给定一个字符串s&#xff0c;s包括以空格分隔的若干个单词&#xff0c;请对s进行如下处理后输出:1、单词内部调整:对每个单词字母重新按字典序排序Q 2、单词间顺序调整: 1)统计每个单词出现的次数&a…

算法刷题日志

今天是星期几就加上多少天在最后 public class Main {public static void main(String[] args) {System.out.println(Math.pow(20, 22) % 7 6);} }这题是判断左右回文&#xff0c;且要保持单调性&#xff0c;因为回文数左右对称所以只需要判断左边是否单调递增。 public class…

模拟信号隔离放大器变送器 导轨安装DIN11 IPO EM系列

概述&#xff1a; 导轨安装DIN11 IPO EM系列模拟信号隔离放大器是一种将输入信号隔离放大、转换成按比例输出的直流信号混合集成电路。产品广泛应用在电力、远程监控、仪器仪表、医疗设备、工业自控等需要电量隔离测控的行业。该模块内部嵌入了一个高效微功率的电源&#xff0…

yolov5详解与改进

https://github.com/z1069614715/objectdetection_script YOLOV5改进-Optimal Transport Assignment Optimal Transport Assignment&#xff08;OTA&#xff09;是YOLOv5中的一个改进&#xff0c;它是一种更优的目标检测框架&#xff0c;可以在保证检测精度的同时&#xff0c…

研究的艺术 (The craft of research) 读书笔记

前言 如果你对这篇文章感兴趣&#xff0c;可以点击「【访客必读 - 指引页】一文囊括主页内所有高质量博客」&#xff0c;查看完整博客分类与对应链接。 对于研究者而言&#xff0c;写作是一件很重要的事&#xff0c;好的写作不仅能让更多人愿意读&#xff0c;获得更大影响力&…

k8s学习-CKS真题-K8S安全策略PodSecurityPolicy

目录题目环境搭建解题参考题目 Task 使用 Trivy 开源容器扫描器检测 namespace kamino 中 Pod 使用的具有严重漏洞的镜像。 查找具有 High 或 Critical 严重性漏洞的镜像&#xff0c;并删除使用这些镜像的 Pod。 注意&#xff1a;Trivy 仅安装在 cluster 的 master 节点上&…

开源的全文搜索引擎总结,chatbot和chatgpt项目必备资源

全文搜索引擎就是通过从互联网上提取的各个网站的信息&#xff08;以网页文字为主&#xff09;而建立的数据库中&#xff0c;检索与用户查询条件匹配的相关记录&#xff0c;然后按一定的排列顺序将结果返回给用户。 1、Apache Lucene Java 全文搜索框架 许可证&#xff1a;Apa…

中文英文翻译-英翻中文在线翻译

如果您需要将大量的英文文件或网页翻译成中文&#xff0c;那么我们的批量翻译英文翻译中文的软件将是您最佳的选择。我们的软件是一款高效、准确、节省时间的翻译工具&#xff0c;可以在最短时间内完成大量英文文本的翻译&#xff0c;让您在工作生活中处处流畅地处理英语文本。…

【云原生进阶之容器】第六章容器网络6.4.3--Flannel网络模式

《云原生进阶之容器》专题索引: 第一章Docker核心技术1.1节——Docker综述第一章Docker核心技术1.2节——Linux容器LXC第一章Docker核心技术1.3节——命名空间Namespace第一章Docker核心技术1.4节——chroot技术第一章Docker核心技术1.5.1节——cgroup综述

算法套路八——二叉树深度优先遍历(前、中、后序遍历)

算法套路八——二叉树深度优先遍历&#xff08;前、中、后序遍历&#xff09; 算法示例&#xff1a;LeetCode98&#xff1a;验证二叉搜索树 给你一个二叉树的根节点 root &#xff0c;判断其是否是一个有效的二叉搜索树。 有效 二叉搜索树定义如下&#xff1a; 节点的左子树只…

网络原理——网络协议

目录传输层协议TCP协议TCP协议格式段TCP原理连接管理可靠传输流量控制拥塞控制延迟应答和捎带应答错误检测TCP异常UDP协议UDP协议格式段UDP协议特点无连接不可靠面向数据报大小受限网络层协议IP协议数据链路层协议​以太网MTUARP协议传输层协议 ​ 传输层负责数据能够从发送端…