# In R, why are results different for 1-tailed wilcoxsign_test, wilcox_test, and wilcox.exact with paired data?

I am trying to determine why I am getting different results with these different Wilcoxson test implementations in R version 2.15.2. I have paired data with some ties. I have read the response for What is the difference between wilcox.test and wilcox_test in R, but some of the p-values are extremely different in my data. Also, I do not understand why the coin package would have two functions (wilcoxsign_test and wilcox_test) to produce the same result. What am I missing?

Here is my example data:

library('exactRankTests') # for wilcox.exact
library('coin')

data <- data.frame(
y = c(2770.00, 3160.00, 4120.00, 4510.00, 3320.00, 3170.00, 3340.00, 3810.00, 3760.00, 6350.00, 2720.00, 3740.00, 5210.00, 3330.00, 4230.00, 3490.00, 3138.07, 2630.88, 4058.70, 3521.11, 4941.09, 5762.31, 3565.89, 3517.91, 3413.32, 3415.98, 3439.96, 2602.11, 2659.36, 3099.79, 2820.00, 2830.00, 4310.00, 4010.00, 2780.00, 2730.00, 3130.00, 2700.00, 3510.00, 3460.00, 2470.00, 2920.00, 3230.00, 3370.00, 3290.00, 2380.00, 2845.69, 2137.58, 3477.96, 3128.84, 3117.77, 4949.78, 3061.60, 2942.57, 3149.46, 3067.10, 3164.60, 2135.01, 2275.32, 3154.66),
condition = factor(c(rep('A', 30), rep('B', 30))),
participant = factor(rep(1:30, times=2))
)


When trying to get exact results I compared wilcoxsign_test, wilcox_test, and the depreciated wilcox.exact.

wilcoxsign_test(y ~ condition | participant, data=data, alternative='less',
distribution = "exact")
##  Exact Wilcoxon-Signed-Rank Test
##
## data:  y by x (neg, pos)
##   stratified by block
## Z = -4.577, p-value = 3.818e-08
## alternative hypothesis: true mu is less than 0

wilcox_test(y ~ condition | participant, data=data, alternative='greater',
distribution = "exact")
##  Exact Wilcoxon Mann-Whitney Rank Sum Test
##
## data:  y by
##   condition (A, B)
##   stratified by participant
## Z = 4.15, p-value = 0.05913
## alternative hypothesis: true mu is greater than 0

wilcox.exact(y ~ condition, data=data, alternative='greater', exact=TRUE,
paired = TRUE)
##  Exact Wilcoxon signed rank test
##
## data:  y by condition
## V = 455, p-value = 3.818e-08
## alternative hypothesis: true mu is greater than 0


Even the approximate methods sometimes differ as seen below.

wilcox_test(y ~ condition | participant, data = data, alternative = "greater",
distribution = "approximate")
##
##  Approximative Wilcoxon Mann-Whitney Rank Sum Test
##
## data:  y by
##   condition (A, B)
##   stratified by participant
## Z = 4.15, p-value < 2.2e-16
## alternative hypothesis: true mu is greater than 0
wilcoxsign_test(y ~ condition | participant, data = data, alternative = "less",
distribution = "approximate")
##  Approximative Wilcoxon-Signed-Rank Test
##
## data:  y by x (neg, pos)
##   stratified by block
## Z = -4.577, p-value < 2.2e-16
## alternative hypothesis: true mu is less than 0
wilcox.exact(y ~ condition, data = data, alternative = "greater", exact = FALSE,
paired = TRUE)
##  Asymptotic Wilcoxon signed rank test
##
## data:  y by condition
## V = 455, p-value = 2.362e-06
## alternative hypothesis: true mu is greater than 0
wilcox.test(y ~ condition, data = data, alternative = "greater", paired = TRUE)
## Warning: cannot compute exact p-value with ties
##
##  Wilcoxon signed rank test with continuity correction
##
## data:  y by condition
## V = 455, p-value = 2.481e-06
## alternative hypothesis: true location shift is greater than 0
pairwise.wilcox.test(data$y, data$condition, p.adj = "none", paired = TRUE)
## Warning: cannot compute exact p-value with ties
##
##  Pairwise comparisons using Wilcoxon signed rank test
##
## data:  data$y and data$condition
##
##   A
## B 5e-06
##
## P value adjustment method: none


As a related question. How can I get the extract observed Wilcoxon statistic for wilcoxsign_test? I know you can do the following for wilcox_test, but it does not seem to work for wilcoxsign_test.

w_t <- wilcox_test(y ~ condition | participant, data = data, alternative = "greater",
distribution = "exact")
statistic(w_t, "linear")
##
## A 1128

• I realize the the wilcoxsign_test documentation states that it is for repeated measures designs, which is what I am doing, while the wilcox_test is documented as useful for independent data sets. However, the wilcox_test has a blocking variable documented in the formula, which indicates that it should handle handle pairwise comparisons as well. – StretchTiberius Nov 2 '12 at 19:17
• The question at the end "How can I get the extract observed Wilcoxon statistic for wilcoxsign_test?" is about how to use a function (i.e. a programming issue) and would be off-topic here. – Glen_b Apr 5 '17 at 6:44

wilcox_test(y ~ condition | participant, data = data, alternative = "greater",
distribution = "approximate")


produces not a signed rank test (as the other calls do) but a rank sum test. It's a different thing for a different situation (independent samples, not paired). It tells you this in the output:

## Approximative Wilcoxon Mann-Whitney Rank Sum Test

So there's no way that should give a similar p-value to the other cases.