白噪声:
,其均值为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值 |
1 | 1.99 | 0.158 | 19 | 15.081 | 0.717 |
2 | 2.286 | 0.319 | 20 | 15.271 | 0.761 |
3 | 2.377 | 0.498 | 21 | 15.624 | 0.79 |
4 | 2.991 | 0.559 | 22 | 16.017 | 0.815 |
5 | 5.771 | 0.329 | 23 | 17.192 | 0.8 |
6 | 5.894 | 0.435 | 24 | 18.866 | 0.759 |
7 | 5.895 | 0.552 | 25 | 19.013 | 0.797 |
8 | 6.1 | 0.636 | 26 | 19.021 | 0.836 |
9 | 6.108 | 0.729 | 27 | 19.029 | 0.869 |
10 | 6.266 | 0.792 | 28 | 20.937 | 0.828 |
11 | 8.771 | 0.643 | 29 | 24.41 | 0.708 |
12 | 10.422 | 0.579 | 30 | 25.039 | 0.723 |
13 | 10.691 | 0.637 | 31 | 25.979 | 0.722 |
14 | 12.854 | 0.538 | 32 | 28.552 | 0.642 |
15 | 13.37 | 0.574 | 33 | 30.08 | 0.613 |
16 | 13.373 | 0.645 | 34 | 30.451 | 0.642 |
17 | 13.585 | 0.696 | 35 | 33.369 | 0.547 |
18 | 15.074 | 0.657 | 36 | 33.769 | 0.575 |
由以上结果,我们看到QM检验的结果基本上都认为差分序列为纯随机序列,没有分析的价值.
以下我们再来看个例子(参见平台下的ARMA_Demo2函数):1949年到2001年的中国人口时间序列数据,如表
中国人口时间序列数据(单位:亿人)
年份 | 人口 | 年份 | 人口 | 年份 | 人口 | 年份 | 人口 | 年份 | 人口 |
1949 | 5.4167 | 1960 | 6.6207 | 1971 | 8.5229 | 1982 | 10.159 | 1993 | 11.8517 |
1950 | 5.5196 | 1961 | 6.5859 | 1972 | 8.7177 | 1983 | 10.2764 | 1994 | 11.985 |
1951 | 5.63 | 1962 | 6.7295 | 1973 | 8.9211 | 1984 | 10.3876 | 1995 | 12.1121 |
1952 | 5.7482 | 1963 | 6.9172 | 1974 | 9.0859 | 1985 | 10.5851 | 1996 | 12.2389 |
1953 | 5.8796 | 1964 | 7.0499 | 1975 | 9.242 | 1986 | 10.7507 | 1997 | 12.3626 |
1954 | 6.0266 | 1965 | 7.2538 | 1976 | 9.3717 | 1987 | 10.93 | 1998 | 12.4761 |
1955 | 6.1465 | 1966 | 7.4542 | 1977 | 9.4974 | 1988 | 11.1026 | 1999 | 12.5786 |
1956 | 6.2828 | 1967 | 7.6368 | 1978 | 9.6259 | 1989 | 11.2704 | 2000 | 12.6743 |
1957 | 6.4653 | 1968 | 7.8534 | 1979 | 9.7542 | 1990 | 11.4333 | 2001 | 12.7627 |
1958 | 6.5994 | 1969 | 8.0671 | 1980 | 9.8705 | 1991 | 11.5823 | | |
1959 | 6.7207 | 1970 | 8.2992 | 1981 | 10.0072 | 1992 | 11.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是平稳时间序列,知道了这个,