scipy.stats.

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 是一个有效的操作。输出维度取决于输入数组 xaxis 参数和 keepdims 标志。

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

定义如何处理输入的 NaN。

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

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

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

插值str, 可选

指定在百分位边界位于两个数据点 ij 之间时使用的插值方法。以下选项可用(默认是 ‘linear’):

  • ‘linear’: i + (j - i)*fraction, 其中 fraction 是索引在 ij 之间的分数部分。

  • ‘lower’: i.

  • ‘higher’: j.

  • ‘nearest’: ij 哪个最近。

  • ‘中点’: (i + j)/2.

对于 NumPy >= 1.22.0,numpy.percentilemethod 关键字提供的额外选项也是有效的。

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 的掩码数组。

参考文献

示例

>>> 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.]])