我试图理解在将数据传递到模型的方式上是否存在任何有意义的差异--要么是聚合的,要么是单一的试验(注意,对于某些分布(例如二项式)来说,这只是一个耸人听闻的问题)。
使用具有二项分布的简单模型来预测是/否路径的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源代码,试图了解观察是如何处理的,但是找不到正确的部分。
可能的预期答案:
发布于 2018-04-15 02:02:02
这是一个有趣的例子!您的第二个建议是正确的:您可以实际计算出后验分析,并且它将根据
Beta(sum(observed), N - sum(observed))不管是哪种情况。
如果使用pm.sample_ppc,建模方法上的差异就会显现出来,因为第一个将根据Binomial(N, p)发布,第二个将是Binomial(1, p)的N绘图。
https://stackoverflow.com/questions/46952953
复制相似问题