如何在PyMC3中区分先验和可能性

时间:2019-04-09 04:06:06

标签: pymc3

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

在下面的示例代码中,alphabeta是先验,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)

1 个答案:

答案 0 :(得分:2)

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