首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >PyMC3 -不同的观察方式传递给模型的->差异的结果?

PyMC3 -不同的观察方式传递给模型的->差异的结果?
EN

Stack Overflow用户
提问于 2017-10-26 11:20:48
回答 1查看 346关注 0票数 1

我试图理解在将数据传递到模型的方式上是否存在任何有意义的差异--要么是聚合的,要么是单一的试验(注意,对于某些分布(例如二项式)来说,这只是一个耸人听闻的问题)。

使用具有二项分布的简单模型来预测是/否路径的p。

以下模型的计算/结果有什么不同(如果有的话)?

我选择两个极端,要么一次通过一条单一的路径(还原到伯努利),要么通过整个一系列的路径之和,来举例说明我的意思,尽管我对这两个极端之间的区别感兴趣。

代码语言:javascript
运行
复制
# set up constants
p_true = 0.1
N = 3000
observed = scipy.stats.bernoulli.rvs(p_true, size=N)

模型1:将所有观测结果合并为一个数据点

代码语言:javascript
运行
复制
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:单独使用每个观察结果

代码语言:javascript
运行
复制
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将二项分布下的观测汇总在一起,所以它们没有区别。
  • 结果的后表面(在样本过程中被探索)在每种情况下都是相同的,->在这两个模型中没有意义/统计上的差异。
  • 由此产生的统计数据有差异,因为这和.
EN

回答 1

Stack Overflow用户

发布于 2018-04-15 02:02:02

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

代码语言:javascript
运行
复制
Beta(sum(observed), N - sum(observed))

不管是哪种情况。

如果使用pm.sample_ppc,建模方法上的差异就会显现出来,因为第一个将根据Binomial(N, p)发布,第二个将是Binomial(1, p)N绘图。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46952953

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档