13.8 Run Test
\[P(u \leq u') = \sum_{u=2}^{u'}f_u \div \binom{m + n}{m}\] where
\(f_u = 2 \binom{m-1}{k-1} \binom{n-1}{k-1}, \quad k=\frac{u}{2}\), when is even;
and
\(f_u = \binom{m-1}{k-1} \binom{n-1}{k-2} + \binom{m-1}{k-2} \binom{n-1}{k-1}, \quad k=\frac{u+1}{2}\), when is odd.
run.p
## function (m, n, r)
## {
## if (m == 0 & r == 1) {
## return(1)
## }
## else if (m > n | m < 1 | n < 1 | r < 2 | (r > min(m + n,
## 2 * m + 1))) {
## return(0)
## }
## sumfu = 0
## for (u in 2:r) {
## if (u%%2 == 0) {
## k = u/2
## fu = 2 * choose(m - 1, k - 1) * choose(n - 1, k -
## 1)
## }
## else {
## k = (u + 1)/2
## fu = choose(m - 1, k - 1) * choose(n - 1, k - 2) +
## choose(m - 1, k - 2) * choose(n - 1, k - 1)
## }
## sumfu = sumfu + fu
## }
## return(sumfu/choose(m + n, m))
## }
## <bytecode: 0x000001e2b2bff5a8>
## <environment: namespace:math>
run.test
## function (Residuals)
## {
## Resid = Residuals[Residuals != 0]
## nResid = length(Resid)
## r = Resid > 0
## m = sum(r)
## if (nResid > 1) {
## j = 2:nResid
## run = sum(abs(r[j] - r[j - 1])) + 1
## }
## else {
## run = 1
## }
## m = min(m, nResid - m)
## n = max(m, nResid - m)
## if (run > 1) {
## p = prun(m, n, run)
## if (p > 0.5) {
## p = 1 - prun(m, n, run - 1)
## }
## }
## else {
## p = 0.5^(nResid - 1)
## }
## Result = list(m, n, run, p)
## names(Result) = c("m", "n", "run", "p.value")
## return(Result)
## }
## <bytecode: 0x000001e2ade6bd48>
## <environment: namespace:wnl>
Exercise: Compare run.p results with other books or software.