2017-12-02 272 views
0

那么我正在为java编写一个测试模拟subjet的pseudoRandom数字,我需要计算Chi平方的倒数,所以我有alpha和度数as you can see here计算Inv Chi Squared Java

的书我读,利用Excel函数Excel ChiSQ.INV这样的:

CHISQ.INV(probability,deg_freedom)

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

事情是我使用的是表计算卡方的平方,但我认为有一些方法来与计算机计算,我发现这个类,但我仍然不知道它是如何工作的ChiSquaredDistribution Apache Commons

因此,目标是用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

+0

从未使用过这个类,但是如果你需要逆志分布,有法['ChiSquaredDistribution#inverseCumulativeProbability'(https://commons.apache.org/proper/commons-math/javadocs/api-2.2/ org/apache/commons/math/distribution/ContinuousDistribution.html#inverseCumulativeProbability(double))继承自interface ['ContinuousDistribution'](https://commons.apache.org/proper/commons-math/javadocs/api-2.2/ org/apache/commons/math/distribution/ContinuousDistribution.html) – Bedla

+0

感谢您的回答,但是您能否显示和使用Class的代码示例。 – Palomino9r

+0

与使用'x2.cumulativeProbability(1.96)'相同​​的方式,您可以使用'x2.inverseCumulativeProbability(1.96)'。我只是写了评论,因为我不确定,这个解决方案是正确的。 – Bedla

回答

1

的问题是计算卡方功能39个自由度,并用95%的置信水平,所以alpha是5%。 as you can see here. 这是Excel函数:

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

为了计算我问在Java中值,是1-(阿尔法/ 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)或四舍五入。