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 2022/11/22 15:41:05 UTC

[commons-statistics] branch master updated (abe6f6e -> b6c6c72)

This is an automated email from the ASF dual-hosted git repository.

aherbert pushed a change to branch master
in repository https://gitbox.apache.org/repos/asf/commons-statistics.git


    from abe6f6e  Use parameterized test
     new 2759762  Extra moments test cases for trapezoidal distribution
     new 281bb6e  Updated comment for density computation
     new 0a41bac  Use MathJax for mean and variance documentation
     new b6c6c72  Use MathJax for inverse probability definition

The 4 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../statistics/distribution/BetaDistribution.java  | 13 +++--
 .../distribution/BinomialDistribution.java         |  6 +-
 .../distribution/ChiSquaredDistribution.java       |  4 +-
 .../distribution/ContinuousDistribution.java       | 22 ++++----
 .../distribution/DiscreteDistribution.java         | 24 ++++----
 .../distribution/ExponentialDistribution.java      |  2 +-
 .../statistics/distribution/FDistribution.java     | 28 +++++----
 .../statistics/distribution/GammaDistribution.java |  8 +--
 .../distribution/GeometricDistribution.java        |  9 ++-
 .../distribution/GumbelDistribution.java           | 12 +++-
 .../distribution/HypergeometricDistribution.java   | 15 +++--
 .../distribution/LaplaceDistribution.java          |  2 +-
 .../distribution/LogNormalDistribution.java        | 10 ++--
 .../distribution/LogisticDistribution.java         | 10 ++--
 .../distribution/NakagamiDistribution.java         | 16 +++++-
 .../distribution/NormalDistribution.java           |  2 +-
 .../distribution/ParetoDistribution.java           | 66 ++++++++++++----------
 .../distribution/PascalDistribution.java           | 12 ++--
 .../statistics/distribution/TDistribution.java     | 24 ++++----
 .../distribution/TrapezoidalDistribution.java      |  8 +--
 .../distribution/TriangularDistribution.java       |  6 +-
 .../distribution/TruncatedNormalDistribution.java  | 19 +++++++
 .../UniformContinuousDistribution.java             |  6 +-
 .../distribution/UniformDiscreteDistribution.java  | 10 ++--
 .../distribution/WeibullDistribution.java          | 15 +++--
 .../statistics/distribution/ZipfDistribution.java  | 27 ++++-----
 .../distribution/TrapezoidalDistributionTest.java  | 62 ++++++++++++++------
 27 files changed, 269 insertions(+), 169 deletions(-)


[commons-statistics] 04/04: Use MathJax for inverse probability definition

Posted by ah...@apache.org.
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 b6c6c727691d863b936461ac9c22f0bffaf63e3a
Author: aherbert <ah...@apache.org>
AuthorDate: Tue Nov 22 15:37:25 2022 +0000

    Use MathJax for inverse probability definition
    
    Corrects definition to {x in Z} for discrete distribution
    inverseSurvivalProbability.
---
 .../distribution/ContinuousDistribution.java       | 22 +++++++++++---------
 .../distribution/DiscreteDistribution.java         | 24 +++++++++++++---------
 2 files changed, 26 insertions(+), 20 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 005cb87..8e26379 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
@@ -102,11 +102,12 @@ public interface ContinuousDistribution {
     /**
      * Computes the quantile function of this distribution. For a random
      * variable {@code X} distributed according to this distribution, the
-     * returned value is
-     * <ul>
-     * <li>{@code inf{x in R | P(X<=x) >= p}} for {@code 0 < p <= 1},</li>
-     * <li>{@code inf{x in R | P(X<=x) > 0}} for {@code p = 0}.</li>
-     * </ul>
+     * returned value is:
+     *
+     * <p>\[ x = \begin{cases}
+     *       \inf \{ x \in \mathbb R : P(X \le x) \ge p\}   &amp; \text{for } 0 \lt p \le 1 \\
+     *       \inf \{ x \in \mathbb R : P(X \le x) \gt 0 \}  &amp; \text{for } p = 0
+     *       \end{cases} \]
      *
      * @param p Cumulative probability.
      * @return the smallest {@code p}-quantile of this distribution
@@ -118,11 +119,12 @@ public interface ContinuousDistribution {
     /**
      * Computes the inverse survival probability function of this distribution. For a random
      * variable {@code X} distributed according to this distribution, the
-     * returned value is
-     * <ul>
-     * <li>{@code inf{x in R | P(X>=x) <= p}} for {@code 0 <= p < 1},</li>
-     * <li>{@code inf{x in R | P(X>=x) < 1}} for {@code p = 1}.</li>
-     * </ul>
+     * returned value is:
+     *
+     * <p>\[ x = \begin{cases}
+     *       \inf \{ x \in \mathbb R : P(X \ge x) \le p\}   &amp; \text{for } 0 \le p \lt 1 \\
+     *       \inf \{ x \in \mathbb R : P(X \ge x) \lt 1 \}  &amp; \text{for } p = 1
+     *       \end{cases} \]
      *
      * <p>By default, this is defined as {@code inverseCumulativeProbability(1 - p)}, but
      * the specific implementation may be more accurate.
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/DiscreteDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/DiscreteDistribution.java
index 75dcac2..8560bae 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/DiscreteDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/DiscreteDistribution.java
@@ -111,11 +111,13 @@ public interface DiscreteDistribution {
     /**
      * Computes the quantile function of this distribution.
      * For a random variable {@code X} distributed according to this distribution,
-     * the returned value is
-     * <ul>
-     * <li>{@code inf{x in Z | P(X<=x) >= p}} for {@code 0 < p <= 1},</li>
-     * <li>{@code inf{x in Z | P(X<=x) > 0}} for {@code p = 0}.</li>
-     * </ul>
+     * the returned value is:
+     *
+     * <p>\[ x = \begin{cases}
+     *       \inf \{ x \in \mathbb Z : P(X \le x) \ge p\}   &amp; \text{for } 0 \lt p \le 1 \\
+     *       \inf \{ x \in \mathbb Z : P(X \le x) \gt 0 \}  &amp; \text{for } p = 0
+     *       \end{cases} \]
+     *
      * <p>If the result exceeds the range of the data type {@code int},
      * then {@code Integer.MIN_VALUE} or {@code Integer.MAX_VALUE} is returned.
      * In this case the result of {@link #cumulativeProbability(int)} called
@@ -131,11 +133,13 @@ public interface DiscreteDistribution {
     /**
      * Computes the inverse survival probability function of this distribution.
      * For a random variable {@code X} distributed according to this distribution,
-     * the returned value is
-     * <ul>
-     * <li>{@code inf{x in R | P(X>=x) <= p}} for {@code 0 <= p < 1},</li>
-     * <li>{@code inf{x in R | P(X>=x) < 1}} for {@code p = 1}.</li>
-     * </ul>
+     * the returned value is:
+     *
+     * <p>\[ x = \begin{cases}
+     *       \inf \{ x \in \mathbb Z : P(X \ge x) \le p\}   &amp; \text{for } 0 \le p \lt 1 \\
+     *       \inf \{ x \in \mathbb Z : P(X \ge x) \lt 1 \}  &amp; \text{for } p = 1
+     *       \end{cases} \]
+     *
      * <p>If the result exceeds the range of the data type {@code int},
      * then {@code Integer.MIN_VALUE} or {@code Integer.MAX_VALUE} is returned.
      * In this case the result of {@link #survivalProbability(int)} called


[commons-statistics] 01/04: Extra moments test cases for trapezoidal distribution

Posted by ah...@apache.org.
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 2759762745f49715a09cdaacc7f2e981f443e01a
Author: aherbert <ah...@apache.org>
AuthorDate: Tue Nov 22 10:34:36 2022 +0000

    Extra moments test cases for trapezoidal distribution
---
 .../distribution/TrapezoidalDistributionTest.java  | 62 ++++++++++++++++------
 1 file changed, 46 insertions(+), 16 deletions(-)

diff --git a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TrapezoidalDistributionTest.java b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TrapezoidalDistributionTest.java
index b14a605..0d0915c 100644
--- a/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TrapezoidalDistributionTest.java
+++ b/commons-statistics-distribution/src/test/java/org/apache/commons/statistics/distribution/TrapezoidalDistributionTest.java
@@ -75,33 +75,63 @@ class TrapezoidalDistributionTest extends BaseContinuousDistributionTest {
 
     @ParameterizedTest
     @MethodSource
-    void testAdditionalMoments(double a, double b, double c, double d, double mean, double variance) {
+    void testAdditionalMoments(double a, double b, double c, double d, double mean, double variance, int ulps) {
         final TrapezoidalDistribution dist = TrapezoidalDistribution.of(a, b, c, d);
-        testMoments(dist, mean, variance, DoubleTolerances.ulps(8));
+        testMoments(dist, mean, variance, DoubleTolerances.ulps(ulps));
     }
 
     static Stream<Arguments> testAdditionalMoments() {
         return Stream.of(
             // Computed using scipy.stats.trapezoid
             // Up slope, then flat
-            Arguments.of(0, 0.1,   1, 1, 0.5245614035087719, 0.07562480763311791),
-            Arguments.of(0, 1e-3,  1, 1, 0.5002499583124894, 0.08325006249999839),
-            Arguments.of(0, 1e-6,  1, 1, 0.5000002499999582, 0.08333325000006259),
-            Arguments.of(0, 1e-9,  1, 1, 0.50000000025,      0.08333333324999997),
-            Arguments.of(0, 1e-12, 1, 1, 0.50000000000025,   0.08333333333324999),
-            Arguments.of(0, 1e-15, 1, 1, 0.5000000000000003, 0.0833333333333332),
-            Arguments.of(0, 0,     1, 1, 0.5,                0.08333333333333331),
+            Arguments.of(0, 0.1,   1, 1, 0.5245614035087719, 0.07562480763311791, 8),
+            Arguments.of(0, 1e-3,  1, 1, 0.5002499583124894, 0.08325006249999839, 8),
+            Arguments.of(0, 1e-6,  1, 1, 0.5000002499999582, 0.08333325000006259, 8),
+            Arguments.of(0, 1e-9,  1, 1, 0.50000000025,      0.08333333324999997, 4),
+            Arguments.of(0, 1e-12, 1, 1, 0.50000000000025,   0.08333333333324999, 4),
+            Arguments.of(0, 1e-15, 1, 1, 0.5000000000000003, 0.0833333333333332, 4),
+            Arguments.of(0, 0,     1, 1, 0.5,                0.08333333333333331, 1),
             // Flat, then down slope
-            Arguments.of(0, 0, 0.9,               1, 0.47543859649122816, 0.07562480763311777),
-            Arguments.of(0, 0, 0.999,             1, 0.49975004168751025, 0.08325006249999842),
-            Arguments.of(0, 0, 0.999999,          1, 0.4999997500000417,  0.08333325000006248),
-            Arguments.of(0, 0, 0.999999999,       1, 0.49999999975000003, 0.08333333325000003),
-            Arguments.of(0, 0, 0.999999999999,    1, 0.49999999999975003, 0.08333333333324999),
-            Arguments.of(0, 0, 0.999999999999999, 1, 0.4999999999999998,  0.08333333333333326),
-            Arguments.of(0, 0, 1,                 1, 0.5,                 0.08333333333333331)
+            Arguments.of(0, 0, 0.9,               1, 0.47543859649122816, 0.07562480763311777, 4),
+            Arguments.of(0, 0, 0.999,             1, 0.49975004168751025, 0.08325006249999842, 4),
+            Arguments.of(0, 0, 0.999999,          1, 0.4999997500000417,  0.08333325000006248, 2),
+            Arguments.of(0, 0, 0.999999999,       1, 0.49999999975000003, 0.08333333325000003, 1),
+            Arguments.of(0, 0, 0.999999999999,    1, 0.49999999999975003, 0.08333333333324999, 1),
+            Arguments.of(0, 0, 0.999999999999999, 1, 0.4999999999999998,  0.08333333333333326, 1),
+            Arguments.of(0, 0, 1,                 1, 0.5,                 0.08333333333333331, 1),
+            // Computed
+            moments(-3, 1, 4, 12, 10),
+            moments(1, 2, 3, 4, 4),
+            moments(11, 15, 22, 30, 4),
+            moments(0, 1, 9, 10, 4),
+            moments(-12, -10, -2, -1, 8)
         );
     }
 
+    /**
+     * Compute the mean and variance and return the arguments: [a, b, c, d, mean, variance, ulps].
+     * The ulps are the expected units of least precision error for the test. This is typically
+     * limited by the variance as it depends on accuracy of the mean squared.
+     */
+    private static Arguments moments(double a, double b, double c, double d, int ulps) {
+        final BigDecimal aa = new BigDecimal(a);
+        final BigDecimal bb = new BigDecimal(b);
+        final BigDecimal cc = new BigDecimal(c);
+        final BigDecimal dd = new BigDecimal(d);
+        final MathContext mc = MathContext.DECIMAL128;
+        // Mean
+        BigDecimal divisor = dd.add(cc).subtract(aa).subtract(bb).multiply(BigDecimal.valueOf(3));
+        BigDecimal dc = dd.pow(3).subtract(cc.pow(3)).divide(dd.subtract(cc), mc);
+        BigDecimal ba = bb.pow(3).subtract(aa.pow(3)).divide(bb.subtract(aa), mc);
+        final BigDecimal mu = dc.subtract(ba).divide(divisor, mc);
+        // Variance
+        divisor = divisor.multiply(BigDecimal.valueOf(2));
+        dc = dd.pow(4).subtract(cc.pow(4)).divide(dd.subtract(cc), mc);
+        ba = bb.pow(4).subtract(aa.pow(4)).divide(bb.subtract(aa), mc);
+        final BigDecimal var = dc.subtract(ba).divide(divisor, mc).subtract(mu.pow(2));
+        return Arguments.of(a, b, c, d, mu.doubleValue(), var.doubleValue(), ulps);
+    }
+
     /**
      * Create a trapezoid with a very long upper tail to explicitly test the survival
      * probability is high precision.


[commons-statistics] 03/04: Use MathJax for mean and variance documentation

Posted by ah...@apache.org.
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 0a41bac2de44e831f30eeeafdb7fbe6bf05f7f14
Author: aherbert <ah...@apache.org>
AuthorDate: Tue Nov 22 15:15:24 2022 +0000

    Use MathJax for mean and variance documentation
---
 .../statistics/distribution/BetaDistribution.java  | 13 +++--
 .../distribution/BinomialDistribution.java         |  6 +-
 .../distribution/ChiSquaredDistribution.java       |  4 +-
 .../distribution/ExponentialDistribution.java      |  2 +-
 .../statistics/distribution/FDistribution.java     | 28 +++++----
 .../statistics/distribution/GammaDistribution.java |  8 +--
 .../distribution/GeometricDistribution.java        |  9 ++-
 .../distribution/GumbelDistribution.java           | 12 +++-
 .../distribution/HypergeometricDistribution.java   | 15 +++--
 .../distribution/LaplaceDistribution.java          |  2 +-
 .../distribution/LogNormalDistribution.java        | 10 ++--
 .../distribution/LogisticDistribution.java         |  4 +-
 .../distribution/NakagamiDistribution.java         | 16 +++++-
 .../distribution/NormalDistribution.java           |  2 +-
 .../distribution/ParetoDistribution.java           | 66 ++++++++++++----------
 .../distribution/PascalDistribution.java           | 12 ++--
 .../statistics/distribution/TDistribution.java     | 24 ++++----
 .../distribution/TrapezoidalDistribution.java      |  8 +--
 .../distribution/TriangularDistribution.java       |  6 +-
 .../distribution/TruncatedNormalDistribution.java  | 19 +++++++
 .../UniformContinuousDistribution.java             |  6 +-
 .../distribution/UniformDiscreteDistribution.java  | 10 ++--
 .../distribution/WeibullDistribution.java          | 15 +++--
 .../statistics/distribution/ZipfDistribution.java  | 27 ++++-----
 24 files changed, 194 insertions(+), 130 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 6fdf04b..307a00a 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
@@ -185,8 +185,10 @@ public final class BetaDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For first shape parameter {@code alpha} and second shape parameter
-     * {@code beta}, the mean is {@code alpha / (alpha + beta)}.
+     * <p>For first shape parameter \( \alpha \) and second shape parameter
+     * \( \beta \), the mean is:
+     *
+     * <p>\[ \frac{\alpha}{\alpha + \beta} \]
      */
     @Override
     public double getMean() {
@@ -196,9 +198,10 @@ public final class BetaDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For first shape parameter {@code alpha} and second shape parameter
-     * {@code beta}, the variance is
-     * {@code (alpha * beta) / [(alpha + beta)^2 * (alpha + beta + 1)]}.
+     * <p>For first shape parameter \( \alpha \) and second shape parameter
+     * \( \beta \), the variance is:
+     *
+     * <p>\[ \frac{\alpha \beta}{(\alpha + \beta)^2 (\alpha + \beta + 1)} \].
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BinomialDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BinomialDistribution.java
index e12cb68..96f2d5a 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BinomialDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/BinomialDistribution.java
@@ -168,8 +168,7 @@ public final class BinomialDistribution extends AbstractDiscreteDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For {@code n} trials and probability parameter {@code p}, the mean is
-     * {@code n * p}.
+     * <p>For number of trials \( n \) and probability of success \( p \), the mean is \( np \).
      */
     @Override
     public double getMean() {
@@ -179,8 +178,7 @@ public final class BinomialDistribution extends AbstractDiscreteDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For {@code n} trials and probability parameter {@code p}, the variance is
-     * {@code n * p * (1 - p)}.
+     * <p>For number of trials \( n \) and probability of success \( p \), the variance is \( np (1 - p) \).
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ChiSquaredDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ChiSquaredDistribution.java
index cf01e31..0c305cb 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ChiSquaredDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ChiSquaredDistribution.java
@@ -118,7 +118,7 @@ public final class ChiSquaredDistribution extends AbstractContinuousDistribution
     /**
      * {@inheritDoc}
      *
-     * <p>For {@code k} degrees of freedom, the mean is {@code k}.
+     * <p>For \( k \) degrees of freedom, the mean is \( k \).
      */
     @Override
     public double getMean() {
@@ -128,7 +128,7 @@ public final class ChiSquaredDistribution extends AbstractContinuousDistribution
     /**
      * {@inheritDoc}
      *
-     * @return {@code 2 * k}, where {@code k} is the number of degrees of freedom.
+     * <p>For \( k \) degrees of freedom, the variance is \( 2k \).
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java
index a4ba8b9..945a5d5 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ExponentialDistribution.java
@@ -147,7 +147,7 @@ public final class ExponentialDistribution extends AbstractContinuousDistributio
     /**
      * {@inheritDoc}
      *
-     * <p>For mean {@code k}, the variance is {@code k^2}.
+     * <p>For mean \( \mu \), the variance is \( \mu^2 \).
      */
     @Override
     public double getVariance() {
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 5ca3555..0627bb3 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
@@ -79,7 +79,6 @@ public final class FDistribution extends AbstractContinuousDistribution {
         }
         if (denominatorDegreesOfFreedom > MIN_DENOMINATOR_DF_FOR_VARIANCE) {
             final double denomDFMinusTwo = denominatorDegreesOfFreedom - 2;
-
             variance = (2 * (denominatorDegreesOfFreedom * denominatorDegreesOfFreedom) *
                             (numeratorDegreesOfFreedom + denominatorDegreesOfFreedom - 2)) /
                        (numeratorDegreesOfFreedom * (denomDFMinusTwo * denomDFMinusTwo) *
@@ -281,11 +280,12 @@ public final class FDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For denominator degrees of freedom parameter {@code b}, the mean is
-     * <ul>
-     *  <li>if {@code b > 2} then {@code b / (b - 2)},</li>
-     *  <li>else undefined ({@code NaN}).
-     * </ul>
+     * <p>For denominator degrees of freedom parameter \( m \), the mean is:
+     *
+     * <p>\[ \operatorname{E}[X] = \begin{cases}
+     *       \frac{m}{m-2}    &amp; \text{for } m \gt 2 \\
+     *       \text{undefined} &amp; \text{otherwise}
+     *       \end{cases} \]
      *
      * @return the mean, or {@code NaN} if it is not defined.
      */
@@ -297,15 +297,13 @@ public final class FDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For numerator degrees of freedom parameter {@code a} and denominator
-     * degrees of freedom parameter {@code b}, the variance is
-     * <ul>
-     *  <li>
-     *    if {@code b > 4} then
-     *    {@code [2 * b^2 * (a + b - 2)] / [a * (b - 2)^2 * (b - 4)]},
-     *  </li>
-     *  <li>else undefined ({@code NaN}).
-     * </ul>
+     * <p>For numerator degrees of freedom parameter \( n \) and denominator
+     * degrees of freedom parameter \( m \), the variance is:
+     *
+     * <p>\[ \operatorname{var}[X] = \begin{cases}
+     *       \frac{2m^2 (n+m-2)}{n (m-2)^2 (m-4)} &amp; \text{for } m \gt 4 \\
+     *       \text{undefined}                     &amp; \text{otherwise}
+     *       \end{cases} \]
      *
      * @return the variance, or {@code NaN} if it is not defined.
      */
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GammaDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GammaDistribution.java
index 4a13e72..79f0aa4 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GammaDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GammaDistribution.java
@@ -198,8 +198,8 @@ public final class GammaDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For shape parameter {@code alpha} and scale parameter {@code beta}, the
-     * mean is {@code alpha * beta}.
+     * <p>For shape parameter \( k \) and scale parameter \( \theta \), the
+     * mean is \( k \theta \).
      */
     @Override
     public double getMean() {
@@ -209,8 +209,8 @@ public final class GammaDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For shape parameter {@code alpha} and scale parameter {@code beta}, the
-     * variance is {@code alpha * beta^2}.
+     * <p>For shape parameter \( k \) and scale parameter \( \theta \), the
+     * variance is \( k \theta^2 \).
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GeometricDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GeometricDistribution.java
index d19b4d8..882fd02 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GeometricDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GeometricDistribution.java
@@ -206,7 +206,9 @@ public final class GeometricDistribution extends AbstractDiscreteDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For probability parameter {@code p}, the mean is {@code (1 - p) / p}.
+     * <p>For probability parameter \( p \), the mean is:
+     *
+     * <p>\[ \frac{1 - p}{p} \]
      */
     @Override
     public double getMean() {
@@ -216,8 +218,9 @@ public final class GeometricDistribution extends AbstractDiscreteDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For probability parameter {@code p}, the variance is
-     * {@code (1 - p) / (p * p)}.
+     * <p>For probability parameter \( p \), the variance is:
+     *
+     * <p>\[ \frac{1 - p}{p^2} \]
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GumbelDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GumbelDistribution.java
index ce84287..58df245 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GumbelDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/GumbelDistribution.java
@@ -160,9 +160,13 @@ public final class GumbelDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>The mean is {@code mu + gamma * beta}, where {@code gamma} is
+     * <p>For location parameter \( \mu \) and scale parameter \( \beta \), the mean is:
+     *
+     * <p>\[ \mu + \beta \gamma \]
+     *
+     * <p>where \( \gamma \) is the
      * <a href="https://mathworld.wolfram.com/Euler-MascheroniConstantApproximations.html">
-     * Euler's constant</a>
+     * Euler-Mascheroni constant</a>.
      */
     @Override
     public double getMean() {
@@ -172,7 +176,9 @@ public final class GumbelDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>The variance is {@code pi^2 * beta^2 / 6}.
+     * <p>For scale parameter \( \beta \), the variance is:
+     *
+     * <p>\[ \frac{\pi^2}{6} \beta^2 \]
      */
     @Override
     public double getVariance() {
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 8cbb2c4..0e669b3 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
@@ -248,8 +248,10 @@ public final class HypergeometricDistribution extends AbstractDiscreteDistributi
     /**
      * {@inheritDoc}
      *
-     * <p>For population size {@code N}, number of successes {@code m}, and sample
-     * size {@code n}, the mean is {@code n * m / N}.
+     * <p>For population size \( N \), number of successes \( m \), and sample
+     * size \( n \), the mean is:
+     *
+     * <p>\[ n \frac{m}{N} \]
      */
     @Override
     public double getMean() {
@@ -259,16 +261,17 @@ public final class HypergeometricDistribution extends AbstractDiscreteDistributi
     /**
      * {@inheritDoc}
      *
-     * <p>For population size {@code N}, number of successes {@code m}, and sample
-     * size {@code n}, the variance is
-     * {@code (n * m * (N - n) * (N - m)) / (N^2 * (N - 1))}.
+     * <p>For population size \( N \), number of successes \( m \), and sample
+     * size \( n \), the variance is:
+     *
+     * <p>\[ n \frac{m}{N} \frac{N-m}{N} \frac{N-n}{N-1} \]
      */
     @Override
     public double getVariance() {
         final double N = getPopulationSize();
         final double m = getNumberOfSuccesses();
         final double n = getSampleSize();
-        return (n * m * (N - n) * (N - m)) / (N * N * (N - 1));
+        return (n * m * (N - m) * (N - n)) / (N * N * (N - 1));
     }
 
     /**
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LaplaceDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LaplaceDistribution.java
index 63c7b53..d341e14 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LaplaceDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LaplaceDistribution.java
@@ -153,7 +153,7 @@ public final class LaplaceDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>The variance is {@code 2 * beta^2}.
+     * <p>For scale parameter \( b \), the variance is \( 2 b^2 \).
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogNormalDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogNormalDistribution.java
index b466f58..a3d5dfd 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogNormalDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogNormalDistribution.java
@@ -213,8 +213,9 @@ public final class LogNormalDistribution extends AbstractContinuousDistribution
      *
      * <p>For \( \mu \) the mean of the normally distributed natural logarithm of
      * this distribution, \( \sigma &gt; 0 \) the standard deviation of the normally
-     * distributed natural logarithm of this distribution, the mean is
-     * \( \exp(\mu + \frac{\sigma^2}{2}) \).
+     * distributed natural logarithm of this distribution, the mean is:
+     *
+     * <p>\[ \exp(\mu + \frac{\sigma^2}{2}) \]
      */
     @Override
     public double getMean() {
@@ -227,8 +228,9 @@ public final class LogNormalDistribution extends AbstractContinuousDistribution
      *
      * <p>For \( \mu \) the mean of the normally distributed natural logarithm of
      * this distribution, \( \sigma &gt; 0 \) the standard deviation of the normally
-     * distributed natural logarithm of this distribution, the variance is
-     * \( [\exp(\sigma^2) - 1)]  \exp(2 \mu + \sigma^2) \).
+     * distributed natural logarithm of this distribution, the variance is:
+     *
+     * <p>\[ [\exp(\sigma^2) - 1)] \exp(2 \mu + \sigma^2) \]
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogisticDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogisticDistribution.java
index c03743e..8dce169 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogisticDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogisticDistribution.java
@@ -177,7 +177,9 @@ public final class LogisticDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For scale parameter {@code s}, the variance is {@code s^2 * pi^2 / 3}.
+     * <p>For scale parameter \( s \), the variance is:
+     *
+     * <p>\[ \frac{s^2 \pi^2}{3} \].
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NakagamiDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NakagamiDistribution.java
index df3ccbc..c64f3b8 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NakagamiDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NakagamiDistribution.java
@@ -157,13 +157,25 @@ public final class NakagamiDistribution extends AbstractContinuousDistribution {
         return RegularizedGamma.Q.value(mu, mu * x * x / omega);
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     *
+     * <p>For shape parameter \( \mu \) and scale parameter \( \Omega \), the mean is:
+     *
+     * <p>\[ \frac{\Gamma(m+\frac{1}{2})}{\Gamma(m)}\left(\frac{\Omega}{m}\right)^{1/2} \]
+     */
     @Override
     public double getMean() {
         return mean;
     }
 
-    /** {@inheritDoc} */
+    /**
+     * {@inheritDoc}
+     *
+     * <p>For shape parameter \( \mu \) and scale parameter \( \Omega \), the variance is:
+     *
+     * <p>\[ \Omega\left(1-\frac{1}{m}\left(\frac{\Gamma(m+\frac{1}{2})}{\Gamma(m)}\right)^2\right) \]
+     */
     @Override
     public double getVariance() {
         return variance;
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NormalDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NormalDistribution.java
index 940d1ee..ccd75f5 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NormalDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/NormalDistribution.java
@@ -171,7 +171,7 @@ public final class NormalDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For standard deviation parameter {@code s}, the variance is {@code s^2}.
+     * <p>For standard deviation parameter \( \sigma \), the variance is \( \sigma^2 \).
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ParetoDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ParetoDistribution.java
index c771d91..48506a7 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ParetoDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ParetoDistribution.java
@@ -132,13 +132,13 @@ public final class ParetoDistribution extends AbstractContinuousDistribution {
 
     /**
      * {@inheritDoc}
-     * <p>
-     * For scale {@code k}, and shape {@code α} of this distribution, the PDF
-     * is given by
-     * <ul>
-     * <li>{@code 0} if {@code x < k},</li>
-     * <li>{@code α * k^α / x^(α + 1)} otherwise.</li>
-     * </ul>
+     *
+     * <p>For scale parameter \( k \) and shape parameter \( \alpha \), the PDF is:
+     *
+     * <p>\[ f(x; k, \alpha) = \begin{cases}
+     *       0                                       &amp; \text{for } x \lt k \\
+     *       \frac{\alpha  k^\alpha}{x^{\alpha + 1}} &amp; \text{for } x \ge k
+     *       \end{cases} \]
      */
     @Override
     public double density(double x) {
@@ -162,12 +162,13 @@ public final class ParetoDistribution extends AbstractContinuousDistribution {
 
     /**
      * {@inheritDoc}
-     * <p>
-     * For scale {@code k}, and shape {@code α} of this distribution, the CDF is given by
-     * <ul>
-     * <li>{@code 0} if {@code x < k},</li>
-     * <li>{@code 1 - (k / x)^α} otherwise.</li>
-     * </ul>
+     *
+     * <p>For scale parameter \( k \) and shape parameter \( \alpha \), the CDF is:
+     *
+     * <p>\[ F(x; k, \alpha) = \begin{cases}
+     *       0                                     &amp; \text{for } x \le k \\
+     *       1 - \left( \frac{k}{x} \right)^\alpha &amp; \text{for } x \gt k
+     *       \end{cases} \]
      */
     @Override
     public double cumulativeProbability(double x)  {
@@ -181,12 +182,13 @@ public final class ParetoDistribution extends AbstractContinuousDistribution {
 
     /**
      * {@inheritDoc}
-     * <p>
-     * For scale {@code k}, and shape {@code α} of this distribution, the survival function is given by
-     * <ul>
-     * <li>{@code 1} if {@code x < k},</li>
-     * <li>{@code (k / x)^α} otherwise.</li>
-     * </ul>
+     *
+     * <p>For scale parameter \( k \) and shape parameter \( \alpha \), the survival function is:
+     *
+     * <p>\[ S(x; k, \alpha) = \begin{cases}
+     *       1                                 &amp; \text{for } x \le k \\
+     *       \left( \frac{k}{x} \right)^\alpha &amp; \text{for } x \gt k
+     *       \end{cases} \]
      */
     @Override
     public double survivalProbability(double x)  {
@@ -224,12 +226,13 @@ public final class ParetoDistribution extends AbstractContinuousDistribution {
 
     /**
      * {@inheritDoc}
-     * <p>
-     * For scale {@code k} and shape {@code α}, the mean is given by
-     * <ul>
-     * <li>{@code ∞} if {@code α <= 1},</li>
-     * <li>{@code α * k / (α - 1)} otherwise.</li>
-     * </ul>
+     *
+     * <p>For scale parameter \( k \) and shape parameter \( \alpha \), the mean is:
+     *
+     * <p>\[ \operatorname{E}[X] = \begin{cases}
+     *       \infty                      &amp; \text{for } \alpha \le 1 \\
+     *       \frac{k \alpha}{(\alpha-1)} &amp; \text{for } \alpha \gt 1
+     *       \end{cases} \]
      */
     @Override
     public double getMean() {
@@ -244,12 +247,13 @@ public final class ParetoDistribution extends AbstractContinuousDistribution {
 
     /**
      * {@inheritDoc}
-     * <p>
-     * For scale {@code k} and shape {@code α}, the variance is given by
-     * <ul>
-     * <li>{@code ∞} if {@code 1 < α <= 2},</li>
-     * <li>{@code k^2 * α / ((α - 1)^2 * (α - 2))} otherwise.</li>
-     * </ul>
+     *
+     * <p>For scale parameter \( k \) and shape parameter \( \alpha \), the variance is:
+     *
+     * <p>\[ \operatorname{var}[X] = \begin{cases}
+     *       \infty                                     &amp; \text{for } \alpha \le 2 \\
+     *       \frac{k^2 \alpha}{(\alpha-1)^2 (\alpha-2)} &amp; \text{for } \alpha \gt 2
+     *       \end{cases} \]
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java
index 0d71a2c..3f92763 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/PascalDistribution.java
@@ -183,8 +183,10 @@ public final class PascalDistribution extends AbstractDiscreteDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For number of successes {@code r} and probability of success {@code p},
-     * the mean is {@code r * (1 - p) / p}.
+     * <p>For number of successes \( r \) and probability of success \( p \),
+     * the mean is:
+     *
+     * <p>\[ \frac{r (1 - p)}{p} \]
      */
     @Override
     public double getMean() {
@@ -196,8 +198,10 @@ public final class PascalDistribution extends AbstractDiscreteDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For number of successes {@code r} and probability of success {@code p},
-     * the variance is {@code r * (1 - p) / p^2}.
+     * <p>For number of successes \( r \) and probability of success \( p \),
+     * the variance is:
+     *
+     * <p>\[ \frac{r (1 - p)}{p^2} \]
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TDistribution.java
index fb89cc7..c5cdaab 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TDistribution.java
@@ -280,11 +280,12 @@ public abstract class TDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For degrees of freedom parameter {@code df}, the mean is
-     * <ul>
-     *  <li>zero if {@code df > 1}, and</li>
-     *  <li>undefined ({@code NaN}) otherwise.</li>
-     * </ul>
+     * <p>For degrees of freedom parameter \( v \), the mean is:
+     *
+     * <p>\[ \operatorname{E}[X] = \begin{cases}
+     *       0                &amp; \text{for } v \gt 1 \\
+     *       \text{undefined} &amp; \text{otherwise}
+     *       \end{cases} \]
      *
      * @return the mean, or {@code NaN} if it is not defined.
      */
@@ -294,12 +295,13 @@ public abstract class TDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For degrees of freedom parameter {@code df}, the variance is
-     * <ul>
-     *  <li>{@code df / (df - 2)} if {@code df > 2},</li>
-     *  <li>positive infinity if {@code 1 < df <= 2}, and</li>
-     *  <li>undefined ({@code NaN}) otherwise.</li>
-     * </ul>
+     * <p>For degrees of freedom parameter \( v \), the variance is:
+     *
+     * <p>\[ \operatorname{var}[X] = \begin{cases}
+     *       \frac{v}{v - 2}  &amp; \text{for } v \gt 2 \\
+     *       \infty           &amp; \text{for } 1 \lt v \le 2 \\
+     *       \text{undefined} &amp; \text{otherwise}
+     *       \end{cases} \]
      *
      * @return the variance, or {@code NaN} if it is not defined.
      */
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TrapezoidalDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TrapezoidalDistribution.java
index 98dec47..405ce44 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TrapezoidalDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TrapezoidalDistribution.java
@@ -400,8 +400,8 @@ public abstract class TrapezoidalDistribution extends AbstractContinuousDistribu
     /**
      * {@inheritDoc}
      *
-     * <p>For lower limit {@code a}, start of the density constant region {@code b},
-     * end of the density constant region {@code c} and upper limit {@code d}, the
+     * <p>For lower limit \( a \), start of the density constant region \( b \),
+     * end of the density constant region \( c \) and upper limit \( d \), the
      * mean is:
      *
      * <p>\[ \frac{1}{3(d+c-b-a)}\left(\frac{d^3-c^3}{d-c}-\frac{b^3-a^3}{b-a}\right) \]
@@ -412,8 +412,8 @@ public abstract class TrapezoidalDistribution extends AbstractContinuousDistribu
     /**
      * {@inheritDoc}
      *
-     * <p>For lower limit {@code a}, start of the density constant region {@code b},
-     * end of the density constant region {@code c} and upper limit {@code d}, the
+     * <p>For lower limit \( a \), start of the density constant region \( b \),
+     * end of the density constant region \( c \) and upper limit \( d \), the
      * variance is:
      *
      * <p>\[ \frac{1}{6(d+c-b-a)}\left(\frac{d^4-c^4}{d-c}-\frac{b^4-a^4}{b-a}\right) - \mu^2 \]
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TriangularDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TriangularDistribution.java
index 4f65543..da711ea 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TriangularDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TriangularDistribution.java
@@ -23,7 +23,7 @@ package org.apache.commons.statistics.distribution;
  * <p>The probability density function of \( X \) is:
  *
  * <p>\[ f(x; a, b, c) = \begin{cases}
- *       \frac{2(x-a)}{(b-a)(c-a)} &amp; \text{for } a \le x \lt c  \\
+ *       \frac{2(x-a)}{(b-a)(c-a)} &amp; \text{for } a \le x \lt c \\
  *       \frac{2}{b-a}             &amp; \text{for } x = c \\
  *       \frac{2(b-x)}{(b-a)(b-c)} &amp; \text{for } c \lt x \le b \\
  *       \end{cases} \]
@@ -202,7 +202,7 @@ public final class TriangularDistribution extends AbstractContinuousDistribution
     /**
      * {@inheritDoc}
      *
-     * <p>For lower limit {@code a}, upper limit {@code b}, and mode {@code c},
+     * <p>For lower limit \( a \), upper limit \( b \), and mode \( c \),
      * the mean is \( (a + b + c) / 3 \).
      */
     @Override
@@ -213,7 +213,7 @@ public final class TriangularDistribution extends AbstractContinuousDistribution
     /**
      * {@inheritDoc}
      *
-     * <p>For lower limit {@code a}, upper limit {@code b}, and mode {@code c},
+     * <p>For lower limit \( a \), upper limit \( b \), and mode \( c \),
      * the variance is \( (a^2 + b^2 + c^2 - ab - ac - bc) / 18 \).
      */
     @Override
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TruncatedNormalDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TruncatedNormalDistribution.java
index a8e3bec..bf299e6 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TruncatedNormalDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/TruncatedNormalDistribution.java
@@ -282,6 +282,15 @@ public final class TruncatedNormalDistribution extends AbstractContinuousDistrib
      *
      * <p>Represents the true mean of the truncated normal distribution rather
      * than the parent normal distribution mean.
+     *
+     * <p>For \( \mu \) mean of the parent normal distribution,
+     * \( \sigma \) standard deviation of the parent normal distribution, and
+     * \( a \lt b \) the truncation interval, the mean is:
+     *
+     * <p>\[ \mu + \frac{\phi(a)-\phi(b)}{\Phi(b) - \Phi(a)}\sigma \]
+     *
+     * <p>where \( \phi \) is the probability density function of the standard normal distribution
+     * and \( \Phi \) is its cumulative distribution function.
      */
     @Override
     public double getMean() {
@@ -297,6 +306,16 @@ public final class TruncatedNormalDistribution extends AbstractContinuousDistrib
      *
      * <p>Represents the true variance of the truncated normal distribution rather
      * than the parent normal distribution variance.
+     *
+     * <p>For \( \mu \) mean of the parent normal distribution,
+     * \( \sigma \) standard deviation of the parent normal distribution, and
+     * \( a \lt b \) the truncation interval, the variance is:
+     *
+     * <p>\[ \sigma^2 \left[1 + \frac{a\phi(a)-b\phi(b)}{\Phi(b) - \Phi(a)} -
+     *       \left( \frac{\phi(a)-\phi(b)}{\Phi(b) - \Phi(a)} \right)^2 \right] \]
+     *
+     * <p>where \( \phi \) is the probability density function of the standard normal distribution
+     * and \( \Phi \) is its cumulative distribution function.
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformContinuousDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformContinuousDistribution.java
index 063f541..f3533fb 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformContinuousDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformContinuousDistribution.java
@@ -166,8 +166,7 @@ public final class UniformContinuousDistribution extends AbstractContinuousDistr
     /**
      * {@inheritDoc}
      *
-     * <p>For lower bound {@code a} and upper bound {@code b}, the mean is
-     * {@code 0.5 * (a + b)}.
+     * <p>For lower bound \( a \) and upper bound \( b \), the mean is \( \frac{a + b}{2} \).
      */
     @Override
     public double getMean() {
@@ -178,8 +177,7 @@ public final class UniformContinuousDistribution extends AbstractContinuousDistr
     /**
      * {@inheritDoc}
      *
-     * <p>For lower bound {@code a} and upper bound {@code b}, the
-     * variance is {@code (b - a)^2 / 12}.
+     * <p>For lower bound \( a \) and upper bound \( b \), the variance is \( \frac{(b - a)^2}{12} \).
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformDiscreteDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformDiscreteDistribution.java
index 25c3116..ef427bb 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformDiscreteDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/UniformDiscreteDistribution.java
@@ -217,8 +217,7 @@ public final class UniformDiscreteDistribution extends AbstractDiscreteDistribut
     /**
      * {@inheritDoc}
      *
-     * <p>For lower bound {@code lower} and upper bound {@code upper}, the mean is
-     * {@code 0.5 * (lower + upper)}.
+     * <p>For lower bound \( a \) and upper bound \( b \), the mean is \( \frac{a + b}{2} \).
      */
     @Override
     public double getMean() {
@@ -229,8 +228,11 @@ public final class UniformDiscreteDistribution extends AbstractDiscreteDistribut
     /**
      * {@inheritDoc}
      *
-     * <p>For lower bound {@code lower} and upper bound {@code upper}, and
-     * {@code n = upper - lower + 1}, the variance is {@code (n^2 - 1) / 12}.
+     * <p>For lower bound \( a \) and upper bound \( b \), the variance is:
+     *
+     * <p>\[ \frac{n^2 - 1}{12} \]
+     *
+     * <p>where \( n = b - a + 1 \).
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/WeibullDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/WeibullDistribution.java
index f7be8c0..a66f18a 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/WeibullDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/WeibullDistribution.java
@@ -234,8 +234,11 @@ public final class WeibullDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>The mean is {@code scale * Gamma(1 + (1 / shape))}, where {@code Gamma()}
-     * is the Gamma-function.
+     * <p>For shape parameter \( k \) and scale parameter \( \lambda \), the mean is:
+     *
+     * <p>\[ \lambda \, \Gamma(1+\frac{1}{k}) \]
+     *
+     * <p>where \( \Gamma \) is the Gamma-function.
      */
     @Override
     public double getMean() {
@@ -249,8 +252,12 @@ public final class WeibullDistribution extends AbstractContinuousDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>The variance is {@code scale^2 * Gamma(1 + (2 / shape)) - mean^2}
-     * where {@code Gamma()} is the Gamma-function.
+     * <p>For shape parameter \( k \) and scale parameter \( \lambda \), the variance is:
+     *
+     * <p>\[ \lambda^2 \left[ \Gamma\left(1+\frac{2}{k}\right) -
+     *                        \left(\Gamma\left(1+\frac{1}{k}\right)\right)^2 \right] \]
+     *
+     * <p>where \( \Gamma \) is the Gamma-function.
      */
     @Override
     public double getVariance() {
diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ZipfDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ZipfDistribution.java
index 82bbdde..f6111bd 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ZipfDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/ZipfDistribution.java
@@ -156,12 +156,13 @@ public final class ZipfDistribution extends AbstractDiscreteDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For number of elements {@code N} and exponent {@code s}, the mean is
-     * {@code Hs1 / Hs}, where
-     * <ul>
-     *  <li>{@code Hs1 = generalizedHarmonic(N, s - 1)},</li>
-     *  <li>{@code Hs = generalizedHarmonic(N, s)}.</li>
-     * </ul>
+     * <p>For number of elements \( N \) and exponent \( s \), the mean is:
+     *
+     * <p>\[ \frac{H_{N,s-1}}{H_{N,s}} \]
+     *
+     * <p>where \( H_{N,k} \) is the
+     * <a href="https://en.wikipedia.org/wiki/Harmonic_number#Generalized_harmonic_numbers">
+     * generalized harmonic number</a> of order \( N \) of \( k \).
      */
     @Override
     public double getMean() {
@@ -176,13 +177,13 @@ public final class ZipfDistribution extends AbstractDiscreteDistribution {
     /**
      * {@inheritDoc}
      *
-     * <p>For number of elements {@code N} and exponent {@code s}, the mean is
-     * {@code (Hs2 / Hs) - (Hs1^2 / Hs^2)}, where
-     * <ul>
-     *  <li>{@code Hs2 = generalizedHarmonic(N, s - 2)},</li>
-     *  <li>{@code Hs1 = generalizedHarmonic(N, s - 1)},</li>
-     *  <li>{@code Hs = generalizedHarmonic(N, s)}.</li>
-     * </ul>
+     * <p>For number of elements \( N \) and exponent \( s \), the variance is:
+     *
+     * <p>\[ \frac{H_{N,s-2}}{H_{N,s}} - \frac{H_{N,s-1}^2}{H_{N,s}^2} \]
+     *
+     * <p>where \( H_{N,k} \) is the
+     * <a href="https://en.wikipedia.org/wiki/Harmonic_number#Generalized_harmonic_numbers">
+     * generalized harmonic number</a> of order \( N \) of \( k \).
      */
     @Override
     public double getVariance() {


[commons-statistics] 02/04: Updated comment for density computation

Posted by ah...@apache.org.
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 281bb6e2be887d5e23108726b04c4aa9f0392c44
Author: aherbert <ah...@apache.org>
AuthorDate: Tue Nov 22 13:58:04 2022 +0000

    Updated comment for density computation
---
 .../commons/statistics/distribution/LogisticDistribution.java       | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogisticDistribution.java b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogisticDistribution.java
index 908c5e9..c03743e 100644
--- a/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogisticDistribution.java
+++ b/commons-statistics-distribution/src/main/java/org/apache/commons/statistics/distribution/LogisticDistribution.java
@@ -102,9 +102,9 @@ public final class LogisticDistribution extends AbstractContinuousDistribution {
         // This also ensures exp(z) is between 1 and 0 and avoids
         // overflow for large negative values of (x - mu).
         // Exploits the reciprocal relation: exp(-x) == 1 / exp(x)
-        //     exp(-z)                   1                     exp(z)
-        // --------------- = -------------------------- = --------------
-        // (1 + exp(-z))^2    exp(z) (1 + 1 / exp(z))^2   (1 + exp(z))^2
+        //     exp(-z)                   1                exp(z)     exp(z)
+        // --------------- = -------------------------- * ------ = --------------
+        // (1 + exp(-z))^2    exp(z) (1 + 1 / exp(z))^2   exp(z)   (1 + exp(z))^2
         final double z = -Math.abs(x - mu) / scale;
         final double v = Math.exp(z);
         return v / ((1 + v) * (1 + v)) / scale;