gpt4 book ai didi

python - PyMC3 - 观察结果传递给模型的方式存在差异 -> 结果存在差异?

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:55 24 4
gpt4 key购买 nike

我试图了解将数据传递到模型的方式是否存在任何有意义的差异 - 无论是聚合还是作为单个试验(请注意,这仅对于某些分布(例如二项式)来说才是一个有意义的问题)。

使用具有二项式分布的简单模型来预测是/否轨迹的p

以下模型的计算/结果有何差异(如果有)?

我选择两个极端,要么一次通过一条路径(简化为伯努利),要么通过整个系列路径的总和,以举例说明我的意思,尽管我也对这些极端之间的差异感兴趣.

# set up constants
p_true = 0.1
N = 3000
observed = scipy.stats.bernoulli.rvs(p_true, size=N)

模型 1:将所有观察结果组合成一个数据点

with pm.Model() as binomial_model1:
p = pm.Uniform('p', lower=0, upper=1)
observations = pm.Binomial('observations', N, p, observed=np.sum(observed))
trace1 = pm.sample(40000)

模型 2:单独使用每个观察结果

with pm.Model() as binomial_model2:
p = pm.Uniform('p', lower=0, upper=1)
observations = pm.Binomial('observations', 1, p, observed=observed)
trace2 = pm.sample(40000)

在这种情况下,轨迹或后验没有任何明显的差异。我试图深入研究 pymc3 源代码,试图了解如何处理观察结果,但找不到正确的部分。

可能的预期答案:

  • pymc3 无论如何都会聚合二项式的观察结果,因此它们没有区别
  • 每种情况下所得的后表面(在样本过程中进行探索)都是相同的 -> 两个模型没有有意义/统计差异
  • 由于这样那样的原因,结果统计数据存在差异......

最佳答案

这是一个有趣的例子!你的第二个建议是正确的:你实际上可以通过分析计算出后验,它将根据

进行分布
Beta(sum(observed), N - sum(observed))

无论哪种情况。

如果您使用pm.sample_ppc,建模方法的差异就会显现出来,因为第一个将根据二项式(N, p)进行分布> 第二次是 N 次抽取 Binomial(1, p)

关于python - PyMC3 - 观察结果传递给模型的方式存在差异 -> 结果存在差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46952953/

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