我有一个二进制输出的过程。是否有标准方法来测试它是否是伯努利过程?问题转化为检查每个试验是否独立于先前的试验。
我观察到一些过程,结果“坚持”了一些试验。
我有一个二进制输出的过程。是否有标准方法来测试它是否是伯努利过程?问题转化为检查每个试验是否独立于先前的试验。
我观察到一些过程,结果“坚持”了一些试验。
我认为您可以设计大量测试,而正确的选择取决于您想到的替代假设……我只想说几句。我把这篇文章放在社区 wiki 下,因为我觉得它可以改进很多。
第一个想法是:将您的样本分成 n 个大小为 k 的子样本;如果实验是独立的,在样本编号中,成功次数是,因此您有个二项式变量的独立值。这可以通过测试来测试。(的选择将取决于总样本量...)
考虑到您对坚持多次试验的过程的评论,您似乎认为连续实验之间存在正相关。我认为在这种情况下,上述测试可能很强大。但是,您可以在试验序列中考虑运行的长度:表示 (resp. ) 1 运行的长度 (resp. 0 运行),你有 这些是几何分布,请注意:在 R 等一些软件中,移动了。您可以再次测试观察值的拟合优度。
我不知道前面的建议与Wald–Wolfowitz runs test相比表现如何。
特别注意的情况,因为这是由随机数生成器生成的随机位序列的情况。乔治·马萨利亚(George Marsaglia)设计了许多测试,名为“顽固测试电池” 。您当然可以将(大部分)这些测试推广到案例。(但是这值得吗?)
让值序列是随机变量、的实现,每个变量均作为 Bernoulli( ) 变量(未知)同分布。当它们独立时,序列是具有转移概率的马尔可夫链
对于。该序列产生(可能)独立转换 ,,可以概括为它们的计数的矩阵。序列的独立性意味着该表的独立性。因此,测试表的独立性,如果测试显着,则拒绝独立序列的假设。
例如,这里是 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(即)。
如果独立性假设未被拒绝,您可以继续检验高阶相关性或季节性相关性(通过检查从季节到季节的转换,而不是在连续值之间)。
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.