精华内容
下载资源
问答
  • 时间序列平稳性检验方法分析及应用研究,陈海龙,王钧婷,判断时间序列的平稳性是时间序列分析的重要环节。由于平稳信号与非平稳信号的性质差别显著,所以判断时间序列的平稳性非常重要。
  • 时间序列平稳性检验—R语言KPSS检验

    千次阅读 2019-12-04 10:07:56
    对于一个时间序列,例如用R自带的google股价变化数据goog(可以通过导入fpp2包之后直接使用goog这个数组变量,这里仅为示例,代指要检验时间序列或者数组)。 1.1 对goog进行KPSS检验 R代码为 library(urca) summary...

    1.R语言函数ur.kpss()

    用R自带的google股价变化数据goog为例(可以通过导入fpp2包之后直接使用goog这个数组变量)。

    1.1 对goog进行KPSS检验

    R代码为

    library(urca)
    summary(ur.kpss(goog))
    

    输出结果如下:
    在这里插入图片描述这个结果怎么解释?没找到官方的太严格的资料。我根据一些参考资料中做了一些推断,仅供参考。

    (1)比较显然地,检验的结果是用 Value of test-statistic:10.7223,来和下面最下面的4个显著性水平(significance level,10pct表示10%,5pct表示5%)和对应的临界值(critical values)来比较。

    (2)KPSS原假设H0是——序列是平稳的,KPSS检验是单边检验。
    假设检验的显著性水平的含义是
              P(拒绝H0 | H0为真)=α
    而拒绝H0是指发生 Value of test-statistic>Critical value【这个地方是我猜的或者推断的】。显著性水平的含义亦即

    P( Value of test-statistic> Critical value | H0为真)=Critical value for a sigificance level
    

    (3)本次检验中Value of test-statistic=10.7223>0.739,也就是在“序列为平稳序列这个假设前提下,概率0.01的小概率事件发生了”。所以原假设为假。于是得出结论:原序列是非平稳序列。

    1.2 对diff(goog)进行KPSS检验

    我们都知道,差分是把非平稳序列转化为平稳序列的一种方法。对goog数据做一阶差分操作,重新进行检验,

    summary(ur.kpss(diff(goog)))
    

    运行结果如下:
    在这里插入图片描述显然地,Value of test-statistic 越小越好,小于最左边的 critical values。检验结果没有得出拒绝原假设的检验结果,所以不能拒绝原假设。

    1.3 其他情况

    如果 Value of test-statistic落在不同的临界点之间,可以根据假设检验的原理来得出结论。其他的检验方法一般都用5%的临界点作为判断标准。

    图片输出中的 Test is of type:mu with 7 lags的计算方法可能是trunc(3·sqrt(n)/13),其中n是数组或者时间序列的长度,本例中length(goog)=1000。所以trunc(3·sqrt(1000)/13)=7。

    2.参考资料

    一本教材中平稳性检验的一小节

    关于KPSS的一个资料

    关于KPSS中lags计算方法的一个资料

    展开全文
  • 时间序列 简而言之,时间序列就是带时间戳的数值序列。...所谓时间序列平稳性,是指时间序列的均值,方差以及协方差都是常数,与时间t无关。这样的序列才可以作为我们基于历史预测未来的基础。 满足以上条件属...

    转自:https://www.jianshu.com/p/d9a205ec284b

    时间序列

    简而言之,时间序列就是带时间戳的数值序列。股票,期货等金融数据就是典型的时间序列。量化的过程,很多时间都是在分析时间序列,找到稳定赚钱因子。

    平稳性定义

    所谓时间序列的平稳性,是指时间序列的均值,方差以及协方差都是常数,与时间t无关。这样的序列才可以作为我们基于历史预测未来的基础。
    满足以上条件属于严平稳,一般达到弱平稳都是可以接受的。

    平稳性是当前时间序列分析的前提条件,因为我们的建模过程基本都是以大数定理和中心极限定理为理论基础(比如ARMA,ARIMA模型等),而大数定理和中心极限定理也是有前提条件的,那就是要求样本同分布(等价于时间序列的平稳性)。如果这个条件不满足,那么我们的很多分析结果是不可靠的。

    1. 白噪声属于平稳序列,因为它的均值为0,方差为常数,协方差为0。但白噪声属于纯随机序列,基于它预测是没有意义的。
    2. 随机游走属于非平稳序列,因为它的均值为常数,但是方差为非常数,与时间t有关。

    平稳性检验

    对于一个时间序列,我们如何处理呢?
    1 检验序列是否平稳性序列
    2 如果序列非平稳,通过数学变换为平稳性序列
    3 检验序列是否白噪声
    4 下一步

    平稳性检验常用方法有ADF检验和KPSS检验。

    平稳性检验-ADF Test

    ADF Test:Augmented Dickey-Fuller Test
    首先假设时间序列是不稳定的,根据假设求得的置信度P值如果小于阈值(一般为1%),那么我们认为假设不成立,时间序列是稳定的;反之,假设成立。
    Python和R都有相应平稳性检验的模块。
    Python需安装statsmodels模块。
    R需安装tseries模块。
    这里以Python为例:

    #python
    import numpy as np
    from statsmodels.tsa.stattools import adfuller
    ss = np.random.randn(10000)
    adfuller(ss)
    
    #(-100.04436307924058,
    #  0.0, ##(P Value)
    #  0, 
    #  9999,
    #  {'1%': -3.4310041633725734,
    #    '10%': -2.566923883481157,
    #    '5%': -2.861829101294412},
    #  28143.20974307366)
    

    检验结果的第二项为P值,这里为0.0%,远低于阈值1%,因为我们检验的是一个标准正太分布,因此假设肯定是不成立的,我们的序列为稳定性时间序列。

    平稳性检验-KPSS Test

    KPSS Test:Kwiatkowski-Phillips-Schmidt-Shin Test
    首先假设序列是平稳的,根据假设求得的P值如果小于阈值(一般为5%),那么假设不成立;反之,假设成立。仍以Python为例:

    #python
    import numpy as np
    from statsmodels.tsa.stattools import kpss
    ss = np.random.randn(10000)
    kpss(ss)
    
    # (0.09407968315491025,
    #   0.1, ##(P Value)
    #   38,
    # {'1%': 0.739, '10%': 0.347, '2.5%': 0.574, '5%': 0.463})
    

    检验结果的第二项为P值,这里为10%,远高于阈值5%,因此假设是成立的,我们的序列为稳定性时间序列。

    白噪声检验-Ljung-Box Test

    首先假设序列为白噪声,根据假设求得的P值如果小于阈值(一般为5%),那么假设不成立;反之,假设成立。仍以Python为例:

    #python
    import numpy as np
    from statsmodels.stats.diagnostic import acorr_ljungbox as ljbox
    ss = np.random.randn(10000)
    ljbox(ss, lags=1)
    
    #  (array([0.00307541]), 
    #  array([0.95577487]))  ##P-Value
    

    检验结果的第二项为P值,这里为95.57%,远高于阈值5%,因此假设是成立的,我们的序列为白噪声序列(实际是随机序列)。

    峰度 - Kurtosis

    峰度表征统计分布在平均值处峰值高低的度量,反应了峰部的尖度。
    峰度按数值包括三类:

    1. 正态分布(Kurtosis = 0)
    2. 厚尾分布(Kurtosis > 0)
    3. 瘦尾分布(Kurtosis < 0)
      金融时间序列一般都是厚尾分布。
      Python峰度计算采用scipy模块,R峰度计算采用moments模块。
      这里需要说明的是:Python峰度计算是以0为中间值,R中峰度计算是以3位中间值(R峰度计算过程中没有减3的操作)。
      以Python为例:
    #python
    import numpy as np
    from scipy.stats import kurtosis
    ss = np.random.randn(10000)
    kurtosis(ss)
    
    # -0.045421184138716875
    

    偏度 - Skewness

    偏度表征统计分布偏斜方向和程度的度量,是统计分布非对称程度的数字特征。
    偏度按数值包括三类:

    1. 正态分布(skew = 0)
    2. 左偏分布(skew < 0),峰在左边。
    3. 右偏分布(skew > 0),峰在右边。
      以Python为例:
    #python
    import numpy as np
    from scipy.stats import skew
    ss = np.random.randn(10000)
    skew(ss)
    
    # -0.0071660377825474705 
    

    非平稳变换

    非平稳的序列如何变换成平稳系列呢?
    一般有如下几种方法:

    1. 对数变换
    2. 平滑变换(移动平均,指数平均等)
    3. 差分变换(一阶差分,二阶差分,高阶差分等)
    4. 分解变换(多成分分解 = 长期趋势 + 中期趋势 + 随机)

    这里就不展开了。



    原作者:北冥Master
    链接:https://www.jianshu.com/p/d9a205ec284b
    来源:简书
    简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

    展开全文
  • 平稳性定义所谓时间序列平稳性,是指时间序列的均值,方差以及协方差都是常数,与时间t无关。这样的序列才可以作为我们基于历史预测未来的基础。满足以上条件属于严平稳,一般达到弱平稳都是可以接受的。平稳性是...

    时间序列

    简而言之,时间序列就是带时间戳的数值序列。股票,期货等金融数据就是典型的时间序列。量化的过程,很多时间都是在分析时间序列,找到稳定赚钱因子。

    平稳性定义

    所谓时间序列的平稳性,是指时间序列的均值,方差以及协方差都是常数,与时间t无关。这样的序列才可以作为我们基于历史预测未来的基础。

    满足以上条件属于严平稳,一般达到弱平稳都是可以接受的。

    平稳性是当前时间序列分析的前提条件,因为我们的建模过程基本都是以大数定理和中心极限定理为理论基础(比如ARMA,ARIMA模型等),而大数定理和中心极限定理也是有前提条件的,那就是要求样本同分布(等价于时间序列的平稳性)。如果这个条件不满足,那么我们的很多分析结果是不可靠的。

    白噪声属于平稳序列,因为它的均值为0,方差为常数,协方差为0。但白噪声属于纯随机序列,基于它预测是没有意义的。

    随机游走属于非平稳序列,因为它的均值为常数,但是方差为非常数,与时间t有关。

    平稳性检验

    对于一个时间序列,我们如何处理呢?

    1 检验序列是否平稳性序列

    2 如果序列非平稳,通过数学变换为平稳性序列

    3 检验序列是否白噪声

    4 下一步

    平稳性检验常用方法有ADF检验和KPSS检验。

    平稳性检验-ADF Test

    ADF Test:Augmented Dickey-Fuller Test

    首先假设时间序列是不稳定的,根据假设求得的置信度P值如果小于阈值(一般为1%),那么我们认为假设不成立,时间序列是稳定的;反之,假设成立。

    Python和R都有相应平稳性检验的模块。

    Python需安装statsmodels模块。

    R需安装tseries模块。

    这里以Python为例:

    #python

    import numpy as np

    from statsmodels.tsa.stattools import adfuller

    ss = np.random.randn(10000)

    adfuller(ss)

    #(-100.04436307924058,

    # 0.0, ##(P Value)

    # 0,

    # 9999,

    # {'1%': -3.4310041633725734,

    # '10%': -2.566923883481157,

    # '5%': -2.861829101294412},

    # 28143.20974307366)

    检验结果的第二项为P值,这里为0.0%,远低于阈值1%,因为我们检验的是一个标准正太分布,因此假设肯定是不成立的,我们的序列为稳定性时间序列。

    平稳性检验-KPSS Test

    KPSS Test:Kwiatkowski-Phillips-Schmidt-Shin Test

    首先假设序列是平稳的,根据假设求得的P值如果小于阈值(一般为5%),那么假设不成立;反之,假设成立。仍以Python为例:

    #python

    import numpy as np

    from statsmodels.tsa.stattools import kpss

    ss = np.random.randn(10000)

    kpss(ss)

    # (0.09407968315491025,

    # 0.1, ##(P Value)

    # 38,

    # {'1%': 0.739, '10%': 0.347, '2.5%': 0.574, '5%': 0.463})

    检验结果的第二项为P值,这里为10%,远高于阈值5%,因此假设是成立的,我们的序列为稳定性时间序列。

    白噪声检验-Ljung-Box Test

    首先假设序列为白噪声,根据假设求得的P值如果小于阈值(一般为5%),那么假设不成立;反之,假设成立。仍以Python为例:

    #python

    import numpy as np

    from statsmodels.stats.diagnostic import acorr_ljungbox as ljbox

    ss = np.random.randn(10000)

    ljbox(ss, lags=1)

    # (array([0.00307541]),

    # array([0.95577487])) ##P-Value

    检验结果的第二项为P值,这里为95.57%,远高于阈值5%,因此假设是成立的,我们的序列为白噪声序列(实际是随机序列)。

    峰度 - Kurtosis

    峰度表征统计分布在平均值处峰值高低的度量,反应了峰部的尖度。

    峰度按数值包括三类:

    正态分布(Kurtosis = 0)

    厚尾分布(Kurtosis > 0)

    瘦尾分布(Kurtosis < 0)

    金融时间序列一般都是厚尾分布。

    Python峰度计算采用scipy模块,R峰度计算采用moments模块。

    这里需要说明的是:Python峰度计算是以0为中间值,R中峰度计算是以3位中间值(R峰度计算过程中没有减3的操作)。

    以Python为例:

    #python

    import numpy as np

    from scipy.stats import kurtosis

    ss = np.random.randn(10000)

    kurtosis(ss)

    # -0.045421184138716875

    偏度 - Skewness

    偏度表征统计分布偏斜方向和程度的度量,是统计分布非对称程度的数字特征。

    偏度按数值包括三类:

    正态分布(skew = 0)

    左偏分布(skew < 0),峰在左边。

    右偏分布(skew > 0),峰在右边。

    以Python为例:

    #python

    import numpy as np

    from scipy.stats import skew

    ss = np.random.randn(10000)

    skew(ss)

    # -0.0071660377825474705

    非平稳变换

    非平稳的序列如何变换成平稳系列呢?

    一般有如下几种方法:

    对数变换

    平滑变换(移动平均,指数平均等)

    差分变换(一阶差分,二阶差分,高阶差分等)

    分解变换(多成分分解 = 长期趋势 + 中期趋势 + 随机)

    这里就不展开了。

    展开全文
  • 平稳性定义所谓时间序列平稳性,是指时间序列的均值,方差以及协方差都是常数,与时间t无关。这样的序列才可以作为我们基于历史预测未来的基础。满足以上条件属于严平稳,一般达到弱平稳都是可以接受的。平稳性是...

    时间序列

    简而言之,时间序列就是带时间戳的数值序列。股票,期货等金融数据就是典型的时间序列。量化的过程,很多时间都是在分析时间序列,找到稳定赚钱因子。

    平稳性定义

    所谓时间序列的平稳性,是指时间序列的均值,方差以及协方差都是常数,与时间t无关。这样的序列才可以作为我们基于历史预测未来的基础。

    满足以上条件属于严平稳,一般达到弱平稳都是可以接受的。

    平稳性是当前时间序列分析的前提条件,因为我们的建模过程基本都是以大数定理和中心极限定理为理论基础(比如ARMA,ARIMA模型等),而大数定理和中心极限定理也是有前提条件的,那就是要求样本同分布(等价于时间序列的平稳性)。如果这个条件不满足,那么我们的很多分析结果是不可靠的。

    白噪声属于平稳序列,因为它的均值为0,方差为常数,协方差为0。但白噪声属于纯随机序列,基于它预测是没有意义的。

    随机游走属于非平稳序列,因为它的均值为常数,但是方差为非常数,与时间t有关。

    平稳性检验

    对于一个时间序列,我们如何处理呢?

    1 检验序列是否平稳性序列

    2 如果序列非平稳,通过数学变换为平稳性序列

    3 检验序列是否白噪声

    4 下一步

    平稳性检验常用方法有ADF检验和KPSS检验。

    平稳性检验-ADF Test

    ADF Test:Augmented Dickey-Fuller Test

    首先假设时间序列是不稳定的,根据假设求得的置信度P值如果小于阈值(一般为1%),那么我们认为假设不成立,时间序列是稳定的;反之,假设成立。

    Python和R都有相应平稳性检验的模块。

    Python需安装statsmodels模块。

    R需安装tseries模块。

    这里以Python为例:

    #python

    import numpy as np

    from statsmodels.tsa.stattools import adfuller

    ss = np.random.randn(10000)

    adfuller(ss)

    #(-100.04436307924058,

    # 0.0, ##(P Value)

    # 0,

    # 9999,

    # {"1%": -3.4310041633725734,

    # "10%": -2.566923883481157,

    # "5%": -2.861829101294412},

    # 28143.20974307366)

    检验结果的第二项为P值,这里为0.0%,远低于阈值1%,因为我们检验的是一个标准正太分布,因此假设肯定是不成立的,我们的序列为稳定性时间序列。

    平稳性检验-KPSS Test

    KPSS Test:Kwiatkowski-Phillips-Schmidt-Shin Test

    首先假设序列是平稳的,根据假设求得的P值如果小于阈值(一般为5%),那么假设不成立;反之,假设成立。仍以Python为例:

    #python

    import numpy as np

    from statsmodels.tsa.stattools import kpss

    ss = np.random.randn(10000)

    kpss(ss)

    # (0.09407968315491025,

    # 0.1, ##(P Value)

    # 38,

    # {"1%": 0.739, "10%": 0.347, "2.5%": 0.574, "5%": 0.463})

    检验结果的第二项为P值,这里为10%,远高于阈值5%,因此假设是成立的,我们的序列为稳定性时间序列。

    白噪声检验-Ljung-Box Test

    首先假设序列为白噪声,根据假设求得的P值如果小于阈值(一般为5%),那么假设不成立;反之,假设成立。仍以Python为例:

    #python

    import numpy as np

    from statsmodels.stats.diagnostic import acorr_ljungbox as ljbox

    ss = np.random.randn(10000)

    ljbox(ss, lags=1)

    # (array([0.00307541]),

    # array([0.95577487])) ##P-Value

    检验结果的第二项为P值,这里为95.57%,远高于阈值5%,因此假设是成立的,我们的序列为白噪声序列(实际是随机序列)。

    峰度 - Kurtosis

    峰度表征统计分布在平均值处峰值高低的度量,反应了峰部的尖度。

    峰度按数值包括三类:

    正态分布(Kurtosis = 0)

    厚尾分布(Kurtosis > 0)

    瘦尾分布(Kurtosis < 0)

    金融时间序列一般都是厚尾分布。

    Python峰度计算采用scipy模块,R峰度计算采用moments模块。

    这里需要说明的是:Python峰度计算是以0为中间值,R中峰度计算是以3位中间值(R峰度计算过程中没有减3的操作)。

    以Python为例:

    #python

    import numpy as np

    from scipy.stats import kurtosis

    ss = np.random.randn(10000)

    kurtosis(ss)

    # -0.045421184138716875

    偏度 - Skewness

    偏度表征统计分布偏斜方向和程度的度量,是统计分布非对称程度的数字特征。

    偏度按数值包括三类:

    正态分布(skew = 0)

    左偏分布(skew < 0),峰在左边。

    右偏分布(skew > 0),峰在右边。

    以Python为例:

    #python

    import numpy as np

    from scipy.stats import skew

    ss = np.random.randn(10000)

    skew(ss)

    # -0.0071660377825474705

    非平稳变换

    非平稳的序列如何变换成平稳系列呢?

    一般有如下几种方法:

    对数变换

    平滑变换(移动平均,指数平均等)

    差分变换(一阶差分,二阶差分,高阶差分等)

    分解变换(多成分分解 = 长期趋势 + 中期趋势 + 随机)

    这里就不展开了。

    展开全文
  • 在做时间序列平稳性检验时,经常会用到ADF检验法 如何用python写一个ADF检验平稳性呢? 又该如何理解ADF检验的结果呢? 很简单: # ADF result = adfuller(y_list) print('The result of ADF: ') print(result) ...
  • 时间序列平稳性检验的matlab函数

    万次阅读 2010-01-12 15:06:00
    matlab有平稳检验的函数。函数说明如下:dfARDTest Augmented Dickey-Fuller unit root test for AR model with drift dfARTest 
  • 实用标准文案 实验一 时间序列数据平稳性检验实验指导 一实验目的 理解经济时间序列存在的不平稳性 掌握对时间序列平稳性检验的步骤和各种方法 认 识利用不平稳的序列进行建模所造成的影响 二基本概念 如果一个随机...
  • 数据挖掘——时间序列算法之平稳性检验平稳时间序列定义时间序列平稳性检验针对平稳和不![在这里插入图片描述](https://img-blog.csdnimg.cn/20200416154317496.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5...
  • Python量化基础:时间序列平稳性检验

    万次阅读 多人点赞 2019-01-31 16:06:43
    时间序列数据的平稳性对于我们采用什么样的分析方式、选择什么样的模型有着至关重要的影响。 我们想一下,假如一个时间序列的波动趋势从来没有稳定过,那么它每个时期的波动对于之后一段时期的影响都是无法预测的,...
  • 时间序列平稳性检验方法汇总。主要检验方法为:DF检验、ADF检验、PP检验、DF-GLS检验、KPSS检验等,含代码示例,并增加了预备知识:时间序列的确定趋势、随机趋势、d阶单整及单位根概念的解释。
  • ppt平稳性的定义;平稳性检验方法(ADF检验);伪回归的定义;协整的定义及检验方法(AEG方法);误差修正模型的含义及表示形式.
  • 时间序列平稳性检验与随机性检验

    万次阅读 多人点赞 2019-04-05 14:42:56
        对于一个时间序列,在进行建模之前,首先需要进行平稳性检验和纯随机性检验,然后根据检验的结果再选择适合的模型。在讲解平稳性和随机性的定义之前,我们先介绍一下时间序列中常用的几个特征统计量。 2.1...
  • 31时间序列平稳性和单位根检验.pptx
  • 时间序列平稳性的统计检验

    万次阅读 2018-01-05 14:27:16
    在实际应用过程中,通常需要对时间序列进行平稳性判断,观察一个序列是否存在某种趋势,以及各时间间隔内折线是否存在 明显的差异。下面介绍一下常用的几种检验方法。 1、绘制时间序列散点图。该方法只能直观、...
  • 3. Python平稳性检验实战 重要性:10分 (1-10)。 时间序列数据的平稳性对于我们采用什么样的分析方式、选择什么样的模型有着至关重要的影响。 我们想一下,假如一个时间序列的波动趋势从来没有稳定过,那么它每...
  • 时间序列分为 S个子序列片断,用周期图方法估计时间序列的谱密度,在此基础上用3σ原理和两因素 方差分析比较各子序列的异同,用以分别检验时间序列的均值函数和协方差函数的平稳性。较其它方法避免了复 杂的计算,...
  • 对序列的平稳性检验中最常用的方法是单位根的检验。单位根检验是指检查序列中是否存在单位根,如果存在单位根就是非平稳时间序列了。下面是找的解释为什么单位根存在就是非平稳时间序列的原因。 作者:五雷 链接...
  • 在使用很多时间序列模型的时候,如 ARMA、ARIMA,都会要求时间序列是平稳的,所以一般在研究一段时间序列的时候,第一步都需要进行平稳性检验,除了用肉眼检测的方法,另外比较常用的严格的统计检验方法就是ADF检验...
  • 以下应用有什么共同点:预测未来三个月的一个家庭的电力消耗;估计在一定时期内道路的交通量;以及预测一个股票在纽约证券交易所上交易的...首先,如果我们希望预测模型工作得很好,使时间序列平稳是关键。为什么?...
  • 在statsmodels.tsa.stattools.adfullerstatsmodels.tsa.stattools.adfuller(x,maxlag = None,regression ='c',autolag ='AIC',store = False,regresults = False )增强Dickey-Fuller单位根检验Augmented Dic...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,082
精华内容 1,232
关键字:

时间序列平稳性检验