使用Apache Commons库计算TDIST

我正在试图用commons-math来计算一个2尾的学生分布。 我正在使用Excel来比较值,并validation我的结果是否正确。

所以使用excel来计算TDIST(x,df,t),其中x = 5.968191467,df = 8,tail t = 2

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

并得到结果:0.000335084

使用普通的math就像这样:

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

我得到结果:0.00018738010608336254

我应该用什么来得到像TDIST值一样的结果?

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

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

一般x的正确公式是:

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

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

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

而ryuchiro之一不会为负x而工作。 请检查文档或此 。