精华内容
下载资源
问答
  • 人工生成序列和实测水文序列分析结果均显示,周期和趋势对随机成分的平稳性检验有很大影响,随着序列信噪比增大,检验结果准确性变差.相比常规方法直接对原序列进行分析处理做法,所提方法可首先准确分离确定...
  • 而对于更一般信号的平稳性检验的研究还没有取得太多成果。文献[2,3]中又提到了这一问题,并且提出了一种新的检验平稳性框架。这一框架混合了时频透视法和有名的替代数据法。它的基本思想是引入“可控
  • 而对于更一般信号的平稳性检验的研究还没有取得太多成果。文献[2,3]中又提到了这一问题,并且提出了一种新的检验平稳性框架。这一框架混合了时频透视法和有名的替代数据法。它的基本思想是引入“可控
  • R语言:平稳性的检验1

    千次阅读 2020-04-13 15:51:37
    对序列的平稳性的检验有两种方法:一种是图检验方法,即根据时序图和自相关图所显示特征做出判断;一种是统计检验方法,即构造检验统计量进行假设检验。 图检验方法是一种操作简便、运用广泛的平稳性判别方法。它...

    对序列的平稳性的检验有两种方法:一种是图检验方法,即根据时序图和自相关图所显示的特征做出判断;一种是统计检验方法,即构造检验统计量进行假设检验。

    图检验方法是一种操作简便、运用广泛的平稳性判别方法。它的缺点是判别结论带有很强的主观色彩,所以最好能用统计检验方法加以辅助判断。

    目前最常用的平稳性统计检验方法是单位根检验(unit root test)。

    图检验

    时序图检验
    根据平稳时间序列均值、方差为常数的性质,平稳序列的时序图应该显示出该序列始终在一个常数值附近随机波动,而且波动范围有界的特点。如果序列的时序图显示出该序列有明显的趋势性或周期性,那么它通常不是平稳序列。根据这个性质,对于很多非平稳序列,可以通过查看它的时序图将其识别出来。(一定能判断不是平稳序列,不一定能判断是平稳序列)

    1.绘制1964-1999年中国纱年产量序列时序图。

    > sha<-read.table("file4.csv",sep=",",header=T)
    > output<-ts(sha$output,start=1964)
    > plot(output)
    

    在这里插入图片描述
    上图给我们提供的信息非常明确,中国纱年产量序列有明显的递增趋势,所以它一定不是平稳序列。

    2.绘制1962年至1975年12月平均每头奶牛月产奶量序列时序图。

    > a<-read.table("file5.csv",sep=",",header=T)
    > milk<-ts(a$milk,start=c(1962,1),frequency=12)
    > plot(milk)
    

    在这里插入图片描述
    上图清晰地显示平均每头奶牛的月产奶量以年为周期呈现出规则的周期性。除此之外,还有明显的逐年递增趋势,显然该序列也一定不是平稳序列。

    3.绘制1949-1998年北京市每年最高气温序列时序图。

    > b<-read.table("file6.csv",sep=",",header=T)
    > temp<-ts(b$temp,start=1949)
    > plot(temp)
    

    在这里插入图片描述
    上图显示北京市每年的最高气温始终围绕在37℃附近随机波动,没有明显趋势或周期,基本可以视为平稳序列。但为了稳妥起见,我们还需要利用自相关图进一步辅助识别。

    自相关图检验
    平稳序列通常具有短期相关性,该性质用自相关系数来描述就是随着延迟期数k的增加,平稳序列的自相关系数会很快地衰减向零,反之,非平稳序列的自相关系数衰减向零的速度通常比较慢,这就是我们利用自相关图进行平稳性判断的标准。
    1.绘制1964-1999年中国纱年产量序列自相关图。

    > acf(output,lag=25)
    

    在这里插入图片描述
    从上图中我们发现序列的自相关系数递减到零的速度相当缓慢,在很长的延迟时期里,自相关系数一直为正,而后又一直为负。在自相关图上显示出明显的三角对称性,这是具有单调趋势的非平稳序列的一种典型的自相关图形式,这和该序列时序图所显示的显著的单调递增特点是一致的。

    2.绘制1962年至1975年12月平均每头奶牛月产奶量序列自相关图

    > acf(milk)
    

    在这里插入图片描述
    自相关图显示序列自相关系数长期位于零轴的一边,这是具有单调趋势序列的典型特征。同时自相关图呈现出明显的正弦波动规律,这是具有周期变化规律的非平稳序列的典型特征。自相关图显示出来的这两个性质和该序列时序图显示出来的带长期递增趋势的周期性是非常吻合的。

    3.绘制1949-1998年北京市每年最高气温序列自相关图

    > acf(temp)
    

    在这里插入图片描述
    自相关图显示该序列的自相关系数一直都比较小,始终控制在2倍标准差范围以内,可以认为该序列自始至终都在零轴附近波动,这是随机性非常强的平稳时间序列通常具有的自相关特征。

    展开全文
  • ARMA模型的平稳检验及预处理

    千次阅读 2010-07-23 15:06:00
    <br /> 平稳时间序列是ARMA模型建模前提,对时间序列进行平稳性的判断是预测首要步骤。一般而言,所谓平稳时间序列是指宽平稳过程,即是一阶距与时间无关,二阶距只与时间间隔有关。几种判断方法:1...

              平稳时间序列是ARMA模型的建模前提,对时间序列进行平稳性的判断是预测的首要步骤。一般而言,所谓的平稳时间序列是指宽平稳过程,即是一阶距与时间无关,二阶距只与时间间隔有关。有几种判断方法:1)数据图直接检验法。画出X(t)的图像,当x(t)围绕某一水平线上下波动而无明显上升、下降或周期趋势时,则认为x(t)是平稳的。(简单直接,我喜欢!)

    2)自相关、偏相关函数检验法。一个零均值平稳序列的自相关函数和偏自相关函数要么是截尾的,要么是拖尾的。因此,如果一个序列零均值化以后的自相关函数或偏自相关函数既不截尾,又不拖尾则可以断定该序列时非平稳的。(方法有点晕,还需要再查查资料??)

    3)特征根检验法。先拟合序列的适应模型,然后求由适应模型的参数组成的特征方程的特征根,若所有的特征根都满足平稳性条件,abs(namta)<1则可认为该序列时平稳的,否则该序列是非平稳的。其中namta为特征根。

    4)Rk检验。根据Green函数Gj与自协方差函数Rk之间的关系,当{xt}是平稳时间序列时,Gj的极限趋于0,表示稳定系统的单位脉冲响应最终将衰减至0。(见杨叔子p181)。


              事实上,除了平稳性检验外,还有正态性检验,零均值性检验。正态性检验往往可以省略,零均值性可以根据工程实际来判断。


               数据预处理一般包括了剔除野点,平稳化,零均值化。剔除野点只需要根据性x(t)的图形,去除一些太离谱的点即可。平稳化的实质是将数据的趋势性和周期性去掉。(应该牢牢把握这一点!!)


              一般常用的平稳化方法是差分。对有线性趋势的时序进行一次差分,如果序列有二次趋势,则一般两次差分可变换为平稳序列。我也尝试过先对数据进行一次或二次曲线拟合,再用原始数据减去拟合的数据得到平稳序列,但效果不好(???头疼)


               零均值化即是求出时序均值,然后用数据去减一减。

    展开全文
  • R语言:纯随机性检验

    千次阅读 2020-04-19 20:44:46
    (通过平稳性检验判断序列平稳性) 对于非平稳序列,由于它不具有二阶平稳性质,所以对它统计分析要费一些周折,通常要通过进一步检验、变换或处理,才能确定适当拟合模型。 对于平稳序列,情况就简单多了...

    我们在拿到一个观察值序列之后,首先是判断它的平稳性。通过平稳性的检验,序列可以分为平稳序列和非平稳序列两大类。(通过平稳性检验判断序列的平稳性)
    对于非平稳序列,由于它不具有二阶平稳的性质,所以对它的统计分析要费一些周折,通常要通过进一步的检验、变换或处理,才能确定适当的拟合模型。
    对于平稳序列,情况就简单多了。我们有一套非常成熟的平稳序列建模方法。但是,并不是所有的平稳序列都值得建模。只有那些序列值之间具有密切的相关关系,历史数据对未来的发展有一定影响的序列,才值得我们花时间去挖掘历史数据中的有效信息,用来预测序列未来的发展。
    如果序列值彼此之间没有任何相关性,那就意味着该序列是一个没有记忆的序列,过去的行为对将来的发展没有丝毫影响,这种序列称为纯随机序列。从统计角度而言,纯随机序列是没有任何分析价值的序列。
    确定了序列是平稳序列后,还要进行随机性检验来确定平稳序列是否值得继续分析下去。

    纯随机序列,也称为白噪声序列。之所以称为白噪声序列,是因为人们最初发现白光具有这种特性。容易证明白噪声序列一定是平稳序列,而且是最简单的平稳序列。

    1.随机产生1000个服从标准正态分布的白噪声序列观察值,并绘制时序图。
    正态分布随机数生成函数是rnorm。rnorm函数的命令格式为:
    rnorm(n=, mean=, sd=)
    式中:
    n:随机数个数
    mean:均值,缺省值默认为0
    sd:标准差,缺省值默认为1
    注:如果要产生n个服从标准正太分布的随机数,可以简写为rnorm(n)

    所以本次命令与输出结果如下。

    > white_noise<-rnorm(1000)
    > white_noise<-ts(white_noise)
    > plot(white_noise)
    

    在这里插入图片描述
    白噪声序列的性质
    (1)随机性
    这说明白噪声序列的各项之间没有任何相关关系,这种“没有记忆”的序列就是纯随机序列。一旦某个随机事件呈现出纯随机波动的特征,就认为该随机事件没有包含任何值得提取的有用信息,我们就应该终止分析。
    (2)方差齐性
    在时间序列分析中,方差齐性是一个非常重要的限制条件。因为根据马尔可夫定理,只有方差齐性假定成立时,我们用最小二乘法得到的未知参数估计值才是准确、有效的。如果假定不成立,最小二乘法就不是方差最小线性无偏估计,拟合模型的精度会受到很大影响。
    所以我们在进行模型拟合时,检验内容之一就是要检验拟合模型的残差是否满足方差齐性假定。如果不满足,那就说明残差序列还不是白噪声序列,即拟合模型没有提取随机序列中的相关信息,这时拟合模型的精度是值得怀疑的。在这种场合下,我们通常需要使用适当的条件异方差模型来处理异方差信息。

    纯随机性检验
    纯随机性检验也称白噪声检验,是专门用来检验序列是否为纯随机序列的一种方法。我们知道如果一个序列是纯随机序列,那么它的序列值之间应该没有任何相关关系。但这是一种理论上上才会出现的理想状况。实际上,由于观察值序列的有限性,导致纯随机序列的样本自相关系数不会绝对为零。

    绘制上述随机产生1000个服从标准正态分布的白噪声序列的样本自相关图。

    > acf(white_noise)
    

    在这里插入图片描述
    样本自相关图显示这个纯随机序列没有一个样本自相关系数严格等于零。但这些自相关系数确实都非常小,都在零值附近以一个很小的幅度随机波动。这提醒我们应该考虑样本自相关系数分分布性质,从统计意义上来判断序列的纯随机性质。

    R语言中使用Box.test函数进行纯随机性检验(白噪声检验)。该函数的命令格式为:
    Box.test(x, type=, lag= )
    式中:
    x:变量名
    type:检验统计量类型
    (1)type=“Box-Pierce”,输出白噪声检验的Q统计量,该统计量为系统默认输出结果。
    (2)TYPE=“Ljung-Box”,输出白噪声检验的LQ统计量。
    lag:延迟阶数,lag=表示输出滞后n阶的白噪声检验统计量,忽略该选项时,默认输出滞后1阶的检验统计量结果。

    计算上述随机产生1000个服从标准正态分布的白噪声序列延迟6期、延迟12期的QLB统计量的值,并判断该序列的随机性(α=0.05)
    在这里插入图片描述
    R是最小结果输出软件,所以每次调出Box.test函数,只能给出一个检验结果。上面为了得到延迟6阶和延迟12阶两个LB统计量的结果,我们调用两次Box.test函数。如果希望能够像其他统计软件一样,一次得到多个白噪声检验结果,可以编写一个循环命令。最简单的循环函数是for函数,它的命令格式如下:
    for(x, in, n1:n2) state
    式中:
    x:循环变量名
    n1:n2:给出的循环取值区间
    state:需要循环执行的命令
    于是等价命令和输出结果为:
    在这里插入图片描述
    由于P值显著性水平α,所以该序列不能拒绝纯随机的原假设,换言之,我们可以认为该序列的波动没有任何统计规律可循,因而可以停止对该序列的统计分析。
    还需要解释的一点是,为什么上述检验了前6期和前12期延迟的Q统计量和LB统计量就直接判断该序列是白噪声序列?为什么不进行全部999期延迟检验?
    这是因为平稳序列通常具有短期相关性,如果序列值之间存在显著的相关关系,通常只存在于延迟时期比较短的序列值之间。所以,如果一个平稳序列短期延迟的序列值之间都不存在显著的相关关系,通常长期延迟之间就更不会存在显著的相关关系了。
    另一方面,假如一个平稳序列显示出显著的短期相关性,那么该序列就一定不是白噪声序列,我们就可以对序列值之间存在的相关性进行分析。因为平稳序列只要延迟时期足够长,自相关系数都会收敛于零。

    以1949-1998年北京市每年最高气温序列为例进行平稳性与纯随机性检验。
    1.绘制1949-1998年北京市每年最高气温序列时序图。

    > b<-read.table("file6.csv",sep=",",header=T)
    > temp<-ts(b$temp,start=1949)
    > plot(temp)
    

    在这里插入图片描述
    上图显示北京市每年的最高气温始终围绕在37℃附近随机波动,没有明显趋势或周期,基本可以视为平稳序列。但为了稳妥起见,我们还需要利用自相关图进一步辅助识别。

    2.绘制1949-1998年北京市每年最高气温序列自相关图

    > acf(temp)
    

    在这里插入图片描述
    自相关图显示该序列的自相关系数一直都比较小,始终控制在2倍标准差范围以内,可以认为该序列自始至终都在零轴附近波动,这是随机性非常强的平稳时间序列通常具有的自相关特征。

    3.对1949-1998年北京市最高气温序列做白噪声检验(α=0.05)

    > for(i in 1:2)print(Box.test(temp,lag=6*i))
    

    在这里插入图片描述
    根据这个检验结果,不能拒绝序列纯随机的原假设。因而可以认为北京市最高气温的变动属于纯随机波动。这说明我们很难根据历史信息预测未来年份的最高气温。至此,对该序列的分析也就结束了。

    展开全文
  • 时间序列的平稳性、随机性检验 在拿到时间序列数据后,首先要对数据随机性和平稳性进行检测, 这两个检测是时间序列预测重要部分。根据不同检测结果需要采取不同分析方法。 为什么时间序列要求平稳性呢?平稳...

    时间序列系列文章:

    时间序列(一):时间序列数据与时间序列预测模型
    时间序列(二):时间序列平稳性检测
    时间序列(三):ARIMA模型实战

    在上一篇文章时间序列(一):时间序列数据与时间序列预测模型中我们介绍了时间序列及一些时间序列预测模型。我们可以看到在进行预测时有一些模型表现较好,而另一些模型的预测结果却不尽人意。这是因为不同的时间序列模型对原始数据的要求是不同的,例如之前提到的ARIMA模型,要求时间序列数据平稳,否则得出的预测结果就会相差较大。本篇文章我们介绍时间序列的平稳性、随机性检验及相关时间序列数据处理方法。

    时间序列的平稳性、随机性检验

    在拿到时间序列数据后,首先要对数据的随机性和平稳性进行检测, 这两个检测是时间序列预测的重要部分。根据不同检测结果需要采取不同的分析方法。

    为什么时间序列要求平稳性呢?平稳性就是要求由样本拟合出的曲线在未来一段时间内仍然能够以现有的形态和趋势发展下去,这样预测结果才会有意义。

    对于平稳声序列, 它的均值和方差是常数, 现已有一套非常成熟的平稳序列的建模方法。 通常是建立一个线性模型来拟合该序列的发展 借此提取该序列的有用信息。

    对于非平稳序列, 由于它的均值和方差不稳定, 处理方法一般是将其转变为平稳序列,这样就可以应用有关平稳时间序列的分析方法, 如建立 ARIMA模型来进行相应的研究,或者分解趋势与季节性等并根据情况应用指数平滑模型等。

    对于纯随机序列, 又称为白噪声序列, 序列的各项之间没有任何相关关系, 序列在进行完全无序的随机波动, 可以终止对该序列的分析。 白噪声序列是没有信息可提取的平稳序列。

    在讲解平稳性和随机性的定义之前,我们先介绍一下时间序列中常用的几个特征统计量。

    时间序列的特征统计量

    对于一个时间序列任意时刻的序列值{Xt,tT}\left\{ X _ { t } , t \in T \right\},任意时刻的序列值 XtX _ { t }都是一个随机变量,记其分布函数为Ft(x)F _ { t } ( x ),则其特征统计量均值、方差、自协方差函数、自相关系数的定义分别如下:

    均值: 表示时间序列在各个时刻取值的平均值,其定义如下:
    μt=EXt=xdFt(x)\mu _ { t } = E X _ { t } = \int _ { - \infty } ^ { \infty } x \mathrm { d } F _ { t } ( x )

    方差: 表示时间序列在各个时刻围绕其均值波动的平均程度,其定义如下:
    σt2=DXt=E(Xtμt)2=(xμt)2dFt(x)\sigma _ { t } ^ { 2 } = D X _ { t } = E \left( X _ { t } - \mu _ { t } \right) ^ { 2 } = \int _ { - \infty } ^ { \infty } \left( x - \mu _ { t } \right) ^ { 2 } \mathrm { d } F _ { t } ( x )

    自协方差 : 表示时间序列任意两个时刻直接的相关性,任取t,sTt , s \in T,则其定义如下:
    γ(t,s)=E[(Xtμt)(Xsμs)]\gamma ( t , s ) = E \left[ \left( X _ { t } - \mu _ { t } \right) \left( X _ { s } - \mu _ { s } \right) \right]

    自相关系数: 同自协方差函数,其定义如下:

    ρ(t,s)=γ(t,s)DXtDXs\rho ( t , s ) = \frac { \gamma ( t , s ) } { \sqrt { D X _ { t } \cdot D X _ { s } } }

    平稳时间序列的定义与检验

    平稳时间序列的定义

    平稳时间序列按照限定条件的严格程度可以分为以下两种类型:

    严平稳时间序列: 指时间序列的所有统计性质不会随着时间的推移而发生变化,即其联合概率分布在任何时间间隔都是相同的。设{Xt}\left\{ X _ { t } \right\}为一时间序列,对任意的正整数mm,任取t1,t2,,tmTt _ { 1 } , t _ { 2 } , \cdots , t _ { m } \in T,对任意整数τ\tau,有:

    Ft1,t2,,tm(x1,x2,,xm)=Ft1+τ,t2+τ,,tm+τ(x1,x2,,xm)F _ { t _ { 1 } , t _ { 2 } , \cdots , t _ { m } } \left( x _ { 1 } , x _ { 2 } , \cdots , x _ { m } \right) = F _ { t _ { 1 + \tau } , t _ { 2 + \tau } , \cdots , t _ { m + \tau } } \left( x _ { 1 } , x _ { 2 } , \cdots , x _ { m } \right)

    则称时间序列{Xt}\left\{ X _ { t } \right\}为严平稳时间序列。

    宽平稳时间序列: 宽平稳时间序列则认为只要时间序列的低阶距(二阶)平稳,则该时间序列近似平稳。如果时间序列{Xt}\left\{ X _ { t } \right\}满足以下三个条件:

    • 任取tTt \in T,有 EXt2<EX _ { t }^ { 2 } <∞
    • 任取tTt \in T,有EXt=μE X _ { t } = \mu,其中μ\mu为常数;
    • 任取t,s,kTt , s , k \in T, k+stTk + s - t \in T,有γ(t,s)=γ(k,k+st)\gamma ( t , s ) = \gamma ( k , k + s - t )

    在现实生活中,时间序列是很难满足严平稳时间序列的要求的,因此,一般所讲的平稳时间序列在默认情况下都是指宽平稳时间序列。根据宽平稳时间序列的条件,我们可以容易得到宽平稳时间序列所具有的性质:

    • 均值为常数,即:EXt=μ,tTE X _ { t } = \mu , \quad \forall t \in T
    • 方差也为均值,即:DXt=γ(t,t)=γ(0),tTD X _ { t } = \gamma ( t , t ) = \gamma ( 0 ) , \quad \forall t \in T
    • 自协方差函数和自相关系数只依赖于时间的平移长度,而与时间的起点无关。即:γ(t,s)=γ(k,k+st),t,s,kT\gamma ( t , s ) = \gamma ( k , k + s - t ) , \quad \forall t , s , k \in T
      因此,可以记γ(k)\gamma ( k )为时间序列${ X _ { t } $的延迟k自协方差函数。

    由于平稳时间序列具有这些优良性质,因此,对于一个平稳时间序列来说,其待估计的参数量就变得少了很多,因为他们的均值、方差都是一样的,因此,可以利用全部的样本来估计总体的均值和方差,即:
    μ^=x=i=1nxinγ^(0)=t=1n(xtx)2n1\widehat { \mu } = \overline { x } = \frac { \sum _ { i = 1 } ^ { n } x _ { i } } { n } \\ \widehat { \gamma } ( 0 ) = \frac { \sum _ { t = 1 } ^ { n } \left( x _ { t } - \overline { x } \right) ^ { 2 } } { n - 1 }
    这也是为什么说当拿到一个时间序列后,需要对其进行平稳性检验。

    平稳时间序列的检验

    那么,当拿到一个时间序列后,应该如何对其进行平稳性的检验呢?目前,对时间序列的平稳性检验主要有两种方法,一种是图检法,即根据时序图和自相关图进行直观判断,另一种是构造检验统计量的方法,有单位根检验法等方法。

    图检法

    对于图检法,我们一般绘制时间序列的时序图,考虑以下三个图形:

    在这里插入图片描述
    在第一幅图中,我们可以清楚地看到,均值随时间而变化(增加),呈现上升的趋势。因此,这是一个非平稳序列。平稳序列不应该呈现出随时间变化的趋势。

    第二幅图显然看不到序列的趋势,但序列的变化是一个时间的函数。正如前面提到的,平稳序列的方差必须是一个常数。

    再来看第三幅图,随着时间的增加,序列传播后变得更近,这意味着协方差是时间的函数。

    所以上述三个例子均是非平稳时间序列.

    再看下面的时序图:
    在这里插入图片描述
    在这张图中,均值、方差和协方差都是常数,这就是平稳时间序列

    另一方面,我们也可以通过自相关图来进行检验,对于平稳时间序列,其自相关图一般随着阶数的递增,自相关系统会迅速衰减至0附近,而非平稳时间序列则可能存在先减后增或者周期性波动等变动。如下图所示,该时间序列随着阶数的递增,自相关系数先减后增,因此,可以判断该时间序列不是平稳时间序列。
    在这里插入图片描述

    统计检验

    可以利用统计检验来代替目视检验:比如单位根平稳检验。单位根表名给定序列的统计特性(均值,方差和协方差)不是时间的常数,这是平稳时间序列的先决条件。下面是它的数学解释:

    假设我们有一个时间序列:
    yt=ayt1+εty_t=a*y_{t-1 }+ε_t
    其中yty_t是t时刻的数据值,εtε_t 是误差项。
    仙子我们需要利用yt1y_{t-1 }的值来计算yty_t,即:
    yt1=ayt2+εt1y_{t-1}=a*y_{t-2}+ε_{t-1}
    如果利用所有的观察值,yty_{t}的值将是:
    yt=anytn+εtiaiy_{t}=a^n*y_{t-n}+ \sumε_{t-i}*a^i

    假设在上述方程中a的值为1(单位),则预测值将等于ytny_{t-n} 和从tnt-ntt的所有误差之和,这意味着方差将随着时间的推移而增大,这就是时间序列中的单位根。众所周知,平稳时间序列的方差不能是时间的函数。单元根检验通过检查a=1的值来检查序列中是否存在单位根。以下是两个最常用的单位根平稳检测方法:

    ADF(增补迪基-福勒)检验

    迪基-福勒(Dickey Fuller)检验是最流行的统计检验方法之一,可以用它来确定序列中单位根的存在,从而帮助判断序列是否是平稳。ADF检验是对DF检验的扩展。这一检验的原假设与备选假设如下:

    • 原假设: 序列有一个单位根(序列非平稳)
    • 备选假设: 该序列没有单位根。(序列平稳)

    单位根是什么呢?当一个自回归过程中: yt=byt1+a+ϵty_{t} = by_{t-1} + a + \epsilon _{t},如果滞后项系数b为1,就称为单位根。当单位根存在时,自变量和因变量之间的关系具有欺骗性,因为残差序列的任何误差都不会随着样本量(即时期数)增大而衰减,也就是说模型中的残差的影响是永久的。这种回归又称作伪回归。如果单位根存在,这个过程就是一个随机漫步(random walk)。ADF检验就是判断序列是否存在单位根:如果序列平稳,就不存在单位根;否则,就会存在单位根.

    在Python中使用ADF检验可以在statsmodels中使用adfuller函数。在下面的代码中我们加上标题与输出值对应的名称:

    #定义ADF输出格式化函数
    from statsmodels.tsa.stattools import adfuller
    def adf_test(timeseries):
        print ('ADF检验结果:')
        dftest = adfuller(timeseries, autolag='AIC')
        dfoutput = pd.Series(dftest[0:4], index=['Test Statistic','p-value','Number of Lags Used','Number of Observations Used'])
        for key,value in dftest[4].items():
           dfoutput['Critical Value (%s)'%key] = value
        print (dfoutput)
    
    #对数据集使用ADF检验
    adf_test(train['#Passengers'])
    

    检验结果如下:

    ADF检验结果:
    Test Statistic                   0.815369
    p-value                          0.991880
    Number of Lags Used             13.000000
    Number of Observations Used    130.000000
    Critical Value (1%)             -3.481682
    Critical Value (5%)             -2.884042
    Critical Value (10%)            -2.578770
    dtype: float64
    

    ADF的结果主要看以下两个方面:

    • Test Statistic的值如果比Critical Value (5%)小则满足稳定性需求.
    • p-value越低(理论上需要低于0.05)证明序列越稳定。

    在上面的例子中,test statistic > Critical Value (5%) ,这意味着序列不是平稳的。同时p值为0.99,这证实了我们最初在目视检测中观察的结果。

    随机性(白噪声)的定义与检验

    随机性时间序列的定义

    通过对时间序列进行平稳性检验后,我们可以将时间序列分为平稳时间序列和非平稳时间序列,对于非平稳时间序列,一般需要将其转化为平稳时间序列再进行分析,具体的转化方法随后再讲。而对于平稳时间序列,我们知道其有一个性质,即自协方差函数和自相关系数只依赖于时间间隔,而与起点无关,对于相同的时间间隔,其自协方差函数和自相关系数为一个常数,那么,就存在一种情况,当该常数为0时,照样满足平稳时间序列的条件,而此时序列之间的相关性则为0,即序列之间不相关,那么,这时我们的分析即可结束,因为对于一个毫无相关的序列,我们没法从中挖掘出可用的规律,此时的序列即为随机性时间序列,也称为白噪声序列。
        
    对于时间序列XtX _ { t },如果满足:

    • 任取tTt \in T,有EXt=μE X _ { t } = \mu
    • 任取t,sTt , s \in T,有
      γ(t,s)=σ2;t=s0;ts\gamma ( t , s ) = \begin{array} { l l } { \sigma ^ { 2 }}; { t = s } \\ { 0 }; { t \neq s } \end{array}

    则称该时间序列为纯随机序列或白噪声序列,简记为XtWN(μ,σ2)X _ { t } \sim W N \left( \mu , \sigma ^ { 2 } \right)。我们可以发现,其实白噪声序列的性质与平稳时间序列的性质一样,其均值和方差均为常数,只是自协方差函数或自相关系数为0,因此,该序列的任何两项之间不存在相关性,无法从中得到任何有用的信息,此时分析可以停止。

    纯随机性(白噪声)检验

    对于纯随机性序列,一般通过构建统计量的方法来检验。我们知道,白噪声序列除了0阶自相关系数外,即方差,其他阶的自相关系数应该均为0,因此,我们可以提出下面这样一个假设:

    H0:ρ1=ρ2==ρm=0,m1H1:ρk0,m1,kmH _ { 0 } : \rho _ { 1 } = \rho _ { 2 } = \cdots = \rho _ { m } = 0 , \quad \forall m \geqslant 1\\ H _ { 1 } :至少存在某个\rho _ { k } \neq 0 , \quad \forall m \geqslant 1 , k \leqslant m

    因此,围绕该假设,我们可以构建统计量进行检验,常用的统计量有Q统计量和LB统计量,其计算公式分别如下:

    Q=nk=1mρ^k2LB=n(n+2)k=1m(ρ^k2nk)Q = n \sum _ { k = 1 } ^ { m } \widehat { \rho } _ { k } ^ { 2 }\\L B = n ( n + 2 ) \sum _ { k = 1 } ^ { m } \left( \frac { \widehat { \rho } _ { k } ^ { 2 } } { n - k } \right)

    其中,nn为序列的观察期数,mm为指定延迟期数,kk为延迟阶数,Box和Pierce证明这两个统计量均服从自由度为m mm的卡方分布,当统计量大于χ1α2(m)\chi _ { 1 - \alpha } ^ { 2 } ( m )或者P值小于αα 时,则认为可以拒绝原假设,即认为该序列是非随机序列

    我们可以使用acorr_ljungbox函数进行数据的纯随机性检验.语法为:

    acorr_ljungbox(x, lags=None, boxpierce=False) # 数据的纯随机性检验函数
    
    lags:为延迟期数,如果为整数,则是包含在内的延迟期数,如果是一个列表或数组,那么所有时滞都包含在列表中最大的时滞中
    
    boxpierce:为True时表示除开返回LB统计量还会返回Box和Pierce的Q统计量
    
    返回值:
    
    lbvalue:测试的统计量
    
    pvalue:基于卡方分布的p统计量
    
    bpvalue:((optionsal), float or array) – 基于 Box-Pierce 的检验的p统计量
    
    bppvalue:((optional), float or array) – 基于卡方分布下的Box-Pierce检验的p统计量
    

    代码实现:

    from statsmodels.stats.diagnostic import acorr_ljungbox
    acorr_ljungbox(train['#Passengers'])
    

    输出检验结果中会返回两个值:
    lbvalue: 测试的统计量 和 pvalue: 基于卡方分布的p统计量。如果p-value>0.05则可判断为白噪声序列

    时间序列的平稳化

    在熟悉了平稳性的概念及其不同的类型之后,接下来可以对序列进行平稳化操作。平稳化的方法有以下几种:

    差分法

    在该方法中,计算序列中连续项的差值。执行差分操作通常是为了消除均值的变化。从数学角度,差分可以写成:

    yt=ytyt1y_t = y_t – y_{t-1}

    其中yty_t 是t时刻的数值。相减数值之间的间隔数即为阶数。例如上述公式即为一阶差分。

    我们可以直接相减对序列差分,并绘制出对应线图:

    train['#Passengers_diff'] = train['#Passengers'] - train['#Passengers'].shift(1)
    train['#Passengers_diff'].dropna().plot()
    

    或者使用diff方法进行差分:

    train['#Passengers_diff'] = train['#Passengers'].diff(1)#一阶差分
    train['#Passengers_diff2'] = train['#Passengers_diff'].diff(1)#二阶差分
    

    在这里插入图片描述

    当数据存在季节性趋势时,我们可以利用季节性差分来消除季节性的不平稳因素。例如,星期一的观察值将与上星期一的观察值相减。从数学角度,它可以写成:

    yt=ytytny_t = y_t – y_{t-n}

    n=7
    train['#Passengers_diff'] = train['#Passengers'] - train['#Passengers'].shift(n)
    

    变换

    变换用于对方差为非常数的序列进行平稳化。常用的变换方法包括幂变换、平方根变换和对数变换。

    train['#Passengers_log'] = np.log(train['#Passengers'])
    train['#Passengers_log_diff'] = train['#Passengers_log'] - train['#Passengers_log'].shift(1)
    train['#Passengers_log_diff'].dropna().plot()
    

    在这里插入图片描述

    在上面的变化过程中,我们首先对原始数据取对数,主要有两个用处:(1)将指数增长转为线性增长(2)可以平稳序列的方差。随后进行差分从而消除趋势的影响使序列平稳。

    分解

    对于有明显趋势或者周期性的时间序列二,我们也可以对其进行分解。分解需要用到statsmodels.tsa.seasonal.seasonal_decompose函数,可以将时间序列的数据分解为趋势(trend),季节性(seasonality)和残差(residual)三部分。

    from statsmodels.tsa.seasonal import seasonal_decompose
    decomposition = seasonal_decompose(train['#Passengers']).plot()#画出分解后时序图
    plt.show()
    trend = decomposition.trend
    seasonal = decomposition.seasonal
    residual = decomposition.resid
    

    在这里插入图片描述

    这样趋势和季节性,还有残差值都被分解出来,之后我们就可以计算残差值的稳定性,从而得到一个平稳的时间序列

    参考文章:
    https://www.biaodianfu.com/arima.html

    在这里插入图片描述

    展开全文
  • 本文将重点介绍时间序列数据的平稳性检验方法。简介预测一个家庭未来三个月用电量,估计特定时期道路上交通流量,预测一只股票在纽约证券交易所交易价格……这些问题都什么共同点?它们都属于时间序列数据...
  • 拿到非平稳时间序列,首先进行就是差分法消除趋势,然后根据情况判断拟合季节加法模型或乘法模型,最后进行模型检验。常用模型两种:ARIMA和因素分解模型。 ARIMA(加、乘法)模型,本篇分析采用。 因素分解...
  • 5.3.1裴德劳因(Pedroin)检验裴德劳因(Pedroin)(1999)提出了以...裴德劳因(Pedroin)检验在对残差使用平稳性检验时,具体原假设和备择假设如下:第二种情形主要用于检验异质面板数据协整关系,三个统计量用于...
  • 平稳性检验的特殊方法。单位根检验是建立ARMA模型、ARIMA模型、变量间的协整分析、因果关系检验等的基础。 单位根检验统计检验方法有ADF检验、PP检验、NP检验。最常用的是ADF检验。 无法区分哪个是自变量,哪个是...
  • 单位根检验、航空模型、季节模型

    千次阅读 2019-01-08 09:45:14
    单独写这篇文章的用意是源于我在单位根平稳性检验上面花费了很多时间,在这个...平稳性检验的主要方法是看时序图、ACF图和单位根检验,其中单位根检验方法有ADF、PP、KPSS等。本次ADF和PP检验都拒绝原假设,即认为...
  • 1 ADF检验也叫扩展的迪克富勒检验,主要作用是检测序列的平稳性,也是最常用检测序列平稳性的检验方法。 2 何为:平稳性?单位根?(略),见这部分随便的其他内容讲解。是建模对数据的先决条件。 3 ADF检验的...
  • 1 ADF检验也叫扩展的迪克富勒检验,主要作用是检测序列的平稳性,也是最常用检测序列平稳性的检验方法。2 何为:平稳性?单位根?(略),见这部分随便的其他内容讲解。是建模对数据的先决条件。3 ADF检验的三种...
  • 用python实现时间序列单位根检验

    千次阅读 2019-08-30 15:15:08
    在时间序列的建模中,需要先对数据进行平稳性检验,常用的DF检验、ADF检验和PP检验,文章实例ADF检验 注:检验的P值是只在一个假设检验问题中,利用样本观测值能够作出拒绝原假设的最小显著性水平。 如果a >= ...
  • 序列的平稳性检验检验方法方法一:图检验平稳性图检验方法依靠原理是平稳时间序列具有常数均值和方差。这意味着平稳序列时序图应该显示出该序列始终在一个常数值附近波动,而且波动范围特点。方法二:...
  • Matlabautocorr自相关函数

    万次阅读 多人点赞 2016-02-23 22:50:58
    今天看了一下时间序列模型ARIMA模型,在对数据处理时候,需要对其进行平稳性检验。 对序列平稳性检验两种检验方法:一种是根据时序图和自相关图特征作出判断图检验,该方法操作简单,应用广泛,缺点是...
  • 同时,对股指序列进行了确定性检验,求取 最大李雅普诺 夫指数。根据最大李雅普诺夫指数,确定了上证综合 指数序列具 混沌特性,这为探求股指变化规律和正确建立其短 期预测模型 奠定了基础。 (2)从小波神经...
  • 时间序列分析方法——ARIMA模型案例

    千次阅读 2020-06-19 18:35:24
    目录一、方法简介数据示例二、ARIMA模型python建模过程[^2]1 添加基础库2 读取数据3 绘制时间序列图4 自相关5 平稳性检验6 时间序列差分d7 合适p,q8 模型检验Ljung-Box检验9 模型预测 时间序列分析方法1主要...
  • 时间序列分析之预处理(一)

    万次阅读 2017-04-16 22:49:44
    该笔记基于《时间序列分析-基于R》 时间序列分析是非常价值应用最广统计分析方法也是最难一种统计分析方法, 在对时间序列进行分析之前必须对数据进行预分析处理,如:平稳性检验与纯随机性检验 。...
  • 最近看时间序列,由于统计学知识的薄弱,略感吃力。作为码农,自然“纸上得来终觉浅,绝知此事要coding...定义单位根检验的函数拿到时间序列数据后,要进行平稳性检验,主要两种方法:肉眼检验法和单位根检验法...
  • 文章目录引文时间序列基本概念时间序列类型纯随机性检验平稳性检验平稳时间序列数学定义平稳性检验平稳时间序列分析AR模型MA模型ARMA模型平稳时间序列建模方法非平稳时间序列分析差分ARIMA模型 引文 假如我们一个...
  • 笔记:一、检验:1、平稳性检验:图检验方法: 时序图检验:该序列明显趋势性或周期性,则不是平稳序列 自相关图检验:(acf函数)平稳序列具有短期相关性,即随着延迟期数k增加,平稳序列自相关系数ρ会...
  • 1、平稳性检验: 图检验方法: 时序图检验:该序列明显趋势性或周期性,则不是平稳序列 自相关图检验:(acf函数)平稳序列具有短期相关性,即随着延迟期数k增加,平稳序列自相关系数ρ会...
  • 大作业终于要做完了。 本科后两年其实计量模型用...1.时间序列平稳性检验 拿到数据后首先比较重要要分析平稳性,否则会出现伪回归等一系列问题。 主要方法有 怀特检验。 如果不讲究严谨性初步判断,通过画图也可以
  • 文章借鉴已研究,对 文章借鉴已研究,对 房地产泡沫 进行简要界定,根据房地产供求 进行简要界定,根据房地产供求 和基 础价值 理论 ,在对相关变量序列进行 平稳 性检验 和协整检验 基础上 ,建立 ,建立 了...
  • 平稳性,其实是规律性体现。这样话,残差规律,就可以建立回归模型,从而进行预测。然后,模型建立后,进行残差检验,又要求满足白噪声。这个白噪声又是要求数据是随机性,不能规律性,否则就是趋势或...
  • 伪回归概念

    千次阅读 2014-12-17 10:56:42
    单位根检验由于传统经济计量学方法对非平稳的时间序列不再适用,利用传统方法对计量模型进行统计推断时,许多参数统计量分布不再是标准分布,所作回归被称为“伪回归” 伪回归:如果一组非平稳时间序列之间...
  • 探索数据之自相关图分析(一)

    万次阅读 多人点赞 2018-11-27 00:05:24
    前言: 作为探索数据第一部分,本文先给出时间序列,自相关图,平稳性检验等概念。后续补充相应python代码。该篇文章主要摘自王燕《应用时间序列分析》,兴趣深入了解读者可参照这本书。 正文: 时间序列...

空空如也

空空如也

1 2 3
收藏数 41
精华内容 16
关键字:

平稳性检验的方法有