时间序列的平稳性

这篇具有很好参考价值的文章主要介绍了时间序列的平稳性。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

什么是平稳性?

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

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

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

为什么平稳性很重要?

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

如何检验平稳性?

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

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

我们将创建几个示例,使用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文章来源地址https://www.toymoban.com/news/detail-415386.html

到了这里,关于时间序列的平稳性的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 应用时间序列分析——有季节效应的非平稳序列分析-R语言

    因素分解理论:                1919年统计学家沃伦·珀森斯(Warren Persons)在他的论文《商业环境的指标》中首次提出了确定性因素分解(time series decomposition)思想。之后,该方法广泛应用于宏观经济领域时间序列的分析和预测。        珀森斯认为尽管不同的经济变量波动特征

    2024年02月03日
    浏览(53)
  • 通过R语言实现平稳时间序列的建模--基础(ARMA模型)

    目录 1. 建模流程 2. 序列平稳性检验和纯随机性检验 2.1 图检验 2.2 单位根检验 3. 模型选择 ​  4. 参数估计 5. 模型检验 5.1 模型显著性检验 5.2 参数显著性检验 6. 模型优化 6.1 AIC准则 6.2 BIC准则 7. 预测 1.1 序列平稳性检验+纯随机性检验 1.2 模型选择 1.3 参数估计 1.4 模型检验 1

    2024年02月06日
    浏览(63)
  • 应用时间序列分析——有季节效应的非平稳序列分析-ARIMA加法模型-R语言

            ARIMA模型也可以对具有季节效应的序列建模。根据季节效应提取的方式不同,又分为ARIMA加法模型和ARIMA乘法模型。         ABIMA加法模型是指序列中季节效应和其他效应之间是加法关系,即                                                            

    2023年04月19日
    浏览(47)
  • R——《时间序列分析——基于R》第5章 无季节效应的非平稳序列分析 习题1

    目录 1.导入数据并绘图 2.进行一阶差分并绘制该序列时序图 3.判断该序列的平稳性与纯随机性 4.考察该序列的自相关系数和偏自相关系数的性质 5.选择适当模型拟合该序列的发展 5.1. ARIMA(1,1,0)不带漂移项 5.2. ARIMA(1,1,0)带漂移项 5.3. ARIMA(0,1,1)不带漂移项   5.4. ARIMA(0,1,1)带漂移项

    2024年02月08日
    浏览(42)
  • 一文速学数模-时序预测模型(二)平稳时间序列预测算法和自回归模型(AR)详解+Python代码实现

    目录 前言 一、平稳时间序列预测算法 1.时间序列的分布、均值和协方差函数 概率分布

    2023年04月08日
    浏览(46)
  • 数据分析-Pandas如何轻松处理时间序列数据

    时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。此处选择巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 N O 2 ​ 数据作为样例。 python数据分析-数据表读写到pandas 经典算法-遗传算法的python实现 经典算法-遗传算法的一个简单例子 大

    2024年01月25日
    浏览(45)
  • 如何对时间序列进行小波分析,得出其周期?

    从信号处理角度进行分析 简单的时间序列直接做各种谱分析(频谱,包络谱,平方包络谱,功率谱,倒谱等等) 比如一些简单的旋转机械振动时间序列信号 ​如果频谱不好分析,那可以分析如下图所示的时间序列的时频谱 ​给个简单的模拟信号的例子 t = 0:1/2000:1-1/2000; dt

    2024年02月04日
    浏览(66)
  • 6 时间序列(不同位置的装置如何建模): GRU+Embedding

           很多算法比赛经常会遇到不同的物体产生同含义的时间序列信息,比如不同位置的时间序列信息,风力发电、充电桩用电。经常会遇到该如此场景,对所有数据做统一处理喂给模型,模型很难学到区分信息,因此设计如果对不同位置的装置做嵌入操作,这也是本文书

    2024年01月23日
    浏览(36)
  • 如何将 Elasticsearch 和时间序列数据流用于可观察性指标 - 8.7

    作者:Nicolas Ruflin Elasticsearch 用于多种数据类型 —— 其中之一就是指标。 随着多年前 Metricbeat 的推出以及后来我们的 APM 代理的推出,指标用例变得更加流行。 多年来,Elasticsearch 在如何处理指标聚合和稀疏文档等方面做出了许多改进。 同时,引入了 TSVB 可视化,使指标可

    2024年02月04日
    浏览(88)
  • 时间序列预测 | Matlab自回归差分移动平均模型ARIMA时间序列预测

    效果一览 文章概述 时间序列预测 | Matlab自回归差分移动平均模型ARIMA时间序列预测,单列数据输入模型 评价指标包括:MAE、RMSE和R2等,代码质量极高,方便学习和替换数据。要求2018版本及以上。 部分源码

    2024年02月13日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包