signed_rank = function( data ){ # # The large sample Wilcoxon signed rank test. # ad = abs(data) r = rank( ad, ties.method='average' ) z = rep( 0, length(data) ) z[ data > 0 ] = 1 w = sum( z * r ) n = length(data) m = n*(n+1)/4 # expected mean under H_0 v = n*(n+1)*(2*n+1)/24 # expected variance under H_0 z = ( w - m ) / sqrt(v) res = list( w=w, n=n, m=m, v=v, z=z ) res } rank_sum = function( X, y ){ # # The Wilcoxon rank sum test # n = length(x) m = length(y) #stopifnot( (n>10) & (m>10) ) combined = c( x, y ) r = rank( combined, ties.method='average' ) # Our statistic is then the sum of the first n (the number of elements in x) ranks: w_prime = sum( r[1:n] ) expected_w_prime = n*(n+m+1)/2 expected_var_w_prime = n*m*(n+m+1)/12 z = ( w_prime - expected_w_prime )/sqrt(expected_var_w_prime) res = list( w_prime=w_prime, expected_w_prime=expected_w_prime, expected_var_w_prime=expected_var_w_prime, z=z ) res } number_of_runs_test = function( data ){ # # The number of runs test. # n = length(data) dd = diff(data) runs = rle(sign(dd)) w = length(runs$lengths) m = (2*n-1)/3 # expected mean under H_0 v = (16*n-29)/90 # expected variance under H_0 z = ( w - m ) / sqrt(v) p_value = 2*(1-pnorm(abs(z))) res = list( w=w, n=n, m=m, v=v, z=z, p_value=p_value ) res }