使用Apache Commons库计算TDIST

时间:2015-07-26 08:34:37

标签: java excel apache-commons-math

我正在尝试使用commons-math计算2尾学生分布。我正在使用Excel来比较值并验证我的结果是否正确。

所以用excel计算TDIST(x,df,t),x = 5.968191467,df = 8,尾t = 2

=TDIST(ABS(5.968191467),8,2)

得到结果:0.000335084

使用公共数学如下:

TDistribution tDistribution = new TDistribution(8);
System.out.println(BigDecimal.valueOf(tDistribution.density(5.968191467)));

我得到结果:0.00018738010608336254

我应该使用什么来获得与TDIST值完全相同的结果?

2 个答案:

答案 0 :(得分:1)

要在Excel中复制公式,可以使用CDF:

2*(1.0 - tDistribution.cumulativeProbability(5.968191467))

答案 1 :(得分:0)

一般x的正确公式是:

2*(1.0 - tDistribution.cumulativeProbability(Math.abs(x)))

(感谢ryuichiro)。不要忘记添加绝对值,因为Excel中2个自由度的TDIST是一个对称公式,即

TDIST(-x,df,2) = TDIST(x,df,2)

而ryuchiro的那个不适用于负面的x。另请查看docsthis