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.