Test assumptions · ~7 min read
Shapiro-Wilk Normality Test
A test whose sensitivity moves with sample size cannot serve as a fixed threshold for a decision about the shape of the data.
In short
The Shapiro-Wilk test, the standard way to check normality before choosing a parametric or non-parametric test, behaves badly at both ends of the sample-size range: in large studies it is sensitive enough to flag trivial, practically meaningless departures from normality as statistically significant, and in small studies it lacks the power to detect real, consequential ones.2,3 One simulation study comparing four normality tests across thousands of simulated samples found all four, Shapiro-Wilk included, had power below 40% at sample sizes of 30 and below, meaning a small pilot cohort routinely "passes" a normality test regardless of its true shape.3 The mechanical habit of running the test, reading the P value, and switching to a non-parametric alternative whenever P<.05 treats a single number as a verdict it was never built to deliver on its own. What Shapiro-Wilk is good for is one input alongside a look at the actual distribution, not a gatekeeper a manuscript can defer to blindly.
The rule almost everyone runs, and almost no one questions
The Shapiro-Wilk test, introduced by Samuel Shapiro and Martin Wilk in 1965, tests the null hypothesis that a sample was drawn from a normally distributed population.1 In clinical manuscripts it is rarely reported for its own sake; it is reported as a gate. Run Shapiro-Wilk on the outcome variable, and if P<.05, route the comparison to Mann-Whitney U or Wilcoxon or Kruskal-Wallis instead of a t-test or ANOVA. It is quick, it is defensible-looking in a methods paragraph, and it is taught this way widely enough that few researchers stop to ask what the test's P value actually depends on besides "is the data normal."
It depends heavily on sample size. That single fact undoes the mechanical version of the rule, because a test whose sensitivity moves with n cannot function as a fixed threshold for a decision that's supposed to be about the shape of the data, not the size of the sample.
Where it fails in large samples
As sample size grows, Shapiro-Wilk's power to detect any departure from perfect normality, however small, climbs toward certainty. A large-scale power comparison across four normality tests found Shapiro-Wilk to be the most powerful of the group at every sample size and distribution shape tested, and its power against non-normal alternatives approached 1.0 well before sample sizes reached the hundreds.3 That is exactly the problem in a large registry or administrative dataset: real data is essentially never perfectly normal, so a large enough sample will eventually produce a significant Shapiro-Wilk result almost regardless of whether the deviation matters for the test that follows. As one methodology paper studying t-tests in large samples put it plainly, "in large studies, tests for normality are very sensitive to deviations from normality and thereby unsuitable as tools to choose the most appropriate test."4 A separate guide aimed at non-statisticians makes the same point from the other direction: at large sample sizes, a normality test will flag even a small, practically inconsequential deviation as statistically significant, well before that deviation is large enough to actually threaten a parametric test's validity.2 A t-test's validity in large samples leans on the central limit theorem, which makes it robust to skewed data as sample size increases, so the significant Shapiro-Wilk result and the actual performance of the t-test are, at that point, answering two different questions.4
Where it fails in small samples
The opposite problem shows up exactly where non-normality is hardest to visually detect and most likely to be genuinely consequential: small pilot cohorts and early case series. The same power-comparison study found that Shapiro-Wilk's power was still low at a sample size of 30 or below, and explicitly warned that "these four normality tests do not perform well for small sample size."3 A skewed, bimodal, or heavily outlier-driven distribution in a cohort of 12 or 20 patients can sail through Shapiro-Wilk with a comfortably non-significant P value, not because the data is normal, but because the test doesn't have enough observations to tell the difference. A non-significant result here gets read as "normality confirmed," when what actually happened is that the test failed to detect anything, which is not the same claim.
Failing to reject the null hypothesis is not proof of the null hypothesis. A non-significant Shapiro-Wilk P value in a small sample means the test didn't find enough evidence of non-normality, not that the data is normal. In a cohort of 15 or 20 patients, that's frequently a statement about the test's power, not about the distribution.
An illustration (hypothetical, not a real dataset)
Picture two manuscripts using the same rule. The first reports operative time from a single-surgeon pilot series of 18 patients. The raw values are visibly right-skewed on a histogram, one very long procedure pulls the tail out, but Shapiro-Wilk on 18 observations returns P=.21. The authors report it as "normally distributed" and run a t-test comparing two surgical approaches, when the skew was real and a rank-based test, or at minimum a look at the Q-Q plot before deciding, would have caught it. The second reports the same operative-time variable pooled across a 1,400-patient multicentre registry. The distribution is close to symmetric with only mild, clinically irrelevant heavy-tailedness, but at n=1,400 Shapiro-Wilk returns P<.001. The authors, following the rule mechanically, switch the whole comparison to Mann-Whitney U and report a shift in ranks instead of the difference in means that every reader actually wants to know, discarding the more informative, and in this case entirely valid, t-test result. Both manuscripts followed the same instruction correctly. Both got the wrong answer, in opposite directions.
What to actually do instead
Look at the distribution before, or alongside, running the test. A histogram or Q-Q plot shows the shape of a departure from normality, not just whether one is statistically detectable, which is the piece of information the test alone cannot give at either sample-size extreme. The guide for non-statisticians cited above makes the same recommendation: assess normality both visually and through a formal test, treating Shapiro-Wilk as one input rather than the sole one.2 In a small sample, that visual check is doing most of the real work, since the test itself has little power to contribute. In a large sample, the question worth asking isn't "did Shapiro-Wilk reject," it's "is the deviation large enough, by eye, to change what a t-test or ANOVA would report," because at that sample size the parametric test's own robustness usually settles the question the test result can't.4 None of this argues Shapiro-Wilk is useless. In a moderate sample, roughly the range where its power is neither near-zero nor near-certain, it remains a reasonable, standard check. The failure is specifically in treating its P value as a self-sufficient switch at either end of the range it was never built to arbitrate alone.
How to run it — SPSS vs StatsPlease
In current IBM SPSS Statistics (documentation verified against version 26, matching the same Explore procedure structure confirmed in version 32's documentation), Shapiro-Wilk lives inside the Explore procedure: Analyze ▸ Descriptive Statistics ▸ Explore. Put the outcome variable into the Dependent List box and, if comparing groups, the grouping variable into the Factor List box, then open Plots and tick Normality plots with tests. The result lands in a table headed "Tests of Normality," which reports two tests side by side: Kolmogorov-Smirnov with a Lilliefors significance correction, and Shapiro-Wilk. SPSS computes Shapiro-Wilk for weighted sample sizes between 3 and 5,000 (3 and 50 for non-integer weights); Kolmogorov-Smirnov is always shown alongside it. For a typical clinical sample, Shapiro-Wilk is the number that matters and the Kolmogorov-Smirnov row should generally be ignored, but both appear in the same table, and the common misread is citing the Kolmogorov-Smirnov/Lilliefors row, or treating a non-significant "Sig." value in either column as confirmation that the data is normal rather than simply a failure to detect otherwise.
Upload the dataset (or the relevant column). StatsPlease's deterministic engine checks the relevant assumptions, including normality, as part of selecting the appropriate test, using fixed, non-LLM algorithms, and states in the report which assumption checks passed, were violated, or were untestable. The same numbers reproduce running the checks by hand in SPSS.
You might also read
References
- Shapiro SS, Wilk MB. An analysis of variance test for normality (complete samples). Biometrika. 1965;52(3-4):591-611. https://doi.org/10.1093/biomet/52.3-4.591
- Ghasemi A, Zahediasl S. Normality tests for statistical analysis: a guide for non-statisticians. Int J Endocrinol Metab. 2012;10(2):486-489. https://doi.org/10.5812/ijem.3505
- Razali NM, Wah YB. Power comparisons of Shapiro-Wilk, Kolmogorov-Smirnov, Lilliefors and Anderson-Darling tests. J Stat Model Anal. 2011;2(1):21-33.
- Fagerland MW. t-tests, non-parametric tests, and large studies—a paradox of statistical practice? BMC Med Res Methodol. 2012;12:78. https://doi.org/10.1186/1471-2288-12-78
Whether a single significant or non-significant Shapiro-Wilk P value should actually change which test runs next depends on where your sample size sits, not just on which side of .05 the number landed.
StatsPlease's deterministic engine runs the normality check on your own uploaded data as part of selecting the pooled, Welch-corrected, or non-parametric comparison, and states in the report which assumption checks passed, were violated, or were untestable, so the test named on your results tab reflects your data rather than a mechanical P-value cutoff.
Try StatsPlease free