微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用相同的概率数组采样 scipy 分布

如何解决使用相同的概率数组采样 scipy 分布

我想使用一组用户生成的概率从不同的 Beta 分布生成变量。我知道 scipy.stats.beta.rvs(a,b) 使用内部生成的概率生成随机变量,但我想改用我自己的概率。我怀疑这一定是微不足道的,但我自己无法解决。提前致谢。

解决方法

经过一番摸索,我认为解决方案是使用 scipy.special.betainc(a,b,x)。这似乎与以下脚本显示的 CDF 相同:

import scipy.stats
import scipy.special
import matplotlib.pyplot as plt
import numpy as np

a = 3.0
b = 5.0

ntrial = 100000

p = np.linspace(0.0,1.0,1000)
r = np.random.rand(ntrial)
v = scipy.special.betainc(a,r)

# Plot the CDFs

plt.plot(np.arange(ntrial) / float(ntrial),np.sort(v),'.',label='scipy.special')
plt.plot(p,scipy.stats.beta.cdf(p,a,b),label='scipy.stats')
plt.ylabel("cumul. prob.")
plt.legend()

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。