java实现累积密度函数_如何计算java中的逆累积beta分布函数

博客探讨了在Java中使用Apache Commons Math库计算Beta分布的逆累积分布函数(ICDF)的问题,发现2.5百分位数和中位数的计算结果与R语言包binom和Wolfram Alpha的结果存在差异。作者更新提到该问题在新版本的库中已得到改善,并强调数值计算的挑战性。
摘要由CSDN通过智能技术生成

我正在寻找一个

java库/实现,它支持以合理的精度计算β分布的逆累积分布函数(也就是分位数的估计).

假设我想通过大量试验来计算β分布的可信区间.在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));

提供

2.5 percentile :0.062030402074808505

mean: 0.06187249616697166

median: 0.062030258659508855

97.5 percentile :0.06305170793994147

问题是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

和R-package统计数据

qbeta(c(0.025,0.975),10007+1,161750-10007+1)

[1] 0.06070355 0.06305171

为了得到R的结果,这是Wolfram Alpha告诉我的

关于要求的最后说明:

>我需要运行很多这些计算.因此任何解决方案都不应该花费超过1秒的时间(与41ms(虽然错误的)apache commons math相比仍然很多).

>我知道可以在java中使用R.由于我在此不再详述的原因,如果其他任何事情(纯java)失败,这是最后一个选项.

更新21.08.12

It seems该问题已经修复或至少在apache-commons-math的3.1-SNAPSHOT中有所改进.对于上面的用例

2.5 percentile :0.06070354581340706

mean: 0.06187249616697166

median: 0.06187069085946604

97.5 percentile :0.06305170793994147

更新23.02.13

虽然乍一看这个问题和它的回答可能过于局部化,但我认为它很好地说明了一些数值问题无法通过首先出现在头脑中的方法来解决(有效).所以我希望它仍然开放.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>