伯努利过程中是否存在独立性测试?

机器算法验证 假设检验 二项分布
2022-03-22 06:52:21

我有一个二进制输出的过程。是否有标准方法来测试它是否是伯努利过程?问题转化为检查每个试验是否独立于先前的试验。

我观察到一些过程,结果“坚持”了一些试验。

2个回答

我认为您可以设计大量测试,而正确的选择取决于您想到的替代假设……我只想说几句。我把这篇文章放在社区 wiki 下,因为我觉得它可以改进很多。

  • 第一个想法是:将您的样本分成 n 个大小为 k 的子样本;如果实验是独立的,在样本编号中,成功次数,因此您有个二项式变量的独立值这可以通过测试来测试。的选择将取决于总样本量...)iXiBin(k,p)nX1,,Xnχ2n,k

  • 考虑到您对坚持多次试验的过程的评论,您似乎认为连续实验之间存在正相关。我认为在这种情况下,上述测试可能很强大。但是,您可以在试验序列中考虑运行的长度:表示 (resp. ) 1 运行的长度 (resp. 0 运行),你有 这些是几何分布,请注意:在 R 等一些软件中,移动了您可以再次测试观察值的拟合优度。L1L0

    P(L1=k)=pk1(1p),
    P(L0=k)=(1p)k1p.
    k1

  • 我不知道前面的建议与Wald–Wolfowitz runs test相比表现如何。

  • 特别注意的情况,因为这是由随机数生成器生成的随机位序列的情况。乔治·马萨利亚(George Marsaglia)设计了许多测试,名为“顽固测试电池” 。您当然可以将(大部分)这些测试推广到案例(但是这值得吗?)p=12p12

让值序列是随机变量的实现,每个变量均作为 Bernoulli( ) 变量(未知)同分布。当它们独立时,序列是具有转移概率的马尔可夫链Xi1inpp

Pr(x0)=1p,Pr(x1)=p

对于该序列产生(可能)独立转换 ,,可以概括为它们的计数的矩阵。序列的独立性意味着该表的独立性。因此,测试表的独立性,如果测试显着,则拒绝独立序列的假设。x=0,1n1XiXi+11in12×2

例如,这里是 24 个二进制结果的序列:

1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 0 0

此序列中的 23 个转换是 1->1、1->1、...、1->0、0->0、0->0。他们的计数表是

To:      0  1
From  0: 3  2
      1: 3 15

其卡方统计量为 1.8947。p 值为 0.1687(使用卡方近似,由于表中的单元格计数较小,这不是很好):没有相关性的证据。实际上,这 24 个值是随机且独立地生成的,结果为 1 的可能性为 2/3,结果为 0 的可能性为 1/3(即)。p=2/3

如果独立性假设未被拒绝,您可以继续检验高阶相关性或季节性相关性(通过检查从季节到季节的转换,而不是在连续值之间)。

R这是计算任何所需阶数 (1, 2, ...) 的卡方检验 p 值并模拟零分布的示例代码如果您希望)。

set.seed(17)
x<-rbinom(256,1,2/3)             # Sample data generated with the null distribution.
cc <- function(x,k) {            # Chi-squared test of kth order independence in x.
    n <- length(x)-k-1
    m <- sapply(1:k, function(j) x[j:(n+j)])
    y <- m %*% (2^(0:(k-1)))     # Classifies length-k subsequences of x
    chisq.test(y, x[(k+1):length(x)])$p.value
}
sapply(1:2, function(k) cc(x,k)) # P-values for chi-squared tests of orders 1, 2.
order <- 1                       # Use 2 for second order, etc.
hist(replicate(999, cc(sample(x),order))) # Simulated null distribution of the p-value.