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/03/02 01:07:07 UTC

[commons-rng] 02/03: Update chi-square test

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-rng.git

commit 1d2722f0c01fb07febae5b94502a91cfa81485ad
Author: Alex Herbert <ah...@apache.org>
AuthorDate: Wed Mar 2 00:01:11 2022 +0000

    Update chi-square test
    
    Increase accuracy of the chi2 critical value.
    
    Use String.format for the assertion message, including the chi2 critical
    value.
---
 .../distribution/ContinuousSamplerParametricTest.java      | 14 +++++++-------
 1 file changed, 7 insertions(+), 7 deletions(-)

diff --git a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplerParametricTest.java b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplerParametricTest.java
index 6cae7af..baa528f 100644
--- a/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplerParametricTest.java
+++ b/commons-rng-sampling/src/test/java/org/apache/commons/rng/sampling/distribution/ContinuousSamplerParametricTest.java
@@ -60,14 +60,12 @@ class ContinuousSamplerParametricTest {
         int numFailures = 0;
 
         final double[] expected = new double[numBins];
-        for (int k = 0; k < numBins; k++) {
-            expected[k] = sampleSize / (double) numBins;
-        }
+        Arrays.fill(expected, sampleSize / (double) numBins);
 
         final long[] observed = new long[numBins];
         // Chi-square critical value with 9 degrees of freedom
         // and 1% significance level.
-        final double chi2CriticalValue = 21.67;
+        final double chi2CriticalValue = 21.665994333461924;
 
         // For storing chi2 larger than the critical value.
         final List<Double> failedStat = new ArrayList<>();
@@ -114,9 +112,11 @@ class ContinuousSamplerParametricTest {
         // 3     0.0016
 
         if (numFailures > 3) { // Test will fail with 0.16% probability
-            Assertions.fail(sampler + ": Too many failures for sample size = " + sampleSize +
-                            " (" + numFailures + " out of " + numTests + " tests failed, " +
-                            "chi2=" + Arrays.toString(failedStat.toArray(new Double[0])) + ")");
+            Assertions.fail(String.format(
+                    "%s: Too many failures for sample size = %d " +
+                    " (%d out of %d tests failed, chi2 > %.3f=%s)",
+                    sampler, sampleSize, numFailures, numTests, chi2CriticalValue,
+                    Arrays.toString(failedStat.toArray(new Double[0]))));
         }
     }
 }