Почему хвостовая вероятность в apache math падает до нуля после 1E-16?
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 для вероятностей хвоста.
Дополнительное редактирование: В комментариях ниже Роберт предоставляет прямой способ вычисления вероятностей хи-квадратного хвоста, используя другую функцию из математической библиотеки Apache (регуляризованного GammaQ), у которой нет этой проблемы точности.
1 ответ
Обратите внимание, что наименьшее значение, которое можно вычесть из 1,0, чтобы получить что-то меньше 1,0, составляет приблизительно 1e-16; Вы можете проверить это напрямую. Может быть, вы должны распечатать chisq.cumulativeProbability(131) сам. Я не знаю, правильно ли это, но в любом случае давайте не будем путать проблему, вычитая ее из 1.0.