心情#
- scipy.stats.mood(x, y, axis=0, alternative='two-sided', *, nan_policy='propagate', keepdims=False)[源代码][源代码]#
执行 Mood 检验以比较尺度参数是否相等。
Mood 的两样本尺度参数检验是一种非参数检验,用于检验零假设,即两个样本来自具有相同尺度参数的相同分布。
- 参数:
- x, yarray_like
样本数据的数组。总数必须至少有三个观察值。
- 轴int 或 None, 默认值: 0
如果是一个整数,表示输入数据中要计算统计量的轴。输入数据的每个轴切片(例如行)的统计量将出现在输出的相应元素中。如果为
None
,则在计算统计量之前会将输入数据展平。- 替代方案{‘双侧’, ‘小于’, ‘大于’}, 可选
定义备择假设。默认是’双侧’。以下选项可用:
‘双侧’: x 和 y 的分布尺度不同。
‘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值。
注释
假设数据分别来自概率分布
f(x)
和f(x/s) / s
,其中 f 是某个概率密度函数。零假设是s == 1
。对于多维数组,如果输入的形状是
(n0, n1, n2, n3)
和(n0, m1, n2, n3)
,那么如果axis=1
,结果的 z 和 p 值将具有形状(n0, n2, n3)
。请注意,n1
和m1
不必相等,但其他维度必须相等。从 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]))