似乎scipy提供了一种功能mad来计算一组数字的平均绝对偏差:
mad
http://projects.scipy.org/scipy/browser/trunk/scipy/stats/models/utils.py?rev=3473
但是,我在最新版本的scipy中找不到它。当然,可以从存储库中复制旧代码,但是我更喜欢使用scipy的版本。我在哪里可以找到它,或者它已经被替换或移除了?
当前版本的statsmodels具有mad在statsmodels.robust:
statsmodels.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:
help
Signature: robust.mad(a, c=0.67448975019608171, axis=0, center=<function median at 0x10ba6e5f0>)
中的版本R进行了类似的标准化。如果您不想这样做,显然只需设置一下即可c=1。
R
c=1
(之前的注释中提到了此statsmodels.robust.scale实现。实现位于statsmodels/robust/scale.py(请参阅github),但该robust包不会导出scale,而是scale.py显式导出公共功能。)
statsmodels.robust.scale
statsmodels/robust/scale.py
robust
scale
scale.py