安德森亲爱的测试给了我Python的无限分数

时间:2016-10-06 17:22:12

标签: python pandas distribution

我正在检查数据分布的正常性。这里。我正在运行anderson测试,输出是无限的。如何解释结果以及如何将此类分布转换为正态分布?

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]))

1 个答案:

答案 0 :(得分:2)

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

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

作为替代方案,如果可能的话,可以使用Cramér-von-Mises-Test,它不包含对数。