월드 - 울포위츠는 테스트 실행 에 "실행이"당신이 "행진"이라는 것입니다 가능한 후보가 될 것으로 보인다. 이분법적인 데이터가 필요하므로 제안한 평균 시간과 같은 일부 임계 값에 따라 각 해결 방법을 "나쁜"대 "양호한"레이블로 지정해야합니다. 귀무 가설은 "좋은"과 "나쁜"이 교대로 무작위로 해결된다는 것입니다. 직감에 해당하는 일측 대안 가설은 "양호"가 긴 줄에서 덩어리를 함께 해결하여 임의의 데이터에서 예상보다 실행이 적다는 것을 의미합니다. 테스트 통계량은 실행 횟수입니다. R에서 :
> N <- 200 # number of solves
> DV <- round(runif(N, 15, 30), 1) # simulate some uniform data
> thresh <- median(DV) # threshold for binary classification
# do the binary classification
> DVfac <- cut(DV, breaks=c(-Inf, thresh, Inf), labels=c("good", "bad"))
> Nj <- table(DVfac) # number of "good" and "bad" solves
> n1 <- Nj[1] # number of "good" solves
> n2 <- Nj[2] # number of "bad" solves
> (runs <- rle(as.character(DVfac))) # analysis of runs
Run Length Encoding
lengths: int [1:92] 2 1 2 4 1 4 3 4 2 5 ...
values : chr [1:92] "bad" "good" "bad" "good" "bad" "good" "bad" ...
> (nRuns <- length(runs$lengths)) # test statistic: observed number of runs
[1] 92
# theoretical maximum of runs for given n1, n2
> (rMax <- ifelse(n1 == n2, N, 2*min(n1, n2) + 1))
199
관측치가 적은 경우 귀무 가설 하에서 각 런 수에 대한 정확한 확률을 계산할 수 있습니다. 그렇지 않으면, "실행 횟수"의 분포는 표준 정규 분포로 근사 할 수 있습니다.
> (muR <- 1 + ((2*n1*n2) / N)) # expected value
100.99
> varR <- (2*n1*n2*(2*n1*n2 - N)) / (N^2 * (N-1)) # theoretical variance
> rZ <- (nRuns-muR) / sqrt(varR) # z-score
> (pVal <- pnorm(rZ, mean=0, sd=1)) # one-sided p-value
0.1012055
p- 값은 "양호한"해를 구하는 단선 대체 가설에 대한 것입니다.