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
,而不是 2Dnp.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 正态性检验。