scipy.stats.

shapiro#

scipy.stats.shapiro(x, *, axis=None, nan_policy='propagate', keepdims=False)[源代码]#

执行 Shapiro-Wilk 正态性检验。

Shapiro-Wilk 检验检验数据是否来自正态分布的零假设。

参数:
xarray_like

样本数据数组。必须包含至少三个观测值。

axisint 或 None,默认值:None

如果为 int,则为计算统计信息的输入轴。输入的每个轴切片(例如,行)的统计信息将显示在输出的相应元素中。如果 None,则在计算统计信息之前将展开输入。

nan_policy{‘propagate’, ‘omit’, ‘raise’}

定义如何处理输入 NaN。

  • propagate: 如果在计算统计信息的轴切片(例如,行)中存在 NaN,则输出的相应条目将为 NaN。

  • omit: 在执行计算时将省略 NaN。 如果计算统计信息的轴切片中剩余的数据不足,则输出的相应条目将为 NaN。

  • raise: 如果存在 NaN,将引发 ValueError

keepdimsbool,默认值:False

如果将其设置为 True,则减少的轴将保留在结果中,作为大小为 1 的维度。 使用此选项,结果将针对输入数组正确广播。

返回值:
statisticfloat

检验统计量。

p-valuefloat

假设检验的 p 值。

另请参阅

anderson

Anderson-Darling 正态性检验

kstest

Kolmogorov-Smirnov 拟合优度检验。

Shapiro-Wilk 正态性检验

扩展示例

注释

使用的算法在 [4] 中描述,但未实现所描述的删失参数。 对于 N > 5000,W 检验统计量是准确的,但 p 值可能不准确。

从 SciPy 1.9 开始,np.matrix 输入(不建议用于新代码)在执行计算之前会转换为 np.ndarray。 在这种情况下,输出将是一个标量或具有适当形状的 np.ndarray,而不是 2D np.matrix。 类似地,虽然掩码数组的掩码元素会被忽略,但输出将是一个标量或 np.ndarray,而不是具有 mask=False 的掩码数组。

参考文献

[2]

Shapiro, S. S. & Wilk, M.B, “An analysis of variance test for normality (complete samples)”, Biometrika, 1965, Vol. 52, pp. 591-611, DOI:10.2307/2333709

[3]

Razali, N. M. & Wah, Y. B., “Power comparisons of Shapiro-Wilk, Kolmogorov-Smirnov, Lilliefors and Anderson-Darling tests”, Journal of Statistical Modeling and Analytics, 2011, Vol. 2, pp. 21-33.

[4]

Royston P., “Remark AS R94: A Remark on Algorithm AS 181: The W-test for Normality”, 1995, Applied Statistics, Vol. 44, DOI:10.2307/2986146

示例

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> x = stats.norm.rvs(loc=5, scale=3, size=100, random_state=rng)
>>> shapiro_test = stats.shapiro(x)
>>> shapiro_test
ShapiroResult(statistic=0.9813305735588074, pvalue=0.16855233907699585)
>>> shapiro_test.statistic
0.9813305735588074
>>> shapiro_test.pvalue
0.16855233907699585

有关更详细的示例,请参阅 Shapiro-Wilk 正态性检验