2014-02-12 89 views
1

我在用commons-math來計算2尾學生分佈的倒數。我使用Excel來比較值並驗證我的結果是否正確。計算t-inverse

所以使用Excel以5個自由度和95.45%,我用

=TINV(0.0455,5) 

並得到結果,計算TINV:2.64865

使用公共數學就像這樣:

TDistribution t = new TDistribution(5); 
double value = t.inverseCumulativeProbability(0.9545); 

我得到結果:2.08913

我可能明顯做錯了什麼。我不是那種精通數學的人,但是我需要將一個Excel表單公式移植到Java中進行項目並陷入困境。

我應該用什麼來得到與TINV值完全相同的結果?我錯過了什麼。

回答

0

MS文檔[1]說,TINV返回一個雙尾值。我很肯定Commons Math正在返回一個單尾值。爲了得到共用數學與Excel同意,切斷尾部質量一半,即,呼叫

t.inverseCumulativeProbability (1 - tail_mass/2); 

[1] http://office.microsoft.com/en-us/excel-help/tinv-function-HP010335663.aspx

+0

'TDistribution噸=新TDistribution(5); double value = t.inverseCumulativeProbability((1-0.9545)/ 2);'產生正確的結果,但爲負值。我想我可以簡單地把它翻轉到正值,只要這產生一個負值。正確? – SysHex

+0

我想你想't.inverseCumulativeProbability(1 - 0.9545/2)'。 –

+0

't.inverseCumulativeProbability(1 - 0.9545/2)'返回0.059973,這與TINV – SysHex