Paired t tests and Wilcoxon SR tests are inappropriate. If you were to do paired t test on the differences between preference for US and foreign travel, one would wonder about the validity of the results because it is unlikely that fifty small-integer values would be approximately normally distributed.
If you were to try to do a Wilcoxon signed-rank test, then you would likely get a
warning message about the large number of 0 differences and other ties among differences.
Sign test is a better choice. Suppose you had score differences d
for travel in US minus foreign travel such
as the fictitious ones below:
table(d)
d
-2 -1 0 1
17 12 13 8
Then you could do a sign test, by ignoring $0$-differences, which provide no direct information about a preference: Out of $m=37$ subjects who had different opinions, $x = 29$ were more likely to travel in the US, while $m-x =8$ were more likely to do foreign travel.
Under the null hypothesis that the two kinds of travel are equally favored,
$X \sim \mathsf{Binom}(37, .5).$
Then prop.test
in R rejects the null hypothesis against the two-sided
alternative with a P-value almost $0.$ So such an extreme imbalance between
positive and negative opinion is extremely unlikely if $H_0$ were true.
This version of prop.test
is sometimes called a sign test.
prop.test(29, 37)
1-sample proportions test with continuity correction
data: 29 out of 37, null probability 0.5
X-squared = 10.811, df = 1, p-value = 0.001009
alternative hypothesis: true p is not equal to 0.5
95 percent confidence interval:
0.6133573 0.8957582
sample estimates:
p
0.7837838
The version of the sign test above uses a normal approximation, which should be OK for $m$ as large as 37. An exact test, which uses binomial CDFs could also be used:
binom.test(29, 37)
Exact binomial test
data: 29 and 37
number of successes = 29, number of trials = 37, p-value = 0.0007529
alternative hypothesis: true probability of success is not equal to 0.5
95 percent confidence interval:
0.6178635 0.9017344
sample estimates:
probability of success
0.7837838
The P-value of the exact binomial test is computed as:
pbinom(8, 37, .5) * 2
[1] 0.0007528971
pbinom(8, 37, .5) + 1 - pbinom(28, 37, .5)
[1] 0.0007528971
Also, the 'sign test for median 0' from Minitab statistical software
agrees with the exact binomial test in R:
Sign Test for Median: d
Sign test of median = 0.00000 versus ≠ 0.00000
N Below Equal Above P Median
d 50 29 13 8 0.0008 -1.000
Notes: (1) For the record, abbreviated output for paired versions of t.test
and wilcox.test
is shown below. P-values are small and would lead to rejection, but
one would have to wonder whether to trust them.
t.test(d)$p.val
[1] 1.117456e-05
wilcox.test(d)$p.val
[1] 3.225493e-05
Warning messages:
1: In wilcox.test.default(d) : cannot compute exact p-value with ties
2: In wilcox.test.default(d) : cannot compute exact p-value with zeroes
(2) Here is R code used to sample the fictitious differences used in the examples above. These fictitious differences are clearly not normal.
set.seed(2021)
d = sample(-2:1, 50, rep=T, p=c(1,2,2,1)/6)
shapiro.test(d)
Shapiro-Wilk normality test
data: d
W = 0.84736, p-value = 1.313e-05