gpt4 book ai didi

python - 如何使用 Pymc3 模拟有偏向的 6 面骰子?

转载 作者:行者123 更新时间:2023-11-28 21:03:28 28 4
gpt4 key购买 nike

如何使用 Pymc3 模拟 6 面骰子掷骰?另外,我知道骰子的不同面有不同的分布吗?

最佳答案

PyMC3 中模拟 1000 卷公平的 6 面骰子的最简单方法是

import pymc3 as pm

with pm.Model():
rolls = pm.DiscreteUniform('rolls', lower=1, upper=6)
trace = pm.sample(1000)
trace['rolls'] # shows you the result of 1000 rolls

请注意,这比调用 np.random.randint(1, 7, size=1000) 更慢,但等效于此。

对于 1000 次不公平的骰子

probs = np.array([0.1, 0.2, 0.3, 0.2, 0.1, 0.1])

with pm.Model():
rolls = pm.Multinomial('rolls', n=1000, p=probs, shape=6)
trace = pm.sample(1)

这又是等效的,但比 np.random.multinomial(1000, pval=probs) 慢。

想要使用 PyMC3 的情况是,如果您观察到 50 次不公平的骰子,有一些先验 期望这是一个公平的骰子,并希望评估该期望的后验。这是一个例子:

observations = np.array([20, 6, 6, 6, 6, 6]) # sums up to 50
with pm.Model():
probs = pm.Dirichlet('probs', a=np.ones(6)) # flat prior
rolls = pm.Multinomial('rolls', n=np.sum(observations), p=probs, observed=observations)
trace = pm.sample(1000)
trace['probs'] # posterior samples of how fair the die are

您可以使用内置的 traceplot 来查看样本的外观:

posterior plot

请注意,我们正确计算出一侧比其他侧出现的频率更高!

关于python - 如何使用 Pymc3 模拟有偏向的 6 面骰子?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46454814/

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