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: