使用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而工作。 请检查文档或此 。