iqr#
- scipy.stats.iqr(x, axis=None, rng=(25, 75), scale=1.0, nan_policy='propagate', interpolation='linear', keepdims=False)[源代码][源代码]#
计算沿指定轴的数据的四分位距。
四分位距(IQR)是数据中第75百分位和第25百分位之间的差值。它是一种类似于标准差或方差的离散度度量,但对异常值的鲁棒性更强 [2]。
rng
参数允许此函数计算实际 IQR 以外的百分位范围。例如,设置rng=(0, 100)
等同于numpy.ptp
。空数组的 IQR 是 np.nan。
Added in version 0.18.0.
- 参数:
- xarray_like
可以转换为数组的输入数组或对象。
- 轴int 或 None, 默认: None
如果是一个整数,表示输入数据中要计算统计量的轴。输入数据的每个轴切片(例如行)的统计量将出现在输出的相应元素中。如果为
None
,则在计算统计量之前会将输入数据展平。- rng包含范围在 [0,100] 内的浮点数的二元素序列,可选
计算范围的百分位数。每个百分位数必须在0到100之间,包括0和100。默认值是真正的IQR:
(25, 75)
。元素的顺序不重要。- 比例标量或字符串或实数的类似数组的对象,可选
比例的数值将被从最终结果中除掉。以下字符串值也被识别:
‘normal’ : 缩放因子为 \(2 \sqrt{2} erf^{-1}(\frac{1}{2}) \approx 1.349\)。
默认值为1.0。类似数组的实数类型 scale 也是允许的,只要它能正确广播到输出,使得
out / scale
是一个有效的操作。输出维度取决于输入数组 x、axis 参数和 keepdims 标志。- nan_policy{‘propagate’, ‘omit’, ‘raise’}
定义如何处理输入的 NaN。
propagate
: 如果在计算统计量的轴切片(例如行)中存在 NaN,则输出的相应条目将为 NaN。omit
: 在执行计算时,NaN 将被省略。如果在计算统计量的轴切片中剩余的数据不足,则输出的相应条目将为 NaN。raise
: 如果存在 NaN,将引发ValueError
。
- 插值str, 可选
指定在百分位边界位于两个数据点
i
和j
之间时使用的插值方法。以下选项可用(默认是 ‘linear’):‘linear’:
i + (j - i)*fraction
, 其中fraction
是索引在i
和j
之间的分数部分。‘lower’:
i
.‘higher’:
j
.‘nearest’:
i
或j
哪个最近。‘中点’:
(i + j)/2
.
对于 NumPy >= 1.22.0,
numpy.percentile
的method
关键字提供的额外选项也是有效的。- keepdimsbool, 默认值: False
如果设置为True,被减少的轴将作为尺寸为1的维度保留在结果中。通过此选项,结果将正确地与输入数组进行广播。
- 返回:
- iqr标量或ndarray
如果
axis=None
,则返回一个标量。如果输入包含精度低于np.float64
的整数或浮点数,则输出数据类型为np.float64
。否则,输出数据类型与输入数据类型相同。
注释
从 SciPy 1.9 开始,
np.matrix
输入(不推荐用于新代码)在计算执行前被转换为np.ndarray
。在这种情况下,输出将是一个标量或适当形状的np.ndarray
,而不是一个 2D 的np.matrix
。同样,虽然掩码数组的掩码元素被忽略,但输出将是一个标量或np.ndarray
,而不是一个mask=False
的掩码数组。参考文献
[3]示例
>>> import numpy as np >>> from scipy.stats import iqr >>> x = np.array([[10, 7, 4], [3, 2, 1]]) >>> x array([[10, 7, 4], [ 3, 2, 1]]) >>> iqr(x) 4.0 >>> iqr(x, axis=0) array([ 3.5, 2.5, 1.5]) >>> iqr(x, axis=1) array([ 3., 1.]) >>> iqr(x, axis=1, keepdims=True) array([[ 3.], [ 1.]])