首页 > 解决方案 > 如何区分 PyMC3 中的先验和可能性

问题描述

在 PyMC3 示例中,先验和可能性在with语句内部定义,但如果它们是先验或可能性,则没有明确定义。我如何定义它们?

在下面的示例代码中,alpha并且beta是先验和y_obs可能性(如 PyMC3 示例所述)。

我的问题是:PyMC3 内部代码如何确定分布是先验的还是可能性的?应该有一些明确的参数来告诉 PyMC3 内部的分布类型(先验/可能性)。

我知道y_obs是可能性,但我可以定义更多y_obs1 y_obs2。PyMC3 将如何识别哪一个是可能性,哪一个是先验。

from pymc3 import Model, Normal, HalfNormal

regression_model = Model()  
with regression_model:  

    alpha = Normal('alpha', mu=0, sd=10)
    beta = Normal('beta', mu=0, sd=10, shape=2)

    sigma = HalfNormal('sigma', sd=1)

    mu = alpha + beta[0] * X[:,0] + beta[1] * X[:,1]

    y_obs = Normal('y_obs', mu=mu, sd=sigma, observed=y)

标签: pymc3

解决方案


传递observed参数使其成为可能性项(在您的示例中,P[y|mu, sigma])。缺少参数的其他RandomVariable变量(alphabetasigmaobserved被采样为先验。


推荐阅读