在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)
答案 0 :(得分:2)
传递observed
参数使其成为似然项(在您的示例中为P[y|mu, sigma]
)。缺少RandomVariable
参数的其他alpha
变量(beta
,sigma
和observed
)被作为先验采样。