R语言:纯随机性检验

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

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

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))

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

  • 8
    点赞
  • 0
    评论
  • 39
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

©️2021 CSDN 皮肤主题: 数字20 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值