【发布时间】:2023-12-29 02:03:01
【问题描述】:
对于随机模拟,我需要绘制大量的随机数,它们是 beta 二项式分布的。
目前我以这种方式实现它(使用python):
import scipy as scp
from scipy.stats import rv_discrete
class beta_binomial(rv_discrete):
"""
creating betabinomial distribution by defining its pmf
"""
def _pmf(self, k, a, b, n):
return scp.special.binom(n,k)*scp.special.beta(k+a,n-k+b)/scp.special.beta(a,b)
所以可以通过以下方式对随机数 x 进行采样:
betabinomial = beta_binomial(name="betabinomial")
x = betabinomial.rvs(0.5,0.5,3) # with some parameter
问题是,对一个随机数进行采样需要 ca. 0.5ms,在我的例子中,这主导了整个模拟速度。限制因素是对 beta 函数(或其中的 gamma 函数)的评估。
有没有人知道如何加快采样速度?
【问题讨论】:
标签: python random distribution stochastic beta-distribution