2017-12-02 271 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)或四捨五入。