Apache Math 3.4(和3.3),java 1.8.0_25
import org.apache.commons.math3.distribution.ChiSquaredDistribution;
ChiSquaredDistribution chisq = new ChiSquaredDistribution(23)
System.out.println(1.0 - chisq.cumulativeProbability(130) // 1.1102230246251565E-16
System.out.println(1.0 - chisq.cumulativeProbability(131) // 0.0
为什么Apache Math在第二次调用中返回0.0?对于尾部概率,某些统计库(Excel,但不是R)返回的值远远小于1E-16。
附加编辑:在下面的评论中,Robert提供了使用Apache数学库(regularizedGammaQ)中没有此精度问题的另一个函数计算卡方尾概率的直接方法。
答案 0 :(得分:0)
注意,可以从1.0减去产生小于1.0的值的最小值约为1e-16;你可以直接验证这一点。也许你应该打印出chisq.cumulativeProbability(131)本身。我不知道它是否正确但在任何情况下都不要通过从1.0中减去它来混淆问题。