计算Inv Chi Squared Java

时间:2017-12-02 22:26:00

标签: java math statistics apache-commons

我正在用Java编程测试模拟子喷射的pseudoRandom数,我需要计算Chi平方的倒数,所以我有alpha和as you can see here

我正在阅读的书,使用Excel函数Excel ChiSQ.INV,如下所示:

CHISQ.INV(probability,deg_freedom)

CHISQ.INV(0.025,39) = 58.12005973< - 这个值是我需要计算的

问题是我正在使用一张表来计算卡平方,但我认为有一些方法可以用计算机计算,我找到了这个类,但我仍然没有得到它的工作原理ChiSquaredDistribution Apache Commons < / p>

因此,目标是使用java或java库计算Chi Squared Inv。

ChiSquaredDistribution x2 = new ChiSquaredDistribution(1, 0.05);

System.out.println(x2.cumulativeProbability(1.96));
System.out.println(x2.getNumericalVariance());

输出:

  

0.8384866815324579

     

2.0

1 个答案:

答案 0 :(得分:1)

问题是计算具有39个自由度和95%置信水平的卡方函数,因此α为5%。 as you can see here. 这是excel函数:

CHISQ.INV(probability,deg_freedom)
CHISQ.INV(0.025,39) = 58.12005973

为了计算我在java中询问的值,是1-(alpha / 2)= 1-(0.05 / 2)= 0.975

所以在Java中使用Apache Commons Library

ChiSquaredDistribution x2 = new ChiSquaredDistribution( degreesOfFreedom );
double result = x2.inverseCumulativeProbability(alpha);

ChiSquaredDistribution x2 = new ChiSquaredDistribution(39);
System.out.println( x2.inverseCumulativeProbability(0.975) );
  

输出:

     

58.12005973444771

结果似乎与excel函数几乎相同,可能是本书错误(58.1200541)或是四舍五入。