# # Wilcoxon matched-pairs signed-rank test for small samples (n<=25), two-sided # Script for R # # Syntax : wilcox.small (x,y) # # version: 0.3 # author : Christian Spannagel, University of Education Ludwigsburg # website: http://www.christian-spannagel.de # contact: cspannagel@web.de # # This work is licensed under the GNU General Public License, Version 2. # http://www.gnu.org/licenses/gpl.html # # tables taken from Vogel, A. (1977). Funktionentafeln und statistische Tabellen, p. 212 wilcox.table01 <- c(0,0,0,0,0,0,0,0,2,3,5,7,10,13,16,19,23,28,32,37,43,49,55,61,68) wilcox.table05 <- c(0,0,0,0,0,1,2,4,6,8,11,14,17,21,25,30,35,40,46,52,59,66,73,81,90) wilcox.small <- function (x,y) { wilcox.tieddiffs <- x-y wilcox.diffs = c() for (i in 1:length(wilcox.tieddiffs)) { if (wilcox.tieddiffs[i] != 0) { wilcox.diffs = c(wilcox.diffs, wilcox.tieddiffs[i]) } } wilcox.ranks <- rank (abs(wilcox.diffs), ties.method="average") n=0; sumnegranks = 0; sumposranks = 0; for (i in 1:length(wilcox.ranks)) { if (wilcox.diffs[i] < 0) { sumnegranks = sumnegranks + wilcox.ranks[i] n = n + 1 } else if (wilcox.diffs[i] > 0) { sumposranks = sumposranks + wilcox.ranks[i] n = n + 1 } } cat ("Wilcoxon Matched-Pairs Signed-Rank test for small samples (n<=25), two-sided\n\n"); cat ("n =",n,"\n") cat ("sum neg ranks =",sumnegranks,"\n") cat ("sum pos ranks =",sumposranks,"\n\n") if (sumnegranks < sumposranks) { valuetocompare = sumnegranks } else { valuetocompare = sumposranks } if (n <= 25) { cat ("value to compare : ",valuetocompare,"\n"); cat ("critical value p=0,05: ",wilcox.table05[n],"\n"); cat ("critical value p=0,01: ",wilcox.table01[n],"\n\n"); if (valuetocompare <= wilcox.table01[n]) { cat ("Result: significant on level p=0,01\n") } else if (valuetocompare <= wilcox.table05[n]) { cat ("Result: significant on level p=0,05\n") } else { cat ("Result: not significant\n"); } } else { cat ("Sample is too large (n=",n,")\n"); } }