scipy.stats.

friedmanchisquare#

scipy.stats.friedmanchisquare(*samples, axis=0, nan_policy='propagate', keepdims=False)[源代码]#

计算重复样本的弗里德曼检验。

弗里德曼检验检验重复样本的原假设具有相同的分布。它通常用于检验通过不同方式获得的样本之间的一致性。例如,如果对同一组个体使用两种抽样技术,则弗里德曼检验可用于确定这两种抽样技术是否一致。

参数:
sample1、sample2、sample3…类似数组

观测数组。所有数组必须具有相同数量的元素。必须给出至少三个样本。

axisint 或 None,默认值:0

如果是 int,则输入轴沿着其轴计算统计量。每个轴切片(例如行)的统计量将显示在输出的对应元素中。如果 None,计算统计量前输入将被拉直。

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

定义如何处理输入 NaN。

  • 传递:如果在根据其计算统计值的轴片断(例如,行)中存在 NaN,则输出的对应条目将为 NaN。

  • 省略:执行计算时,将省略 NaN。如果在根据其计算统计值的轴片断中剩余的数据不足,则输出的对应条目将为 NaN。

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

keepdims布尔值,默认值:False

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

返回值:
statistic浮点数

检验统计量,校正了同分。

pvalue浮点数

相关 p 值,假设检验统计量为卡方分布。

注释

由于假设检验统计量为卡方分布,因此仅当 n > 10 且重复样本多于 6 个时,p 值才可靠。

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

参考

[2]

P. Sprent 和 N.C. Smeeton,“应用非参数统计方法,第三版”。第 6 章,第 6.3.2 节。

示例

[2] 中,对七名学生的脉冲率(每分钟)进行了测量,包括运动前、运动后和运动后 5 分钟。是否有证据表明这三个场合的脉冲率相似?

我们首先制定原假设 \(H_0\)

这三个场合的脉冲率相同。

让我们通过 Friedman 检验来评估这一假设的可能性。

>>> from scipy.stats import friedmanchisquare
>>> before = [72, 96, 88, 92, 74, 76, 82]
>>> immediately_after = [120, 120, 132, 120, 101, 96, 112]
>>> five_min_after = [76, 95, 104, 96, 84, 72, 76]
>>> res = friedmanchisquare(before, immediately_after, five_min_after)
>>> res.statistic
10.57142857142857
>>> res.pvalue
0.005063414171757498

使用显著性水平为 5%,我们将拒绝原假设,支持备择假设:“这三个场合的脉冲率不同”。