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

0.18.0 版中添加。

参数:
xarray_like

输入数组或可转换为数组的对象。

axisint or None, default: None

如果为 int,则沿着此轴计算统计信息的输入的轴。输入的每个轴切片(例如行)的统计信息将出现在输出的相应元素中。如果为 None,则在计算统计信息之前会将输入展平。

rng包含 [0,100] 范围内的浮点数的两元素序列,可选

计算范围内的百分位数。每个值必须在 0 到 100(含)之间。默认值为真正的 IQR:(25, 75)。元素的顺序并不重要。

scale标量或字符串或实际数值的 array_like,可选

scale 的数值将除以最终结果。还认可以下字符串值

  • ‘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

interpolationstr,可选

当百分位边界位于两个数据点 ij 之间时,指定要使用的插值方法。以下选项可用(默认值为“linear”)

  • “linear”: i + (j - i)*fraction,其中 fraction 是被 ij 包围的索引的小数部分。

  • “lower”: i

  • “higher”: j

  • “nearest”: ij,以最接近的一个为准。

  • “midpoint”: (i + j)/2

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

keepdims布尔值,默认值:False

如果将其设置为 True,则被约简的轴将作为大小为 1 的维度保留在结果中。使用此选项,结果将针对输入数组正确广播。

返回:
iqr标量或 ndarray

如果 axis=None,则返回一个标量。如果输入包含精度低于 np.float64 的整数或浮点数,则输出数据类型为 np.float64。否则,输出数据类型与输入数据类型相同。

另请参阅

numpy.stdnumpy.var

注释

SciPy 1.9 中新增,np.matrix 输入(不建议用于新代码)在进行计算前已转换为 np.ndarray。在这种情况下,输出将是标量或形状合适的 np.ndarray,而不是二维 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.]])