
统计概论
|
239
9.14 游程检验
9.14.1 问题
数据是只有两个取值的序列:例如“是”和“否”、“0”和“1”、“真”和“假”或其他
二值数据。你想知道:序列是随机的吗?
9.14.2 解决方案
tseries 包中包含 runs.test 函数,该函数检查序列的随机性。序列应该是一个有
两个水平的因子:
library(tseries)
runs.test(as.factor(s))
runs.test 函数报告一个
p
值。通常,
p
值小于 0.05 表示序列可能不是随机的,而
p
值超过 0.05 则没有提供这样的证据。
9.14.3 讨论
游程(run)是由相同值组成的子序列,例如全是 1 或全是
0
。一个随机序列应该是这两
个值的随机混合,没有太多的游程。它也不应该包含
太少
的游程
—
一个完美的交替数
值序列(0,1,0,1,0,1,...),它不包含游程,但你会说它是随机的吗?
runs.test 函数检查序列中的游程次数。如果有太多或太少的游程,它会报告一个较
小的
p
值。
第一个示例生成
0
和 1 的随机序列,然后对该序列进行游程检验。毫不奇怪,runs.test
报告一个较大的
p
值,表明序列可能是随机的:
s <- sample(c(0, 1), 100, replace = T)
runs.test(as.factor(s))
#>
#> Runs Test
#>
#> data: as.factor(s)
#> Standard Normal = 0.1, p-value = 0.9
#> alternative ...