知识库 > 数学方法 > 时间序列分析 > ARMA模型

随机性检验    

  • 白噪声:,其均值为0,序列之间互不相关,方差为常数,但一般不能保证其服从正态分布。
    时间序列分析主要特征在于时间序列的顺序性,连续观测到的数据通常不再是独立,而是同其所在位置相互相关。如果时间序列具有独立性或说随机性,那我们认为该序列没有研究的必要。
    Ljung和Box提出的修正Qm统计量,用于检验序列是否为白噪声(自相关系数为0),原假设为白噪声序列或说自相关系数为0,即纯随机序列。如果时间序列是由白噪声生成,可以证明对于所有的,在样本容量足够大的情况下,样本自相关系数近似服从均值为0,方差为1/T的正态分布.
    Qm统计量是对所有,自相关系数都为0的联合假设:

    其中:是自相关系数,T是样本容量,m是最大滞后长度

    定义:Time_RandomTest(y:Array,M:Integer,Alpha:Real):Array
    说明:Ljung和Box提出的修正Qm统计量,用于检验序列是否为白噪声,原假设为白噪声序列,即纯随机序列。
    参数:
    y:样本序列,为一维数组类型
    M:最大滞后长度,整数类型,一般取样本数的四分之一
    alpha:显著性水平,实数类型,取值在0-1之间

    我们来查看下,上证收盘价差分后的数据的随机性检验:

    ret := array();
    for i := 1 to 36 do
    begin
    temp := Time_RandomTest(dclose,i,0.05);
    ret[i-1] := array(temp["Qm-Stat"],temp["P-Value"]);
    end
    return ret;

    滞后阶数QM统计量P值滞后阶数QM统计量P值
    11.990.1581915.0810.717
    22.2860.3192015.2710.761
    32.3770.4982115.6240.79
    42.9910.5592216.0170.815
    55.7710.3292317.1920.8
    65.8940.4352418.8660.759
    75.8950.5522519.0130.797
    86.10.6362619.0210.836
    96.1080.7292719.0290.869
    106.2660.7922820.9370.828
    118.7710.6432924.410.708
    1210.4220.5793025.0390.723
    1310.6910.6373125.9790.722
    1412.8540.5383228.5520.642
    1513.370.5743330.080.613
    1613.3730.6453430.4510.642
    1713.5850.6963533.3690.547
    1815.0740.6573633.7690.575

    由以上结果,我们看到QM检验的结果基本上都认为差分序列为纯随机序列,没有分析的价值.
    以下我们再来看个例子(参见平台下的ARMA_Demo2函数):1949年到2001年的中国人口时间序列数据,如表
            中国人口时间序列数据(单位:亿人)
    年份人口年份人口年份人口年份人口年份人口
    19495.416719606.620719718.5229198210.159199311.8517
    19505.519619616.585919728.7177198310.2764199411.985
    19515.6319626.729519738.9211198410.3876199512.1121
    19525.748219636.917219749.0859198510.5851199612.2389
    19535.879619647.049919759.242198610.7507199712.3626
    19546.026619657.253819769.3717198710.93199812.4761
    19556.146519667.454219779.4974198811.1026199912.5786
    19566.282819677.636819789.6259198911.2704200012.6743
    19576.465319687.853419799.7542199011.4333200112.7627
    19586.599419698.067119809.8705199111.5823
    19596.720719708.2992198110.0072199211.7171

     
    人口数据           人口数据差分

    pop := array(5.41669999999999,5.51959999999999,5.63,5.7482,5.8796,6.0266,
    6.1465,6.2828,6.4653,6.5994,6.7207,6.6207,6.5859,6.7295,6.9172,7.0499,7.2538,
    7.4542,7.6368,7.8534,8.0671,8.2992,8.5229,8.7177,8.92109999999999,9.0859,9.242,
    9.3717,9.4974,9.6259,9.7542,9.8705,10.0072,10.159,10.2764,10.3876,10.5851,
    10.7507,10.93,11.1026,11.2704,11.4333,11.5823,11.7171,11.8517,11.985,12.1121,
    12.2389,12.3626,12.4761,12.5786,12.6743,12.7627);
    ret := Times_ADFTest(pop,0,1,"AIC",0,0.1); //检验平稳性,结果显示,不平稳
    dpop := time_diff(pop);
    ret := Times_ADFTest(dpop,0,1,"AIC",0,0.1); //检验平稳性,结果显示序列平稳

    经检验我们可以做到pop是非平稳时间序列,而dpop是平稳时间序列,知道了这个,