Our data is n=4 and we are looking to test whether it is > 0. We use one-sided Wilcoxon signed rank test because it is non-parametric and apparently should handle low sample size better.
Using MATLAB:
>> data
ans =
0.0709 0.0366 0.1228 0.0775
>> p = signrank(data,0,'tail','right')
p =
0.0625
One-sided t-test gives p=0.0113 for the same data. Investigating further, I noticed that signrank
does not really care about data for n=4:
>> p=signrank(rand(4,1),0,'tail','right')
p =
0.0625
>> p=signrank(rand(4,1)+100,0,'tail','right')
p =
0.0625
is it expected behavior and does it mean we can't use that test for n=4?
On the other hand, T-test works as expected for small sample size
>> [p,h]=ttest(rand(4,1)+100,0,'tail','right')
p =
1.5816e-09
>> [p,h]=ttest(rand(4,1),0,'tail','right')
p =
0.0380
Links: