精华内容
下载资源
问答
  • 本文档通过案例的形式展示了平稳性检验和纯随机性检验的完整过程、结果及具体分析,能让初学者更好的理解和掌握检验的真正作用,使知识更加融汇贯通。
  • 平稳性检验(描述性)与纯随机性检验

    万次阅读 多人点赞 2019-04-19 11:46:41
    本章主要介绍进行时序分析前的预处理,即平稳性检验与纯随机性检验。 平稳性检验(描述性) 平稳性检验的方法分为描述性方法与计量性方法。前者主要指时序图检验、ACF 图检验,后者主要指 DF 检验、ADF 检验与PP...

    这篇博客主要记录人大出版《应用时间序列分析》第二章的笔记。本章主要介绍进行时序分析前的预处理,即平稳性检验与纯随机性检验。

    平稳性检验(描述性)

    平稳性检验的方法分为描述性方法与计量性方法。前者主要指时序图检验、ACF 图检验,后者主要指 DF 检验、ADF 检验与PP检验。由于计量性方法需要 ARMA 模型的相关知识,这篇博客仅仅介绍描述性方法。

    时序图检验

    时序图检验即是通过观察时序图来判断时间序列是否平稳。Python 中画时序图的代码如下:

    import pandas as pd
    import matplotlib.pyplot as plt
    data = pd.DataFrame({'2010-01-01': 10.00, '2010-01-02': 13.00, '2010-01-04': 13.50, '2010-01-05': 13.50, '2010-01-06': 14.50, '2010-01-07': 16.00, '2010-01-08': 20.50, '2010-01-10': 24.50, '2010-01-11': 27.50, '2010-01-12': 30.50}, index=['price'])
    data = data.T
    data['price'].plot()
    plt.show()

    作图结果如下:

    其实就是使用 pandas 中内置的折线图。

    具体如何通过时序图来检验平稳性呢?平稳时序定义要求均值、方差为常数,协方差仅仅与时间间隔相关。从定义入手,时序图满足以下任一条件的不是平稳时序:

    • 时序存在明显的趋势,即均值不为常数
    • 时序存在集群效应,即某段时间的波动幅度较其它时段明显较大或者较小,即方差不为常数

    下图为集群效应的一个例子:

     

     

    时序中间时段的波动幅度明显大于两端,可以认为时序存在集群效应,为非平稳时序。集群效应在金融时间序列中往往十分常见。

    ACF图检验

    上篇博客中介绍了自协方差函数的定义与作图方法,链接:https://blog.csdn.net/weixin_44607126/article/details/89086035

    平稳时序往往仅具有短期自相关性,长期的 ACF 会振荡随机趋近于0。因此,当 ACF 图不满足这一条件时,可以认为时序非平稳。如何理解振荡与随机呢?下面给出几个 ACF 图检验的例子。

    上图在 k >= 2 时就已经趋于 0 了,但是并没有满足随机趋于 0 的条件,该图中的 ACF(k) 先连续4项正值,然后连续6项负值,整个图形呈现出倒三角的形状,这意味着时序中存在明显的趋势,为非平稳时序。事实上,这是一条单增时序的 ACF 图。

    上图是平稳时序的 ACF 图的一个例子,可以看到 ACF(k) 没有出现规律性,振荡随机趋近于0,可以认为时序平稳。

    总结来看,当 ACF 图满足下列任一条件时,可以认为时序为非平稳时序

    • ACF 图正项与负项连续交替出现,呈现倒三角形,意味着时序中存在趋势
    • ACF 图拖尾,即当 k 很大时仍有 ACF(k) 显著

    描述性检验方法的注意事项

    无论是时序图还是 ACF 图,使用它们作为检验方法时都具有较强的主观性,没有引入客观的统计量。因此,时序图与 ACF 图仅能用来排除非平稳时序,不能用来判断一个时序是否是平稳时序!即描述性检验方法仅仅是为计量性检验方法作一个初步筛选,如果时序没有通过描述性检验方法,就不需要进行计量性检验了;而即使时序通过了描述性检验方法,仍需要进行计量性检验来进一步确认时序为平稳时序。

    纯随机性检验

    在进行时序分析之前,我们需要确认这个时序不是一个单纯的噪音,而是蕴含着可以用模型描述的信息。因此需要对时序进行纯随机性检验。

    白噪声的定义

    我们称满足下列条件的时序为白噪声(纯随机时序):

    1. EX_{t}=\mu
    2. Var(X_{t})=\sigma ^2
    3. Cov(X_{t}, X_{t+k})=0, \forall t, k

    白噪声满足均值与方差均为常数,且不同时刻上的随机变量不相关。显然,白噪声是一种平稳时序。

    从白噪声的定义中可以看出,对于白噪声时序,历史数据不能提供关于未来的信息,此时建立时序模型将会是徒劳的。因此在蚝时序建模前需要进行白噪声检验。同时,白噪声还可以用来判断时序模型总体的显著性,当模型残差是白噪声序列时,就可以认为模型已经充分提取了时序信息。

    Barlett定理

    如果一个时序是纯随机的,得到一个观察期数为 n 的观察序列,那么该序列的延迟非零期样本自相关系数近似服从 N(0, \frac{1}{n})的正态分布。

    仅仅想在应用层面理解时序则不必深究上述定理。

    BP检验

    根据 Barlett 定理,可以构建 Q 统计量:Q=n\sum_{k=1}^{m}\widehat{\rho}_{k}^2

    则有 Q$\sim$\chi^2(m),其中 m 为指定最大延迟期数,\widehat{\rho}_{k}^2 为 k 期延迟样本自相关系数。原假设为时序是白噪声序列,当 Q 大于单侧检验临界值时认为时序不是白噪声序列。

    LB检验

    LB 检验是在 BP 检验的基础上进行了一些修正,使其更适用于小样本。LB 统计量表达式为:LB=n(n+2)\sum_{k=1}^{m}\widehat{\rho}_{k}^2/(n-k)

    在实际应用中通常使用 LB 检验。

    在python中进行 LB 检验的代码如下:

    from statsmodels.stats.diagnostic import acorr_ljungbox
    print(acorr_ljungbox(np.random.rand(100), lags=[6, 12]))

    lags 即上面公式中的m , 通常取 6 与 12。

    输出如下:

    (array([2.02502998, 8.28247283]), array([0.91738225, 0.76268484]))

    第一个 array 是 LB 统计量的数值,第二个 array 是 p 值。当 p 值小于显著性水平时认为时序不是白噪声。

    总结

    1. 在进行正式的时序建模前需要检验时序的平稳性与纯随机性
    2. 平稳性检验可以通过时序图、ACF 图等描述性方法,但依然要使用 ADF 检验、PP 检验来最终判断
    3. 纯随机性检验可以使用 BP 统计量与 LB 统计量,通常使用 LB 统计量

    误区

    1. 仅仅通过时序图与 ACF 图就断定一个时序是平稳时序:时序图与 ACF 图仅仅只能用于判断非平稳时序,不能用于判断平稳时序
    2. 不画时序图与 ACF 图,直接对时序进行 ADF 检验与 PP 检验:描述统计是必不可少的步骤,通过时序图与 ACF 图可以清楚看出时序的趋势性与周期性
    3. 在正式建模之前不检验时序的纯随机性,认为仅仅检验时序的平稳性就足够了:白噪声时序也是平稳序列,但是没有分析的价值
    4. 在正式建模之后不检验残差序列的纯随机性:残差序列的纯随机性检验有点类似于多元回归中的 F 检验,检验的是模型总体的显著性水平
    展开全文
  • 2.2纯随机性检验 白噪声序列 纯随机序列也称为白噪声序列,满足如下两条性质(1)EXt=μ,∀t∈T(1)EX_t=\mu,\forall t\in T(1)EXt​=μ,∀t∈T(2)γ(t,s)={σ2,t=s0,t=s,∀t,s∈T(2)\gamma(t,s)= \begin {case...

    本文为本科课程笔记
    原创思路是老师的~~
    不知道会不会侵犯啥权益,所以声明一下~~
    用作记录~~

    2.2纯随机性检验

    白噪声序列

    • 纯随机序列也称为白噪声序列,满足如下两条性质 ( 1 ) E X t = μ , ∀ t ∈ T (1)EX_t=\mu,\forall t\in T (1)EXt=μ,tT ( 2 ) γ ( t , s ) = { σ 2 , t = s 0 , t = s , ∀ t , s ∈ T (2)\gamma(t,s)= \begin {cases} \sigma^2, &t=s \\ 0,&t=s \end{cases}, \forall t,s\in T (2)γ(t,s)={σ2,0,t=st=s,t,sT
    • 纯随机性:各序列值之间没有任何相关关系,即为“没有记忆”的序列 γ ( k ) = 0 , ∀ k ≠ 0 \gamma(k)=0,\forall k \neq 0 γ(k)=0,k=0
    • 方差齐性:根据马尔可夫定理,只有方差齐性假定成立时,用最小二乘法得到的未知参数估计值才是准确的、有效的 D ( X t ) = γ ( 0 ) = σ 2 D(X_t)=\gamma(0)=\sigma^2 D(Xt)=γ(0)=σ2
      在这里插入图片描述

    纯随机性检验

    • 检验原理:Barlett定理
      • 如果一个时间序列是纯随机的,得到一个观察期数为n的观察序列,那么该序列的延迟非零期的样本自相关系数将近似服从均值为0,方差为序列观察期数倒数的正态分布。
      • ρ k ^ ∼ N ( 0 , 1 n ) , ∀ k ≠ 0 \hat{\rho_k} \sim N(0,\frac{1}{n} ),\forall k\neq 0 ρk^N(0,n1),k=0
    • 假设条件:
      • 原假设:延迟期数小于或等于m期的序列值之间相互独立 H 0 : ρ 1 = ρ 2 = ⋯ = ρ m = 0 , ∀ m ≥ 1 H_0:\rho _1= \rho _2=\cdots=\rho_m=0,\forall m \ge1 H0:ρ1=ρ2==ρm=0,m1
      • 备择假设:延迟期数小于或等于m期的序列值之间有相关性 H 1 : 至 少 存 在 某 个 ρ k ≠ 0 , ∀ m ≥ 1 , k ≤ m H_1:至少存在某个\rho_k\neq0,\forall m \ge1,k\le m H1:ρk=0,m1,km
    • 检验统计量
      • Q统计量 Q = n ∑ k = 1 m ρ k 2 ^ ∼ χ 2 ( m ) Q=n\sum_{k=1}^m \hat{\rho_k^2}\sim \chi^2(m) Q=nk=1mρk2^χ2(m)
      • LBQ统计量 L B = n ( n + 2 ) ∑ k = 1 m ( ρ k 2 ^ n − k ) ∼ χ 2 ( m ) LB=n(n+2)\sum_{k=1}^m(\frac{\hat{\rho_k^2}}{n-k})\sim \chi^2(m) LB=n(n+2)k=1m(nkρk2^)χ2(m)
    • 判别原则
      • 当检验统计量大于 χ 1 − α 2 ( m ) \chi ^2_{1-\alpha}(m) χ1α2(m)分位点,或该统计量的 p p p值小于 α \alpha α 时,则可以以 1 − α 1-\alpha 1α的置信水平拒绝原假设,认为该序列为非白噪声序列.
    展开全文
  • 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))
    

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

    展开全文
  • 本文为本科课程整理 ...#纯随机性检验 white_noise <- rnorm(500) white_noise2 <- rnorm(500,mean = 2,sd = 0.2) white_noise <- ts(white_noise) plot(white_noise) acf(white_noise,ylim=c(-1,1))...

    本文为本科课程整理
    五一应该会做一个大概的纸质版的笔记整理。

    #纯随机性检验
    white_noise <- rnorm(500)
    white_noise2 <- rnorm(500,mean = 2,sd = 0.2)
    white_noise <- ts(white_noise)
    plot(white_noise)
    acf(white_noise,ylim=c(-1,1))
    
    #LBQ检验
    LBQ <- Box.test(white_noise,lag = 6,type = "Ljung-Box")
    help(Box.test)
    LBQ$p.value
    
    #for循环
    for (i in 1:2) print(Box.test(white_noise,lag = 6*i))
    
    LBQ_p <- 1:24
    for(i in 1:24){
      LBQ <- Box.test(white_noise,lag = 6*i)
      LBQ_p[i]<- LBQ$p.value
    }
    
    c<-read.csv()#教材40页
    prop <- ts(c$prop,start = 1950)
    plot(prop)
    acf(prop,ylim=c(-1,1))
    
    for (i in 1:2) print(Box.test(prop,lag=6*i))

    纯随机性检验

    #纯随机性检验
    white_noise <- rnorm(500)
    white_noise2 <- rnorm(500,mean = 2,sd = 0.2)
    white_noise <- ts(white_noise)
    plot(white_noise)
    acf(white_noise,ylim=c(-1,1))
    • rnorm():可以输入均值和标准差。不给的话默认为标准正态分布。
      在这里插入图片描述

    在这里插入图片描述

    LBQ检验——Box.text()

    #LBQ检验
    LBQ <- Box.test(white_noise,lag = 6,type = "Ljung-Box")
    help(Box.test)
    LBQ$p.value
    • Box.test:
      • lag:检验的滞后阶数
      • Q检验分为BPQ和LBQ检验。 LBQ检验效果更好一些。 type给一个LBQ检验来运行。
        在这里插入图片描述

    在拿到一个时间序列时,先把时序图画出来,看是不是平稳的,然后对其进行平稳性检验。如果不是平稳的,就要想办法把它化成平稳的时间序列。之后需要对其进行LBQ检验。
    -为什么进行纯随机性检验?
    -如果它是白噪声序列,就没必要用统计的方法进行分析了。


    #for循环
    for (i in 1:2) print(Box.test(white_noise,lag = 6*i))

    在这里插入图片描述


    LBQ_p <- 1:24
    for(i in 1:24){
      LBQ <- Box.test(white_noise,lag = i)
      LBQ_p[i]<- LBQ$p.value
    }

    在这里插入图片描述

    教材40页例子

    c<-read.csv()#教材40页
    prop <- ts(c$prop,start = 1950)
    plot(prop)
    acf(prop,ylim=c(-1,1))
    
    for (i in 1:2) print(Box.test(prop,lag=6*i))
    

    在这里插入图片描述
    没有明显趋势,还是要用ACF检验

    在这里插入图片描述
    通过自相关看到前面几阶显著,后面就衰减了
    然后进行LBQ检验,只检验了6和12

    在这里插入图片描述
    发现p值都小于0.05,说明存在自相关情况,不是白噪声序列。

    展开全文
  • 序列的平稳性与纯随机性检验,模型的有效性,参数的显著性,最优模型准则AIC,SBC data <- scan() 126.4 82.4 78.1 51.1 90.9 76.2 104.5 87.4 110.5 25 69.3 53.5 39.8 63.6 46.7 72.9 79.6 83.6 80.7 60.3 79 ...
  • 平稳性检验 平稳性检验的方法分为描述性方法与计量性方法。描述性方法主要指时序图检验、ACF 图检验,计量性方法主要指 DF 检验、ADF 检验与PP检验。本文仅介绍描述性方法。 时序图检验 所谓时序图,就是一个二维平...
  • 三、纯随机性检验 Box.test(x, type= ,lag= )  x:变量名  type:检验统计量类型。type=“Box-Pierce”输出白噪声检验的Q统计量。该统计量为系统默认输出结果。type=“Ljung-Box”输出白噪声检验的...
  • 用python处理时间序列数据,检验平稳性跟纯随机性
  • R 随机性检验

    千次阅读 2018-07-02 21:38:24
    如果一组数据是随机的,那么就失去了建模的意义,所以需要对数据进行随机性检验R随机性检验:利用R的随机函数,生成一个10万个随机数,然后我们对其进行随机性检验p值为0.7404#纯随机性检验,p值小于5%,序列为非白...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 25,537
精华内容 10,214
关键字:

纯随机性检验