You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by ah...@apache.org on 2021/08/01 21:30:29 UTC

[commons-statistics] 02/05: Remove probabilty method from ContinuousDistribution

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 2decb7f6b68d344ca2745fc32879fdcac0389bf8
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Sun Aug 1 19:19:32 2021 +0100

    Remove probabilty method from ContinuousDistribution
    
    This is not implemented by any distribution.
---
 .../distribution/ContinuousDistribution.java       | 13 ----
 .../AbstractContinuousDistributionTest.java        | 10 ---
 .../ContinuousDistributionAbstractTest.java        | 84 ----------------------
 .../distribution/ContinuousDistributionTest.java   |  3 -
 4 files changed, 110 deletions(-)

diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ContinuousDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ContinuousDistribution.java
index 1894e0e..2b963d8 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ContinuousDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ContinuousDistribution.java
@@ -24,19 +24,6 @@ import org.apache.commons.rng.UniformRandomProvider;
 public interface ContinuousDistribution {
     /**
      * For a random variable {@code X} whose values are distributed according
-     * to this distribution, this method returns {@code P(X = x)}.
-     * In other words, this method represents the probability mass function
-     * (PMF) for the distribution.
-     *
-     * @param x Point at which the PMF is evaluated.
-     * @return the value of the probability mass function at point {@code x}.
-     */
-    default double probability(double x) {
-        return 0;
-    }
-
-    /**
-     * For a random variable {@code X} whose values are distributed according
      * to this distribution, this method returns {@code P(x0 < X <= x1)}.
      * The default implementation uses the identity
      * {@code P(x0 < X <= x1) = P(X <= x1) - P(X <= x0)}
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/AbstractContinuousDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/AbstractContinuousDistributionTest.java
index eb3603d..059a0bb 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/AbstractContinuousDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/AbstractContinuousDistributionTest.java
@@ -94,11 +94,6 @@ class AbstractContinuousDistributionTest {
             public boolean isSupportConnected() {
                 return false;
             }
-
-            @Override
-            public double probability(final double x) {
-                throw new UnsupportedOperationException();
-            }
         };
         final double expected = x1;
         final double actual = distribution.inverseCumulativeProbability(p12);
@@ -193,11 +188,6 @@ class AbstractContinuousDistributionTest {
             public boolean isSupportConnected() {
                 return false;
             }
-
-            @Override
-            public double probability(final double x) {
-                throw new UnsupportedOperationException();
-            }
         };
         final double expected = x2;
         final double actual = distribution.inverseCumulativeProbability(p23);
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java
index f04523e..59e13cb 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionAbstractTest.java
@@ -91,14 +91,6 @@ abstract class ContinuousDistributionAbstractTest {
     /** Tolerance used in high precision tests. */
     private double highPrecisionTolerance = 1e-22;
 
-    /** Arguments used to test probability calculations. */
-    private double[] probabilityTestPoints;
-
-    /** Values used to test probability calculations. */
-    private double[] probabilityTestValues;
-
-    // No log probability in the ContinuousDistribution interface
-
     /** Values used to test density calculations.
      *
      * <p>Note: The ContinuousDistribution interface defines the density as the gradient
@@ -138,32 +130,6 @@ abstract class ContinuousDistributionAbstractTest {
     /** Creates the default continuous distribution instance to use in tests. */
     public abstract ContinuousDistribution makeDistribution();
 
-    /** Creates the default probability test input values.
-     *
-     * <p>Distributions that evaluate a non-zero probability (i.e. override the
-     * interface default method {@link ContinuousDistribution#probability(double)} should
-     * define points to test.
-     */
-    public double[] makeProbabilityTestPoints() {
-        return EMPTY_DOUBLE_ARRAY;
-    }
-
-    /** Creates the default probability test expected values. */
-    public double[] makeProbabilityTestValues() {
-        return EMPTY_DOUBLE_ARRAY;
-    }
-
-    /** Creates the default logarithmic probability density test expected values.
-     *
-     * <p>The default implementation simply computes the logarithm of all the values in
-     * {@link #makeProbabilityTestValues()}.
-     *
-     * @return the default logarithmic probability density test expected values.
-     */
-    public double[] makeLogProbabilityTestValues() {
-        return Arrays.stream(makeProbabilityTestValues()).map(Math::log).toArray();
-    }
-
     /** Creates the default density test expected values. */
     public abstract double[] makeDensityTestValues();
 
@@ -235,8 +201,6 @@ abstract class ContinuousDistributionAbstractTest {
     @BeforeEach
     void setUp() {
         distribution = makeDistribution();
-        probabilityTestPoints = makeProbabilityTestPoints();
-        probabilityTestValues = makeProbabilityTestValues();
         densityTestValues = makeDensityTestValues();
         logDensityTestValues = makeLogDensityTestValues();
         cumulativeTestPoints = makeCumulativeTestPoints();
@@ -255,8 +219,6 @@ abstract class ContinuousDistributionAbstractTest {
     @AfterEach
     void tearDown() {
         distribution = null;
-        probabilityTestPoints = null;
-        probabilityTestValues = null;
         densityTestValues = null;
         logDensityTestValues = null;
         cumulativeTestPoints = null;
@@ -272,19 +234,6 @@ abstract class ContinuousDistributionAbstractTest {
     //-------------------- Verification methods -------------------------------
 
     /**
-     * Verifies that probability calculations match expected values
-     * using current test instance data.
-     */
-    protected void verifyProbabilities() {
-        for (int i = 0; i < probabilityTestPoints.length; i++) {
-            final double x = probabilityTestPoints[i];
-            Assertions.assertEquals(probabilityTestValues[i],
-                distribution.probability(x), getTolerance(),
-                () -> "Incorrect probability value returned for " + x);
-        }
-    }
-
-    /**
      * Verifies that density calculations match expected values
      * using current test instance data.
      */
@@ -412,11 +361,6 @@ abstract class ContinuousDistributionAbstractTest {
     //------------------------ Default test cases -----------------------------
 
     @Test
-    void testProbabilities() {
-        verifyProbabilities();
-    }
-
-    @Test
     void testDensities() {
         verifyDensities();
     }
@@ -634,34 +578,6 @@ abstract class ContinuousDistributionAbstractTest {
     }
 
     /**
-     * @return Returns the probabilityTestPoints.
-     */
-    protected double[] getProbabilityTestPoints() {
-        return probabilityTestPoints;
-    }
-
-    /**
-     * @param probabilityTestPoints The probabilityTestPoints to set.
-     */
-    protected void setProbabilityTestPoints(double[] probabilityTestPoints) {
-        this.probabilityTestPoints = probabilityTestPoints;
-    }
-
-    /**
-     * @return Returns the probabilityTestValues.
-     */
-    protected double[] getProbabilityTestValues() {
-        return probabilityTestValues;
-    }
-
-    /**
-     * @param probabilityTestValues The probabilityTestValues to set.
-     */
-    protected void setProbabilityTestValues(double[] probabilityTestValues) {
-        this.probabilityTestValues = probabilityTestValues;
-    }
-
-    /**
      * @return Returns the densityTestValues.
      */
     protected double[] getDensityTestValues() {
diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionTest.java
index da3b3aa..8158a16 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/ContinuousDistributionTest.java
@@ -75,9 +75,6 @@ class ContinuousDistributionTest {
 
         for (final double x : new double[] {Double.NaN, Double.POSITIVE_INFINITY,
             Double.NEGATIVE_INFINITY, 0, 1, 0.123}) {
-            // Always zero
-            Assertions.assertEquals(0, dist.probability(x));
-
             // Return the log of the density
             Assertions.assertEquals(Math.log(x), dist.logDensity(x));
         }