【问题标题】:Anderson darling test gives me infinity score in PythonAnderson darling test 在 Python 中给了我无穷大的分数
【发布时间】:2017-02-15 13:29:07
【问题描述】:

我正在检查我的数据分布的正态性。这里。我正在对此进行安德森测试,输出为无穷大。我如何解释结果以及如何将这种类型的分布转换为正态分布?

check_list= ["norm","logistic"]
for typelike in check_list:
    print typelike
    x=mydata
    print sp.stats.anderson(x, dist=typelike)

我得到以下输出

标准

AndersonResult(statistic=inf,
critical_values=array([ 0.576,  0.656, 0.787,  0.918,  1.092]),
significance_level=array([ 15. ,  10. ,   5. ,   2.5,   1. ]))

物流

AndersonResult(statistic=2504915.1041950081,
critical_values=array([ 0.426,  0.563,  0.66 ,  0.769,  0.906,  1.01 ]),
significance_level=array([ 25. ,  10. ,   5. ,   2.5,   1. ,   0.5]))

【问题讨论】:

标签: python pandas distribution


【解决方案1】:

过去,我也遇到过类似的问题。不幸的是,SciPy 内部浮点计算的数值精度是有限的。如果您距离正态分布的中心有几个 sigma,那么对于 CDF 中的某些点,这会产生精确的 1(或 0)。然后,Anderson-Darling 检验的数学公式中的对数产生无穷大的值。

如果您只有一些您感兴趣的特定分布,一个可能的解决方案是将封闭形式或高精度 CDF 表示与 Python 的高精度数学库(例如 mpmath)一起使用。特别是对于正态分布,使用误差函数(erf/erfc),这应该提供准确的值。 Anderson-Darling 测试的自定义实现只包含几行代码。

如果可能,可以选择不包含对数的 Cramér-von-Mises-Test。

【讨论】:

    猜你喜欢
    • 2015-09-16
    • 2021-03-10
    • 2021-06-14
    • 2018-11-21
    • 2020-07-19
    • 2022-08-12
    • 1970-01-01
    • 2015-03-22
    • 1970-01-01
    相关资源
    最近更新 更多