【问题标题】:How to get the specific probability of a particular value in a distribution?如何获得分布中特定值的特定概率?
【发布时间】:2020-02-26 13:22:01
【问题描述】:

我是 PyMC3 初学者,三周前我开始熟悉它,我目前正在做一项学习工作,所以我对我的程序有一个疑问。对不起,如果这是一个愚蠢的问题。

我有那个模型:

with pm.Model() as clientes:

  name_clients = pm.Bound(pm.Geometric, upper=100)('nombres_clientes', p=0.02685)
  age_clients = pm.TruncatedNormal('edad.clientes', mu=34, sigma=24, lower=0.0, 
                                   upper=101.0)

如您所见,两种分布都受限于范围(name_clients 介于​​ 1 和 100 之间,age_clients 介于​​ 0 和 101 之间)。

我的问题是,我怎么知道概率(在 0 和 1 之间),例如 name_clients 是 67 ?如果我有 age_clients = 21 和 name_clients = 34 的条件概率是多少?

我查看了很多主题和评论,但对此我并不清楚。如果你能帮助我,我将非常感激:)

【问题讨论】:

  • (截断的)正态分布是一个连续分布,所以从数学上讲,P{age_clients = x} = 0 对应于所有x。对于连续随机变量,您应该询问范围的概率,而不是点。
  • 你是对的!谢谢你

标签: python distribution bayesian pymc3 pymc


【解决方案1】:

您始终可以将概率估计为期望:

Pr[X ∈ A] = E[?_{A}(X)],

在哪里

?_{A}(x) = (x ∈ A) ? 1 : 0

是你想要其概率的集合的指示函数。

因此,您只需从联合分布中采样,将这个指标函数映射到链上,然后得到平均值。如果您寻求的概率是条件概率,则将条件值作为观察值插入模型中(据我所知,在 PYMC3 中,您通过 observed 关键字参数执行此操作)。

另一种方法是直接使用模型的 log-pdf,请参阅 here,但这需要处理您处理的 PPL 的内部。

【讨论】:

  • 非常感谢,你真的帮了我!你知道在这个问题上可能有什么书或文章可以帮助我吗?因为我需要更多信息。
  • 我只能建议基本 MCMC 理论的参考。我个人向​​this lecture 学习,但它相当数学。我自己不使用 PYMC3。
猜你喜欢
  • 1970-01-01
  • 2020-08-07
  • 1970-01-01
  • 1970-01-01
  • 2018-11-20
  • 2013-03-24
  • 2017-04-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多