Skip to content

Commit

Permalink
Change distributions from o.a.c.math3 to o.a.c.statistics
Browse files Browse the repository at this point in the history
  • Loading branch information
aherbert committed Jul 20, 2023
1 parent 842afe7 commit 6ec7fb3
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 16 deletions.
4 changes: 4 additions & 0 deletions gdsc-core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,10 @@ GDSC SMLM ImageJ Plugins - Single molecule localisation microscopy (SMLM)
<groupId>org.apache.commons</groupId>
<artifactId>commons-rng-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-statistics-distribution</artifactId>
</dependency>
<!-- Prevent logging from QuickHull3D -->
<dependency>
<groupId>org.slf4j</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

package uk.ac.sussex.gdsc.core.utils;

import org.apache.commons.math3.distribution.FDistribution;
import org.apache.commons.statistics.distribution.FDistribution;

/**
* Contains utilities for working with regression data.
Expand Down Expand Up @@ -120,10 +120,9 @@ public static double residualsFTest(double residualSumSquares1, int numberOfPara
if (f == Double.POSITIVE_INFINITY) {
return 0;
}
// pass a null rng to avoid unneeded overhead as we will not sample from this distribution
final FDistribution distribution = new FDistribution(null,
numberOfParameters2 - numberOfParameters1, numberOfPoints - numberOfParameters2);
return 1.0 - distribution.cumulativeProbability(f);
final FDistribution distribution = FDistribution.of(numberOfParameters2 - numberOfParameters1,
numberOfPoints - numberOfParameters2);
return distribution.survivalProbability(f);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

package uk.ac.sussex.gdsc.core.utils;

import org.apache.commons.math3.distribution.TDistribution;
import org.apache.commons.statistics.distribution.TDistribution;

/**
* Simple class to calculate the mean and standard deviation of data.
Expand Down Expand Up @@ -472,10 +472,11 @@ public double getConfidenceInterval(double confidenceLevel) {
throw new IllegalArgumentException("Confidence level must be in the range 0-1");
}
final double se = getStandardError();
final double alpha = 1 - (1 - confidenceLevel) * 0.5; // Two-sided, e.g. 0.95 -> 0.975
final double alpha = (1 - confidenceLevel) * 0.5; // Two-sided, e.g. 0.95 -> 0.975
final int degreesOfFreedom = size - 1;
final TDistribution t = new TDistribution(degreesOfFreedom);
return t.inverseCumulativeProbability(alpha) * se;
final TDistribution t = TDistribution.of(degreesOfFreedom);
// Add to zero to workaround alpha=0 returning -0.0
return 0.0 + t.inverseSurvivalProbability(alpha) * se;
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,10 +28,10 @@

package uk.ac.sussex.gdsc.core.utils.rng;

import org.apache.commons.math3.distribution.BinomialDistribution;
import org.apache.commons.math3.exception.NotPositiveException;
import org.apache.commons.math3.exception.OutOfRangeException;
import org.apache.commons.rng.sampling.distribution.DiscreteInverseCumulativeProbabilityFunction;
import org.apache.commons.statistics.distribution.BinomialDistribution;

/**
* Provides the inverse cumulative probability of the Binomial distribution.
Expand Down Expand Up @@ -90,7 +90,7 @@ public void updateDistribution(int trials, double probabilityOfSuccess) {
}

private void update(int trials, double probabilityOfSuccess) {
bd = new BinomialDistribution(null, trials, probabilityOfSuccess);
bd = BinomialDistribution.of(trials, probabilityOfSuccess);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@

package uk.ac.sussex.gdsc.core.utils.rng;

import org.apache.commons.math3.distribution.BinomialDistribution;
import org.apache.commons.statistics.distribution.BinomialDistribution;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

Expand All @@ -38,7 +38,7 @@ class BinomialDiscreteInverseCumulativeProbabilityFunctionTest {
void testInverseCumulativeProbabiity() {
final int trials = 13;
final double probabilityOfSuccess = 0.02;
final BinomialDistribution bd = new BinomialDistribution(trials, probabilityOfSuccess);
final BinomialDistribution bd = BinomialDistribution.of(trials, probabilityOfSuccess);
final BinomialDiscreteInverseCumulativeProbabilityFunction fun =
new BinomialDiscreteInverseCumulativeProbabilityFunction(trials, probabilityOfSuccess);
for (int i = 0; i <= 10; i++) {
Expand All @@ -52,7 +52,7 @@ void testInverseCumulativeProbabiity() {
void testSetTrials() {
final int trials = 13;
final double probabilityOfSuccess = 0.02;
final BinomialDistribution bd = new BinomialDistribution(trials, probabilityOfSuccess);
final BinomialDistribution bd = BinomialDistribution.of(trials, probabilityOfSuccess);
final BinomialDiscreteInverseCumulativeProbabilityFunction fun =
new BinomialDiscreteInverseCumulativeProbabilityFunction(trials - 1, probabilityOfSuccess);

Expand All @@ -69,7 +69,7 @@ void testSetTrials() {
void testSetProbabilityOfSuccess() {
final int trials = 13;
final double probabilityOfSuccess = 0.02;
final BinomialDistribution bd = new BinomialDistribution(trials, probabilityOfSuccess);
final BinomialDistribution bd = BinomialDistribution.of(trials, probabilityOfSuccess);
final BinomialDiscreteInverseCumulativeProbabilityFunction fun =
new BinomialDiscreteInverseCumulativeProbabilityFunction(trials,
probabilityOfSuccess + 0.1);
Expand All @@ -87,7 +87,7 @@ void testSetProbabilityOfSuccess() {
void testUpdateDistribution() {
final int trials = 13;
final double probabilityOfSuccess = 0.02;
final BinomialDistribution bd = new BinomialDistribution(trials, probabilityOfSuccess);
final BinomialDistribution bd = BinomialDistribution.of(trials, probabilityOfSuccess);
final BinomialDiscreteInverseCumulativeProbabilityFunction fun =
new BinomialDiscreteInverseCumulativeProbabilityFunction(trials - 1,
probabilityOfSuccess + 0.1);
Expand Down

0 comments on commit 6ec7fb3

Please sign in to comment.