scipy.stats.

心情#

scipy.stats.mood(x, y, axis=0, alternative='two-sided', *, nan_policy='propagate', keepdims=False)[源代码][源代码]#

执行 Mood 检验以比较尺度参数是否相等。

Mood 的两样本尺度参数检验是一种非参数检验,用于检验零假设,即两个样本来自具有相同尺度参数的相同分布。

参数:
x, yarray_like

样本数据的数组。总数必须至少有三个观察值。

int 或 None, 默认值: 0

如果是一个整数,表示输入数据中要计算统计量的轴。输入数据的每个轴切片(例如行)的统计量将出现在输出的相应元素中。如果为 None,则在计算统计量之前会将输入数据展平。

替代方案{‘双侧’, ‘小于’, ‘大于’}, 可选

定义备择假设。默认是’双侧’。以下选项可用:

  • ‘双侧’: xy 的分布尺度不同。

  • ‘less’: x 的基础分布规模小于 y 的基础分布规模。

  • ‘greater’: x 所基于的分布的尺度大于 y 所基于的分布的尺度。

Added in version 1.7.0.

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

定义如何处理输入的 NaN。

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

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

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

keepdimsbool, 默认值: False

如果设置为True,被减少的轴将作为尺寸为1的维度保留在结果中。通过此选项,结果将正确地与输入数组进行广播。

返回:
res重要性结果

一个包含属性的对象:

统计标量或ndarray

假设检验的z值。对于一维输入,返回一个标量。

p值标量 ndarray

假设检验的p值。

参见

fligner

一种用于检验 k 个方差相等的非参数检验

ansari

用于检验两个方差相等的非参数检验

bartlett

正态样本中k个方差相等的参数检验

levene

k个方差相等的参数检验

注释

假设数据分别来自概率分布 f(x)f(x/s) / s,其中 f 是某个概率密度函数。零假设是 s == 1

对于多维数组,如果输入的形状是 (n0, n1, n2, n3)(n0, m1, n2, n3),那么如果 axis=1,结果的 z 和 p 值将具有形状 (n0, n2, n3)。请注意,n1m1 不必相等,但其他维度必须相等。

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

参考文献

[1] Mielke, Paul W. “关于存在平局的一些平方秩检验的注记。”

Technometrics, 第9卷, 第2期, 1967年, 第312-14页. JSTOR, https://doi.org/10.2307/1266427. 访问于2022年5月18日.

示例

>>> import numpy as np
>>> from scipy import stats
>>> rng = np.random.default_rng()
>>> x2 = rng.standard_normal((2, 45, 6, 7))
>>> x1 = rng.standard_normal((2, 30, 6, 7))
>>> res = stats.mood(x1, x2, axis=1)
>>> res.pvalue.shape
(2, 6, 7)

找出尺度差异不显著的点数:

>>> (res.pvalue > 0.1).sum()
78

使用不同的尺度进行测试:

>>> x1 = rng.standard_normal((2, 30))
>>> x2 = rng.standard_normal((2, 35)) * 10.0
>>> stats.mood(x1, x2, axis=1)
SignificanceResult(statistic=array([-5.76174136, -6.12650783]),
                   pvalue=array([8.32505043e-09, 8.98287869e-10]))