ste*_*fen 5 java distribution apache-commons-math
我正在寻找一个java库/实现,它支持以合理的精度计算β分布的逆累积分布函数(也就是分位数的估计).
当然我已经尝试过apache commons math,但是在版本3中,似乎仍然存在一些精度问题.下面引出这个问题的问题被广泛描述.
假设我想通过大量试验来计算β分布的可信区间.在apache commons math ...
final int trials = 161750;
final int successes = 10007;
final double alpha = 0.05d;
// the supplied precision is the default precision according to the source code
BetaDistribution betaDist = new BetaDistribution(successes + 1, trials - successes + 1, 1e-9);
System.out.println("2.5 percentile :" + betaDist.inverseCumulativeProbability(alpha / 2d));
System.out.println("mean: " + betaDist.getNumericalMean());
System.out.println("median: " + betaDist.inverseCumulativeProbability(0.5));
System.out.println("97.5 percentile :" + betaDist.inverseCumulativeProbability(1 - alpha / 2d));
Run Code Online (Sandbox Code Playgroud)
提供
2.5 percentile :0.062030402074808505
mean: 0.06187249616697166
median: 0.062030258659508855
97.5 percentile :0.06305170793994147
Run Code Online (Sandbox Code Playgroud)
问题是2.5百分位数和中位数是相同的,同时两者都大于平均值.
相比之下,R- package binom可以提供
binom.confint(10007+1,161750+2,methods=c("agresti-coull","exact","wilson"))
method x n mean lower upper
1 agresti-coull 10008 161752 0.0618725 0.06070873 0.06305707
2 exact 10008 161752 0.0618725 0.06070317 0.06305756
3 wilson 10008 161752 0.0618725 0.06070877 0.06305703
Run Code Online (Sandbox Code Playgroud)
和R -package 统计数据
qbeta(c(0.025,0.975),10007+1,161750-10007+1)
[1] 0.06070355 0.06305171
Run Code Online (Sandbox Code Playgroud)
为了得到R的结果,这是Wolfram Alpha告诉我的
关于要求的最后说明:
更新21.08.12
似乎这个问题已经修复或至少在apache-commons-math的3.1-SNAPSHOT中有所改进.对于上面的用例
2.5 percentile :0.06070354581340706
mean: 0.06187249616697166
median: 0.06187069085946604
97.5 percentile :0.06305170793994147
Run Code Online (Sandbox Code Playgroud)
更新23.02.13
虽然乍一看这个问题和它的回答可能过于局部化,但我认为它很好地说明了一些数值问题无法通过首先出现在头脑中的方法来解决(有效).所以我希望它仍然开放.
该问题已在apache commons math 3.1.1中修复
上面交付的测试用例
2.5 percentile :0.06070354581334864
mean: 0.06187249616697166
median: 0.06187069085930821
97.5 percentile :0.0630517079399996
Run Code Online (Sandbox Code Playgroud)
它与 r-package stats 的结果相匹配。3.1-SNAPSHOT+x版本的广泛应用也没有造成任何问题。
| 归档时间: |
|
| 查看次数: |
5368 次 |
| 最近记录: |