scipy.stats.median_absolute_deviation¶
- scipy.stats.median_absolute_deviation(*args, **kwds)¶
median_absolute_deviation
已弃用,请使用median_abs_deviation
取而代之的是!若要保留现有默认行为,请使用 scipy.stats.median_abs_deviation(..., scale=1/1.4826) 。对于使用正态分布进行缩放,值1.4826在数值上不精确。要获得精确的数值,请使用 scipy.stats.median_abs_deviation(..., scale='normal') 。
计算数据沿给定轴的中位数绝对偏差。
中位数绝对偏差(MAD, [1]) 根据与中位数的绝对偏差计算中位数。它是一种与标准偏差类似的离散度度量,但对异常值的鲁棒性更强 [2].
空数组的MAD是
np.nan
。1.3.0 新版功能.
- 参数
- xarray_like
可以转换为数组的输入数组或对象。
- axis整型或无型,可选
沿其计算范围的轴。默认值为0。如果没有,则计算整个阵列的MAD。
- center可调用,可选
将返回中心值的函数。默认情况下使用np.Medium。使用的任何用户定义函数都需要具有函数签名
func(arr, axis)
。- scale整型,可选
应用于MAD的比例因子。默认刻度(1.4826)可确保与正态分布数据的标准偏差保持一致。
- nan_policy{‘Propagate’,‘RAISE’,‘OMIT’},可选
定义输入包含NaN时的处理方式。以下选项可用(默认值为‘Propagate’):
‘Propagate’:返回NaN
“raise”:引发错误
‘omit’:执行计算时忽略NaN值
- 退货
- mad标量或ndarray
如果
axis=None
,则返回标量。如果输入包含的整数或浮点数的精度小于np.float64
,则输出数据类型为np.float64
。否则,输出数据类型与输入数据类型相同。
参见
注意事项
这个 center 参数仅影响围绕其计算MAD的中心值的计算。也就是说,传入
center=np.mean
将计算平均值附近的MAD-它不会计算 mean 绝对偏差。参考文献
- 1
“绝对偏差中位数”,https://en.wikipedia.org/wiki/Median_absolute_deviation
- 2
“规模的稳健衡量”,https://en.wikipedia.org/wiki/Robust_measures_of_scale
示例
在比较
median_absolute_deviation
使用np.std
,当我们将数组的单个值更改为具有异常值,而MAD几乎没有变化时,后者会受到影响:>>> from scipy import stats >>> x = stats.norm.rvs(size=100, scale=1, random_state=123456) >>> x.std() 0.9973906394005013 >>> stats.median_absolute_deviation(x) 1.2280762773108278 >>> x[0] = 345.6 >>> x.std() 34.42304872314415 >>> stats.median_absolute_deviation(x) 1.2340335571164334
轴处理示例:
>>> x = np.array([[10, 7, 4], [3, 2, 1]]) >>> x array([[10, 7, 4], [ 3, 2, 1]]) >>> stats.median_absolute_deviation(x) array([5.1891, 3.7065, 2.2239]) >>> stats.median_absolute_deviation(x, axis=None) 2.9652