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

发布于 2021-01-29 15:08:23

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

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

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

关注者
0
被浏览
72
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    当前版本的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显式导出公共功能。)



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看