This is an automated email from the ASF dual-hosted git repository. aherbert pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/commons-statistics.git
commit 54816bcfa6b6f681cbbc7ea754324aa9b2c14380 Author: Alex Herbert <aherb...@apache.org> AuthorDate: Fri Oct 8 23:18:40 2021 +0100 More use of the RegularizedBeta function complement Add documentation where the complement is used. Add use of the complement in the BetaDistribution. --- .../apache/commons/statistics/distribution/BetaDistribution.java | 2 +- .../org/apache/commons/statistics/distribution/FDistribution.java | 7 +++++-- .../commons/statistics/distribution/RegularizedBetaUtils.java | 2 ++ 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java index 28a9097..28fe764 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BetaDistribution.java @@ -155,7 +155,7 @@ public class BetaDistribution extends AbstractContinuousDistribution { } else if (x >= 1) { return 0; } else { - return RegularizedBeta.value(1 - x, beta, alpha); + return RegularizedBetaUtils.complement(x, alpha, beta); } } diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/FDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/FDistribution.java index f48e266..6fb7530 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/FDistribution.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/FDistribution.java @@ -180,9 +180,12 @@ public class FDistribution extends AbstractContinuousDistribution { final double n = numeratorDegreesOfFreedom; final double m = denominatorDegreesOfFreedom; + // Comute the complement of the regularized beta function + // with direct computation of 1 - z: + // 1 - I(z, a, b) = I(1 - z, b, a) return RegularizedBeta.value(m / (m + n * x), - 0.5 * m, - 0.5 * n); + 0.5 * m, + 0.5 * n); } /** diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/RegularizedBetaUtils.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/RegularizedBetaUtils.java index 7ca809f..646f77d 100644 --- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/RegularizedBetaUtils.java +++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/RegularizedBetaUtils.java @@ -38,6 +38,8 @@ final class RegularizedBetaUtils { * @return the complement of the regularized beta function 1 - I(x, a, b). */ static double complement(double x, double a, double b) { + // See: http://functions.wolfram.com/06.21.17.0008.01 + // Identity of the regularized beta function: 1 - I_x(a, b) = I_{1-x}(b, a) // Ideally call RegularizedBeta.value(1 - x, b, a) to maximise precision. //