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
可以转换为数组的输入数组或对象。
- axis整型或整型序列,可选
沿其计算范围的轴。默认情况下,计算整个阵列的IQR。
- rng包含以下范围内的浮点数的两元素序列 [0,100] 可选
要计算范围的百分位数。每个值必须介于0和100之间(包括0和100)。默认值为真实IQR: (25, 75) 。元素的顺序并不重要。
- scale标量或字符串,可选
比例尺的数值将从最终结果中除以。可以识别以下字符串值:
‘Raw’:不需要缩放,只需返回原始IQR即可。 已弃用! 使用 scale=1 取而代之的是。
“正常” : Scale by \(2 \sqrt{{2}} erf^{{-1}}(\frac{{1}}{{2}}) \approx 1.349\) 。
默认值为1.0。不推荐使用scale=‘raw’。也可以使用类似数组的比例,只要它正确广播到输出即可
out / scale
是有效的操作。输出维度取决于输入阵列, x ,即 axis 参数,并且 keepdims 旗帜。- nan_policy{‘Propagate’,‘RAISE’,‘OMIT’},可选
定义输入包含NaN时的处理方式。以下选项可用(默认值为‘Propagate’):
‘Propagate’:返回NaN
“raise”:引发错误
‘omit’:执行计算时忽略NaN值
- interpolation{‘线性’,‘较低’,‘较高’,‘中点’,
‘最近’},可选
指定当百分位边界位于两个数据点之间时要使用的插值方法 i 和 j 。以下选项可用(默认为“线性”):
‘线性’: i + (j - i) * fraction ,在哪里 fraction 是索引的小数部分,由 i 和 j 。
‘较低’: i 。
‘更高’: j 。
“最近”: i 或 j 以最近者为准。
‘中间点’: (i + j) / 2 。
- keepdims布尔值,可选
如果将其设置为 True ,减少的轴将作为尺寸为1的尺寸保留在结果中。使用此选项,结果将根据原始阵列正确广播 x 。
- 退货
- iqr标量或ndarray
如果
axis=None
,则返回标量。如果输入包含的整数或浮点数的精度小于np.float64
,则输出数据类型为np.float64
。否则,输出数据类型与输入数据类型相同。
注意事项
此函数在很大程度上依赖于的版本
numpy
已安装。强烈推荐1.11.0b3以上的版本,因为它们包括许多增强和修复numpy.percentile
和numpy.nanpercentile
会影响此功能的操作。以下修改适用:- 低于1.10.0: nan_policy 定义不明确。NaN_POLICY定义不正确。
的默认行为
numpy.percentile
用于“传播”。这是“省略”和“传播”的混合体,主要生成“省略”的歪斜版本,因为NAN被排序到数据的末尾。如果数据中有NAN,则会发出警告。- 低于1.9.0:
numpy.nanpercentile
并不存在。 这意味着
numpy.percentile
无论在什么情况下都会使用 nan_policy 并发出警告。有关行为的描述,请参见上一项。- 低于1.9.0: keepdims 和 interpolation 不受支持。
如果使用非默认值提供关键字,则会忽略这些关键字并显示警告。但是,仍支持多个轴。
参考文献
- 1
- 2
“规模的稳健衡量”(Robust Measures Of Scale)https://en.wikipedia.org/wiki/Robust_measures_of_scale
- 3
示例
>>> 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.]])