scipy.stats.shapiro(x, a=None, reta=False)[source]

Perform the Shapiro-Wilk test for normality.

The Shapiro-Wilk test tests the null hypothesis that the data was drawn from a normal distribution.


x : array_like

Array of sample data.

a : array_like, optional

Array of internal parameters used in the calculation. If these are not given, they will be computed internally. If x has length n, then a must have length n/2.

reta : bool, optional

Whether or not to return the internally computed a values. The default is False.


W : float

The test statistic.

p-value : float

The p-value for the hypothesis test.

a : array_like, optional

If reta is True, then these are the internally computed “a” values that may be passed into this function on future calls.

See also

The Anderson-Darling test for normality
The Kolmogorov-Smirnov test for goodness of fit.


The algorithm used is described in [R634] but censoring parameters as described are not implemented. For N > 5000 the W test statistic is accurate but the p-value may not be.

The chance of rejecting the null hypothesis when it is true is close to 5% regardless of sample size.


[R632]Shapiro, S. S. & Wilk, M.B (1965). An analysis of variance test for normality (complete samples), Biometrika, Vol. 52, pp. 591-611.
[R633]Razali, N. M. & Wah, Y. B. (2011) Power comparisons of Shapiro-Wilk, Kolmogorov-Smirnov, Lilliefors and Anderson-Darling tests, Journal of Statistical Modeling and Analytics, Vol. 2, pp. 21-33.
[R634](1, 2) ALGORITHM AS R94 APPL. STATIST. (1995) VOL. 44, NO. 4.


>>> from scipy import stats
>>> np.random.seed(12345678)
>>> x = stats.norm.rvs(loc=5, scale=3, size=100)
>>> stats.shapiro(x)
(0.9772805571556091, 0.08144091814756393)

Previous topic


Next topic