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
The following commit(s) were added to refs/heads/master by this push:
new 56dec36 Remove method upperCumulativeProbability
56dec36 is described below
commit 56dec36be95c5df5396de939f2a32525b955e414
Author: Alex Herbert <[email protected]>
AuthorDate: Fri Jul 30 18:40:48 2021 +0100
Remove method upperCumulativeProbability
It is made redundant by survivalProbability.
---
.../distribution/HypergeometricDistribution.java | 17 -----------------
.../distribution/HypergeometricDistributionTest.java | 15 ++++++++++++---
2 files changed, 12 insertions(+), 20 deletions(-)
diff --git
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/HypergeometricDistribution.java
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/HypergeometricDistribution.java
index 3b08cff..7ccb411 100644
---
a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/HypergeometricDistribution.java
+++
b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/HypergeometricDistribution.java
@@ -186,23 +186,6 @@ public class HypergeometricDistribution extends
AbstractDiscreteDistribution {
}
/**
- * For this distribution, {@code X}, this method returns {@code P(X >= x)}.
- *
- * <p>Note: This is not equal to {@link #survivalProbability(int)} which
computes {@code P(X > x)}.
- *
- * @param x Value at which the CDF is evaluated.
- * @return the upper tail CDF for this distribution.
- */
- public double upperCumulativeProbability(int x) {
- if (x <= lowerBound) {
- return 1.0;
- } else if (x > upperBound) {
- return 0.0;
- }
- return innerCumulativeProbability(upperBound, x);
- }
-
- /**
* For this distribution, {@code X}, this method returns
* {@code P(x0 <= X <= x1)}.
* This probability is computed by summing the point probabilities for the
diff --git
a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
index 5717016..14f3410 100644
---
a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
+++
b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/HypergeometricDistributionTest.java
@@ -200,6 +200,8 @@ class HypergeometricDistributionTest extends
DiscreteDistributionAbstractTest {
final int populationSize = 3456;
final int sampleSize = 789;
final int numberOfSucceses = 101;
+ // data[i][3] contains P(x >= x).
+ // It is tested using survivalProbability(x - 1)
final double[][] data = {
{0.0, 2.75646034603961e-12, 2.75646034603961e-12, 1.0},
{1.0, 8.55705370142386e-11, 8.83269973602783e-11,
0.999999999997244},
@@ -226,7 +228,7 @@ class HypergeometricDistributionTest extends
DiscreteDistributionAbstractTest {
testHypergeometricDistributionProbabilities(populationSize,
sampleSize, numberOfSucceses, data);
}
- private void testHypergeometricDistributionProbabilities(int
populationSize, int sampleSize,
+ private static void testHypergeometricDistributionProbabilities(int
populationSize, int sampleSize,
int numberOfSucceses, double[][] data) {
final HypergeometricDistribution dist = new
HypergeometricDistribution(populationSize, numberOfSucceses, sampleSize);
for (int i = 0; i < data.length; ++i) {
@@ -240,7 +242,7 @@ class HypergeometricDistributionTest extends
DiscreteDistributionAbstractTest {
TestUtils.assertRelativelyEquals(() -> "Expected equals for <" + x
+ "> cdf", cdf, actualCdf, 1.0e-9);
final double cdf1 = data[i][3];
- final double actualCdf1 = dist.upperCumulativeProbability(x);
+ final double actualCdf1 = dist.survivalProbability(x - 1);
TestUtils.assertRelativelyEquals(() -> "Expected equals for <" + x
+ "> cdf1", cdf1, actualCdf1, 1.0e-9);
}
}
@@ -273,6 +275,12 @@ class HypergeometricDistributionTest extends
DiscreteDistributionAbstractTest {
testHypergeometricDistributionProbabilities(populationSize,
sampleSize, numberOfSucceses, data);
}
+ /**
+ * Test Math-644 is ported from Commons Math 3 where the distribution had
the function
+ * upperCumulativeProbability(x) to compute P(X >= x). This has been
replaced
+ * in Commons Statistics with survivalProbability(x) which computes P(X >
x). To
+ * create the equivalent use survivalProbability(x - 1).
+ */
@Test
void testMath644() {
final int N = 14761461; // population
@@ -282,7 +290,8 @@ class HypergeometricDistributionTest extends
DiscreteDistributionAbstractTest {
final int k = 0;
final HypergeometricDistribution dist = new
HypergeometricDistribution(N, m, n);
- Assertions.assertEquals(0, Precision.compareTo(1.0,
dist.upperCumulativeProbability(k), 1));
+ // Compute upper cumulative probability using the survival probability
+ Assertions.assertEquals(0, Precision.compareTo(1.0,
dist.survivalProbability(k - 1), 1));
Assertions.assertTrue(Precision.compareTo(dist.cumulativeProbability(k), 0.0,
1) > 0);
// another way to calculate the upper cumulative probability