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

    用python处理时间序列数据,检验平稳性跟纯随机性

    from statsmodels.tsa.stattools import adfuller as adf
    from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
    import pandas as pd
    import numpy as np
    
    !pip install statsmodels
    
    Requirement already satisfied: statsmodels in c:\programdata\anaconda3\lib\site-packages (0.11.0)
    Requirement already satisfied: numpy>=1.14 in c:\programdata\anaconda3\lib\site-packages (from statsmodels) (1.18.1)
    Requirement already satisfied: scipy>=1.0 in c:\programdata\anaconda3\lib\site-packages (from statsmodels) (1.4.1)
    Requirement already satisfied: pandas>=0.21 in c:\programdata\anaconda3\lib\site-packages (from statsmodels) (1.0.1)
    Requirement already satisfied: patsy>=0.5 in c:\programdata\anaconda3\lib\site-packages (from statsmodels) (0.5.1)
    Requirement already satisfied: pytz>=2017.2 in c:\programdata\anaconda3\lib\site-packages (from pandas>=0.21->statsmodels) (2019.3)
    Requirement already satisfied: python-dateutil>=2.6.1 in c:\programdata\anaconda3\lib\site-packages (from pandas>=0.21->statsmodels) (2.8.1)
    Requirement already satisfied: six in c:\programdata\anaconda3\lib\site-packages (from patsy>=0.5->statsmodels) (1.14.0)
    
    data=pd.read_excel('./data.xls',encoding='utf-8')
    data
    
    timewc(误差随机项)xt1xt2xt3
    011.741.0000001.0001.000
    12-0.700.8000000.8000.800
    23-1.282.6500001.4401.430
    340.437.4400005.0944.060
    450.2413.80400010.2045.645
    ..................
    95961.55739.0866856908.698146.490
    96970.07748.3220117056.498147.345
    9798-0.73756.3832077205.072148.140
    98990.66765.1299247356.450150.725
    99100-0.44773.1879547508.420151.515

    100 rows × 5 columns

    对X1做平稳性检验

    xt1=data.xt1
    dftest=adf(xt1)
    pd.Series(dftest[0:4],index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])
    #p值高达0.9几
    
    Test Statistic                  0.678947
    p-value                         0.989408
    #Lags Used                      1.000000
    Number of Observations Used    98.000000
    dtype: float64
    
    xt1.plot()
    
    <matplotlib.axes._subplots.AxesSubplot at 0x238faff6208>
    

    在这里插入图片描述

    [output_6_1.png)]

    #一阶差分
    xt1_1 = xt1.diff(1)
    xt1_1.plot()
    
    <matplotlib.axes._subplots.AxesSubplot at 0x238fa6a5048>
    

    在这里插入图片描述

    [(output_7_1.png)]

    #一阶差分的单位根检验
    dftest_1 = adf(xt1_1.dropna())
    pd.Series(dftest_1[0:4],index=['Test Statistic','p-value','#Lags Used','Number of Observations Used'])
    #一阶差分后p值小于0.05,拒绝原假设(即不存在单位根,认为其已经平稳)
    
    Test Statistic                -6.056515e+00
    p-value                        1.241430e-07
    #Lags Used                     0.000000e+00
    Number of Observations Used    9.800000e+01
    dtype: float64
    
    dftest_1[1]-0.05
    
    -0.049999875856979056
    
    #画一阶差分之后的自相关图跟偏自相关图
    plot_acf(xt1_1.dropna())
    

    在这里插入图片描述

    [(output_10_0.png)]

    plot_pacf(xt1_1.dropna())
    

    在这里插入图片描述

    [(output_11_0.png)]

    X2做平稳性检验

    data.xt2.plot()
    
    <matplotlib.axes._subplots.AxesSubplot at 0x238fe204d88>
    

    在这里插入图片描述

    (output_13_1.png)]

    #做二阶差分
    x2_2=data.Xt2一阶差分.diff(1)
    x2_2.plot()
    
    <matplotlib.axes._subplots.AxesSubplot at 0x238fc1d7a48>
    

    在这里插入图片描述

    [output_14_1.png)]

    #对二阶差分后的Xt2做单位根检验
    adf(x2_2.dropna())
    #故拒绝原假设,该序列平稳
    
    (-7.1910449486700525,
     2.5032477359463947e-10,
     4,
     93,
     {'1%': -3.502704609582561,
      '5%': -2.8931578098779522,
      '10%': -2.583636712914788},
     260.6359245108364)
    
    #画二阶差分后的Xt2的自相关图跟偏自相关图
    plot_acf(x2_2.dropna())
    

    在这里插入图片描述

    (output_16_0.png)]

    plot_pacf(x2_2.dropna())
    

    在这里插入图片描述

    (output_17_1.png)]

    对X3做平稳性检验

    data.xt3.plot()
    
    <matplotlib.axes._subplots.AxesSubplot at 0x238fd5efc08>
    

    在这里插入图片描述

    (output_19_1.png)]

    #做一阶差分
    data.xt3.diff(1).plot()
    
    <matplotlib.axes._subplots.AxesSubplot at 0x238ff5dac88>
    

    在这里插入图片描述

    (output_20_1.png)]

    #对一阶差分后的序列做单位根检验
    adf(data.xt3.diff(1).dropna())
    
    (-10.661639595719135,
     4.391819453885797e-19,
     1,
     97,
     {'1%': -3.4996365338407074,
      '5%': -2.8918307730370025,
      '10%': -2.5829283377617176},
     257.9188344687909)
    
    adf(data.xt3.diff(1).dropna())[1]-0.05
    #故拒绝原假设,该序列平稳
    
    -0.05
    
    #对一阶差分后的Xt3画出自相关图跟偏自相关图
    plot_acf(data.xt3.diff(1).dropna())
    

    在这里插入图片描述

    (output_23_1.png)]

    plot_pacf(data.xt3.diff(1).dropna())
    

    在这里插入图片描述

    (output_24_1.png)]

    
    
    展开全文
  • 平稳性检验(描述性)与纯随机性检验

    万次阅读 多人点赞 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 检验,检验的是模型总体的显著性水平
    展开全文
  • 序列的平稳性纯随机性检验,模型的有效性,参数的显著性,最优模型准则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 ...

    问题:某城市过去63年中每年的降雪量数据(单位:mm).

    1. 判断该序列的平稳性与纯随机性
    2. 如果序列平稳且非白噪声,选泽适当模型拟合序列发展
    3. 利用拟合模型,预测该城市未来5年的降雪量
    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	74.4	49.6	54.7
    71.8	49.1	103.9	51.6	82.4	83.6	77.8	79.3
    89.6	85.5	58	120.7	110.5	65.4	39.9	40.1
    88.7	71.4	83	55.9	89.9	84.8	105.2	113.7
    124.7	114.5	115.6	102.4	101.4	89.8	71.5	70.9
    98.3	55.5	66.1	78.4	120.5	97	110	
    
    ts1 <- ts(data = data)
    #平稳性
    plot(ts1,main='时序图') 
    acf(data,main='自相关图') 
    
    
    for (i in 1:2) print(Box.test(ts1,type = "Ljung-Box",lag=6*i))
    #延迟6阶时,该序列p值小于alpha=0.05 ,可判为非白噪声序列.
    
    pacf(data,main='偏自相关图')
    
    #模型口径确定
    x.fit <- arima(ts1,order = c(0,0,2),method = 'ML');x.fit  #ma(2) 似然法
    y.fit <- arima(ts1,order = c(0,0,2),method = 'CSS');y.fit  #ma(2) 最小二乘法
    z.fit <- arima(ts1,order = c(0,0,2),method = 'CSS-ML');z.fit  #ma(2) 混合法
    
    #模型的有效性检验
    for (i in 1:2) print(Box.test(z.fit$residuals,lag=6*i))
    
    #参数的显著性检验
    t1 <- 0.2971/0.1267
    t2 <- 0.2989/0.1136
    t0 <- 80.8990/4.3118 
    t <- c(t1,t2,t0)
    pt(t,df=length(data)-3,lower.tail = F) #1.117896e-02 5.399712e-03 4.364735e-27
    
    #两个准则
    z.fit$aic #AIC
    z.fit$loglik *(-2) + log(63)*(2+2)  #SBC
    
    #预测
    z.fore <- forecast(z.fit,h = 5);z.fore #预测值
    plot(z.fore) #预测图
    

    (1)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BKwNpvmG-1591880056229)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200611181745305.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-mcJlCgYD-1591880056235)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200611181938859.png)]

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8fIBRJHw-1591880056240)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200611182033179.png)]

    时序图显示,序列没有显著非平稳特征.白噪声检验显示序列值彼此之间蕴涵着短期相关关系,为非白噪声序列.

    自相关图显示,除了延迟1~2阶的自相关系数在2倍标准差范围之外,其他阶数的自相关系数都在2倍标准差范围内波动.根据自相关系数的这个特点可以判断该序列具有短期相关性,进一步确定序列平稳.

    综上,该序列为平稳非白噪声的。

    (2)

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-A5B8gYwV-1591880056244)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200611191813207.png)]

    结合自相关图和偏自相关图暂定模型为MA(2).

    #模型口径确定
    x.fit <- arima(ts1,order = c(0,0,2),method = 'ML');x.fit  #ma(2) 似然法
    y.fit <- arima(ts1,order = c(0,0,2),method = 'CSS');y.fit  #ma(2) 最小二乘法
    z.fit <- arima(ts1,order = c(0,0,2),method = 'CSS-ML');z.fit  #ma(2) 混合法
    
    ------------------------------------结果--------------------------------------------
    Coefficients:
             ma1     ma2  intercept
          0.2971  0.2989    80.8990
    s.e.  0.1267  0.1136     4.3118
    
    sigma^2 estimated as 467.6:  log likelihood = -283.16,  aic = 574.32
    
    > y.fit <- arima(ts1,order = c(0,0,2),method = 'CSS');y.fit  #ma(2) 最小二乘法
    Call:
    arima(x = ts1, order = c(0, 0, 2), method = "CSS")
    Coefficients:
             ma1     ma2  intercept
          0.2846  0.2839    81.1372
    s.e.  0.1262  0.1113     4.2620
    sigma^2 estimated as 472.9:  part log likelihood = -283.4
    > z.fit <- arima(ts1,order = c(0,0,2),method = 'CSS-ML');z.fit  #ma(2) 混合法
    Call:
    arima(x = ts1, order = c(0, 0, 2), method = "CSS-ML")
    Coefficients:
             ma1     ma2  intercept
          0.2971  0.2989    80.8990
    s.e.  0.1267  0.1136     4.3118
    sigma^2 estimated as 467.6:  log likelihood = -283.16,  aic = 574.32
    

    使用极大似然估计可以确定MA(2)的模型口径为
    x t = 80.8990 + ( 1 + 0.2971 B + 0.2989 B 2 ) ε t , V a r ( ε t ) = 476.6 x_t=80.8990+(1+0.2971B+0.2989B^2)\varepsilon _{t},Var(\varepsilon _{t})=476.6 xt=80.8990+(1+0.2971B+0.2989B2)εt,Var(εt)=476.6

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OA2MFG9a-1591880056247)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200611192701505.png)]

    • 模型的有效性检验
      模型的显著性检验主要是检验模型的有效性.一个模型是否显著有效主要看它提取的信息是否充分.一个好的拟合模型应该能够提取观察值序列中几乎所有的样本相关信息,换言之,拟合残差项中将不再蕴涵任何相关信息,即残差序列应该为白噪声序列.这样的模型称为显著有效模型。
      反之,如果残差序列为非白噪声序列,那就意味着残差序列中还残留着相关信息未被提取,这就说明拟合模型不够有效,通常需要选择其他模型,重新拟合.

      残差检验结果显示,残差序列可视为白噪声序列,这说明拟合模型MA(2)显著有效.

    • 参数的显著性检验

      α = 0.05 \alpha=0.05 α=0.05时,参数的显著性检验的P值为:1.117896e-02, 5.399712e-03 ,4.364735e-27

      检验结果显示,三个参数均显著非零。

    参数的显著性检验就是要检验每一个未知参数是否显著非零.这个检验的目的是使模型最精简。
    如果某个参数不显著,即表示该参数所对应的那个自变量对因变量的影响不明显,该自变量可以从拟合模型中剔除.最终模型将由一系列参数显著非零的自变量表示.

    • 模型优化准则
      AIC=574.3202,SBC=582.8927

      若一个拟合模型通过了检验,说明在一定的置信水平下,该模型能够有效地拟合观察值序列的波动,但这种有效模型并不是唯一的.
      同一个序列可以构造两个拟合模型,两个模型都显著有效,那么到底该选择哪个模型用于统计推断呢?
      为了解决这个问题,引进AIC和SBC(BIC)信息准则的概念进行模型优化.
      AIC准则是拟合精度和参数个数的加权函数:
      A I C = − 2 l n ( 模型的极大似然函数值 ) + 2 ( p + q + 2 ) AIC=-2ln(\text{模型的极大似然函数值})+2(p+q+2) AIC=2ln(模型的极大似然函数值)+2(p+q+2)
      使AIC函数达到最小的模型被认为是最优模型.
      S B C = − 2 l n ( 模 型 的 极 大 似 然 函 数 值 ) + l n ( n ) ⋅ ( p + q + 2 ) SBC=-2ln(模型的极大似然函数值)+ln(n)\cdot(p+q+2) SBC=2ln()+ln(n)(p+q+2)
      在所有通过检验的模型中使得AIC或SBC函数达到最小的模型为相对最优模型.之所以称为相对最优模型而不是绝对最优模型,是因为我们不可能比较所有模型的AIC和SBC函数值,我们总是在尽可能全面的范围里考察有限多个模型

    • 预测

    PointForecast0.8下置信区间0.8上置信区间0.95下置信区间0.95上置信区间
    6486.1776258.46672113.888543.79745128.5578
    6585.9028856.99458114.811241.69145130.1143
    6680.8990350.82791110.970134.90922126.8888
    6780.8990350.82791110.970134.90922126.8888
    6880.8990350.82791110.970134.90922126.8888

    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YkPodukt-1591880056249)(C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20200611204938668.png)]

    R中的相关函数

    自动定阶函数

    为避免因个人经验不足导致模型判断不准确的问题,R提供了auto.arima函数。
    该函数基于信息最小原则自动识别模型阶数,并给出模型的参数估计值。
    使用前,要先下载zoo和forecast包,并用library调用。
    auto.arima(x,max.p=5,max.q=,ic=)
    式中:
    -x:需要定阶的序列名.
    -max.p:自相关系数最高阶数,不特殊指定的话,系统默认值为5.
    -max.q:移动平均系数最高阶数,不特殊指定的话,系统默认值为5.
    -ic:指定信息量准则.ic有“aicc",“aic"和“bic“三个选项.系统默认AIC准则.

    ps:有时选择不同的信息量准则会导致模型的识别阶数不同。有时系统指定的模型阶数会高于真实阶数.

    chooseCRANmirror()  #选择镜像 17 China (Shanghai)
    install.packages('zoo')
    install.packages('forecast')
    library(zoo)
    library(forecast)
    auto.arima(data)  #ARIMA(0,1,1)  #自动定阶
    

    模型参数估计函数

    R中参数估计用arima函数,格式为:
    arima(x, order=, include.mean=, method=)
    -x:要进行模型拟合的序列名
    -order:指定模型阶数.order=c(p,d,q)
    (1) p为自回归阶数
    (2) d为差分阶数
    (3) q为移动平均阶数
    -include.mean:要不要包含常熟项,默认包含(T),可设为不包含(F)
    -method:指定参数估计方法,有三个值
    (1) “CSS-ML”,默认方法,为条件最小二乘与极大似然估计的混合方法
    (2) “ML”,极大似然估计
    (3) “CSS”,条件最小二乘估计

    t分布的P值函数

    在这里插入图片描述

    序列预测函数

    在这里插入图片描述

    参考文献:时间序列分析:基于R/王燕编著.一北京:中国人民大学出版社,2015.3

    展开全文
  • 时间序列的平稳性检验与随机性检验

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

    1. 时间序列的定义

    1.1 什么是时间序列

        在统计研究中,常用按时间顺序排列的一组随机变量 X 1 , X 2 , ⋯ &ThinSpace; , X t , ⋯ X _ { 1 } , X _ { 2 } , \cdots , X _ { t } , \cdots X1,X2,,Xt,来表示一个随机事件的时间序列,简记为 { X t , t ∈ T } \left\{ X _ { t } , t \in T \right\} {Xt,tT} { X t } \left\{ X _ { t } \right\} {Xt}。用 x 1 , x 2 , ⋯ &ThinSpace; , x n x _ { 1 } , x _ { 2 } , \cdots , x _ { n } x1,x2,,xn { x t , t = 1 , 2 , ⋯ &ThinSpace; , n } \left\{ x _ { t } , t = 1,2 , \cdots , n \right\} {xt,t=1,2,,n}表示该序列的 n n n个有序观测值。时间序列在我们的日常生活中比比皆是,比如一支股票每小时的价格、一个公司每月份的营业收入等等。

    1.2 时间序列分析方法

        对于时间序列的分析方法一般可以分为两种,即描述性时序分析统计时序分析,描述性时序分析指的是通过可视化的形式观察时间序列的趋势,从中发现规律,而统计时序分析则表示通过一些统计学的方法来研究时间序列中的规律。统计时序分析又可以分为频域分析方法时域分析方法,其中,频域分析方法假设任何一种无趋势的时间序列都可以分解成若干不同频率的周期波动,从频率的角度来揭示时间序列的规律;而时域分析方法则从序列的自相关角度来揭示时间序列的规律,该方法假设序列值之间存在一定的相关关系,而这种相关关系具有一定的规律,通过模型来拟合这种规律,并利用模型来对预测未来的趋势进行预测。

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

        对于一个时间序列,在进行建模之前,首先需要进行平稳性检验和纯随机性检验,然后根据检验的结果再选择适合的模型。在讲解平稳性和随机性的定义之前,我们先介绍一下时间序列中常用的几个特征统计量。

    2.1 时间序列的特征统计量

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

    • 均值:表示时间序列在各个时刻取值的平均值,其定义如下:
      μ t = E X t = ∫ − ∞ ∞ x d F t ( x ) \mu _ { t } = E X _ { t } = \int _ { - \infty } ^ { \infty } x \mathrm { d } F _ { t } ( x ) μt=EXt=xdFt(x)
    • 方差:表示时间序列在各个时刻围绕其均值波动的平均程度,其定义如下:
      σ t 2 = D X t = E ( X t − μ t ) 2 = ∫ − ∞ ∞ ( x − μ t ) 2 d F t ( 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 ) σt2=DXt=E(Xtμt)2=(xμt)2dFt(x)
    • 自协方差函数:表示时间序列任意两个时刻直接的相关性,任取 t , s ∈ T t , s \in T t,sT,则其定义如下:
      γ ( t , s ) = E [ ( X t − μ t ) ( X s − μ s ) ] \gamma ( t , s ) = E \left[ \left( X _ { t } - \mu _ { t } \right) \left( X _ { s } - \mu _ { s } \right) \right] γ(t,s)=E[(Xtμt)(Xsμs)]
    • 自相关系数:同自协方差函数,其定义如下:
      ρ ( t , s ) = γ ( t , s ) D X t ⋅ D X s \rho ( t , s ) = \frac { \gamma ( t , s ) } { \sqrt { D X _ { t } \cdot D X _ { s } } } ρ(t,s)=DXtDXs γ(t,s)

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

    2.2.1 平稳时间序列的定义

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

    • 严平稳时间序列:指时间序列的所有统计性质不会随着时间的推移而发生变化,即其联合概率分布在任何时间间隔都是相同的。设 { X t } \left\{ X _ { t } \right\} {Xt}为一时间序列,对任意的正整数 m m m,任取 t 1 , t 2 , ⋯ &ThinSpace; , t m ∈ T t _ { 1 } , t _ { 2 } , \cdots , t _ { m } \in T t1,t2,,tmT,对任意整数 τ \tau τ,有:
      F t 1 , t 2 , ⋯ &ThinSpace; , t m ( x 1 , x 2 , ⋯ &ThinSpace; , x m ) = F t 1 + τ , t 2 + τ , ⋯ &ThinSpace; , t m + τ ( x 1 , x 2 , ⋯ &ThinSpace; , x m ) 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) Ft1,t2,,tm(x1,x2,,xm)=Ft1+τ,t2+τ,,tm+τ(x1,x2,,xm)则称时间序列 { X t } \left\{ X _ { t } \right\} {Xt}为严平稳时间序列。

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

      • 任取 t ∈ T t \in T tT,有 E X t 2 &lt; ∞ E X _ { t } ^ { 2 } &lt; \infty EXt2<
      • 任取 t ∈ T t \in T tT,有 E X t = μ E X _ { t } = \mu EXt=μ,其中 μ \mu μ为常数;
      • 任取 t , s , k ∈ T t , s , k \in T t,s,kT k + s − t ∈ T k + s - t \in T k+stT,有 γ ( t , s ) = γ ( k , k + s − t ) \gamma ( t , s ) = \gamma ( k , k + s - t ) γ(t,s)=γ(k,k+st)

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

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

        由于平稳时间序列具有这些优良性质,因此,对于一个平稳时间序列来说,其待估计的参数量就变得少了很多,因为他们的均值、方差都是一样的,因此,可以利用全部的样本来估计总体的均值和方差,即:
    μ ^ = x ‾ = ∑ i = 1 n x i n γ ^ ( 0 ) = ∑ t = 1 n ( x t − x ‾ ) 2 n − 1 \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 } μ =x=ni=1nxiγ (0)=n1t=1n(xtx)2这也是为什么说当拿到一个时间序列后,需要对其进行平稳性检验。

    2.2.2 平稳时间序列的检验

        那么,当拿到一个时间序列后,应该如何对其进行平稳性的检验呢?目前,对时间序列的平稳性检验主要有两种方法,一种是图检法,即根据时序图和自相关图进行直观判断,另一种是构造检验统计量的方法,目前主要有单位根检验法。
        对于图检法,我们一般绘制时间序列的时序图,如下图所示,如果时间序列是平稳的,那么序列应该是围绕某一个均值上下随机波动,而下图中的序列明显具有一定的增长趋势,因此,可以断定该序列肯定不是平稳时间序列。
    图1 时序图
        另一方面,我们也可以通过自相关图来进行检验,对于平稳时间序列,其自相关图一般随着阶数的递增,自相关系统会迅速衰减至0附近,而非平稳时间序列则可能存在先减后增或者周期性波动等变动。如下图所示,该时间序列随着阶数的递增,自相关系数先减后增,因此,可以判断该时间序列不是平稳时间序列。
    在这里插入图片描述

    2.3 随机性时间序列的定义与检验

    2.3.1 随机性时间序列的定义

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

    • 任取 t ∈ T t \in T tT,有 E X t = μ E X _ { t } = \mu EXt=μ
    • 任取 t , s ∈ T t , s \in T t,sT,有
      γ ( t , s ) = { σ 2 , t = s 0 , t ≠ s \gamma ( t , s ) = \left\{ \begin{array} { l l } { \sigma ^ { 2 } , } &amp; { t = s } \\ { 0 , } &amp; { t \neq s } \end{array} \right. γ(t,s)={σ2,0,t=st̸=s

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

    2.3.2 纯随机性检验

        对于纯随机性序列,一般通过构建统计量的方法来检验。我们知道,白噪声序列除了0阶自相关系数外,即方差,其他阶的自相关系数应该均为0,因此,我们可以提出下面这样一个假设:
    H 0 : ρ 1 = ρ 2 = ⋯ = ρ m = 0 , ∀ m ⩾ 1 H 1 : 至 少 存 在 某 个 ρ k ≠ 0 , ∀ m ⩾ 1 , k ⩽ m H _ { 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 H0:ρ1=ρ2==ρm=0,m1H1:ρk̸=0,m1,km因此,围绕该假设,我们可以构建统计量进行检验,常用的统计量有Q统计量和LB统计量,其计算公式分别如下:
    Q = n ∑ k = 1 m ρ ^ k 2 L B = n ( n + 2 ) ∑ k = 1 m ( ρ ^ k 2 n − k ) 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) Q=nk=1mρ k2LB=n(n+2)k=1m(nkρ k2)其中, n n n为序列的观察期数, m m m为指定延迟期数, k k k为延迟阶数,Box和Pierce证明这两个统计量均服从自由度为 m m m的卡方分布,当统计量大于 χ 1 − α 2 ( m ) \chi _ { 1 - \alpha } ^ { 2 } ( m ) χ1α2(m)或者P值小于 α \alpha α时,则认为可以拒绝原假设,即认为该序列是非随机序列。

    展开全文
  • 平稳性检验 平稳性检验的方法分为描述性方法与计量性方法。描述性方法主要指时序图检验、ACF 图检验,计量性方法主要指 DF 检验、ADF 检验与PP检验。本文仅介绍描述性方法。 时序图检验 所谓时序图,就是一个二维平...

空空如也

空空如也

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

平稳性和纯随机性