You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@commons.apache.org by "Andreas Stefik (Jira)" <ji...@apache.org> on 2020/10/23 15:00:05 UTC

[jira] [Created] (STATISTICS-25) T Distribution Inverse Cumulative Probability Function gives the Wrong Answer

Andreas Stefik created STATISTICS-25:
----------------------------------------

             Summary: T Distribution Inverse Cumulative Probability Function gives the Wrong Answer
                 Key: STATISTICS-25
                 URL: https://issues.apache.org/jira/browse/STATISTICS-25
             Project: Apache Commons Statistics
          Issue Type: Bug
            Reporter: Andreas Stefik


Hi There,

Given code like this:

 


import org.apache.commons.math3.analysis.UnivariateFunction;
import org.apache.commons.math3.analysis.solvers.BrentSolver;
import org.apache.commons.math3.distribution.TDistribution;
public class Main {
 public static void main(String[] args) {
 double df = 1E38;
 double t = 0.975;
 TDistribution dist = new TDistribution(df);
 
 double prob = dist.inverseCumulativeProbability(1.0 - t);
 
 System.out.println("Prob: " + prob);
 }
}

 

It is possible I am misunderstanding, but that seems equivalent to:

 

scipy.stats.t.cdf(1.0 - 0.975, 1e38)

 

In Python. They give different answers. Python gives 0.509972518193, which seems correct, whereas Apache Commons gives  Prob: -6.462184036284304E-10. That's a huge difference.

My hunch is that as you get closer to infinity it begins to fail, but I haven't checked carefully. For calls with much smaller degrees of freedom, you get answers that are basically the same as Python or online calculators.

 



--
This message was sent by Atlassian Jira
(v8.3.4#803005)