gpt4 book ai didi

r - 计算累积二项式概率时 R 中的奇怪精度问题

转载 作者:行者123 更新时间:2023-12-01 11:49:27 26 4
gpt4 key购买 nike

我在使用这段代码时遇到了一些奇怪的问题:

positions<-c(58256)
occurrencies<-c(30)
frequency<-c(11/5531777)
length<-c(4)

prob<-c(0)
for(i in 0:(occurrencies-1))
{
pow<-frequency^i
pow1<-(1-frequency)^(positions-i)
bin<-choose(positions, i)
prob<<-prob+(bin*pow*pow1)
}

此 for 循环的每次迭代都应计算给定频率下 i 事件发生次数的二项式概率。每次迭代也总结了结果。这应该会导致 prob 变量永远不会超过 1,但是在 7 次左右的 for 循环迭代之后,一切都会变得糟糕并且 prob 超过 1。

我认为这可能是精度数字的问题,所以我尝试使用 Rmpfr但无济于事 - 同样的问题仍然存在。

我想知道是否有任何提示或软件包可以克服这种情况,或者我是否坚持这样做。

最佳答案

您可以通过执行以下操作来避免 for 循环

prob<-0
i <- 0:(occurrencies-1)
pow <- frequency^i
pow1 <- (1-frequency)^(positions-i)
bin <- choose(positions, i)
prob <- cumsum(prob+(bin*pow*pow1))
[1] 0.8906152 0.9937867 0.9997624 0.9999932 0.9999998 1.0000000 1.0000000 1.0000000 1.0000000
[10] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[19] 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000 1.0000000
[28] 1.0000000 1.0000000 1.0000000

我不知道这是否是您想要的结果,但您肯定可以避免 for 循环采用这种方式。

查看@Ben Bolker 的评论并查看pbinom 函数。

关于r - 计算累积二项式概率时 R 中的奇怪精度问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12844624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com