The test statistic RJ
needs to be compared to a critical value CV
in order to make a determination of whether to reject or fail to reject the null hypothesis.
The value of CV
depends on the sample size and confidence level desired, and the values are empirically derived: generate large numbers of normally distributed datasets for each sample size n
, calculate RJ
statistic for each, then CV
for a=0.10
is the 10th percentile value of RJ
.
Sidenote: For some reason I'm seeing a 90% confidence level used many places for Ryan-Joiner, when a 95% confidence is commonly used for other normality tests. I'm not sure why.
I recommend reading the original Ryan-Joiner 1976 paper:
https://www.additive-net.de/de/component/jdownloads/send/70-support/236-normal-probability-plots-and-tests-for-normality-thomas-a-ryan-jr-bryan-l-joiner
In that paper, the following critical value equations were empirically derived (I wrote out in python for convenience):
def rj_critical_value(n, a=0.10)
if a == 0.1:
return 1.0071 - (0.1371 / sqrt(n)) - (0.3682 / n) + (0.7780 / n**2)
elif a == 0.05:
return 1.0063 - (0.1288 / sqrt(n)) - (0.6118 / n) + (1.3505 / n**2)
elif a == 0.01:
return 0.9963 - (0.0211 / sqrt(n)) - (1.4106 / n) + (3.1791 / n**2)
else:
raise Exception("a must be one of [0.10, 0.05, 0.01]")
The RJ
test statistic then needs to be compared to that critical value:
- If
RJ < CV
, then the determination is NOT NORMAL.
- If
RJ > CV
, then the determination is NORMAL.
Minitab is going one step further - working backwards to determine the value of a
at which CV == RJ
. This value would be the p-value you're referencing in your original question.