一尘不染

我在哪里可以发现scipy疯狂(平均绝对偏差)?

python

似乎scipy提供了一种功能mad来计算一组数字的平均绝对偏差:

http://projects.scipy.org/scipy/browser/trunk/scipy/stats/models/utils.py?rev=3473

但是,我在最新版本的scipy中找不到它。当然,可以从存储库中复制旧代码,但是我更喜欢使用scipy的版本。我在哪里可以找到它,或者它已经被替换或移除了?


阅读 189

收藏
2021-01-20

共1个答案

一尘不染

当前版本的statsmodels具有madstatsmodels.robust

>>> import numpy as np
>>> from statsmodels import robust
>>> a = np.matrix( [
...     [ 80, 76, 77, 78, 79, 81, 76, 77, 79, 84, 75, 79, 76, 78 ],
...     [ 66, 69, 76, 72, 79, 77, 74, 77, 71, 79, 74, 66, 67, 73 ]
...  ], dtype=float )
>>> robust.mad(a, axis=1)
array([ 2.22390333,  5.18910776])

请注意,默认情况下,通过按比例因子缩放结果来计算正态分布,从而计算标准偏差的鲁棒估计;来自help

Signature: robust.mad(a, 
                      c=0.67448975019608171, 
                      axis=0, 
                      center=<function median at 0x10ba6e5f0>)

中的版本R进行了类似的标准化。如果您不想这样做,显然只需设置一下即可c=1

(之前的注释中提到了此statsmodels.robust.scale实现。实现位于statsmodels/robust/scale.py(请参阅github),但该robust包不会导出scale,而是scale.py显式导出公共功能。)

2021-01-20