在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)
通过observed
论证使它成为一个可能性项(在你的例子中,P[y|mu, sigma]
)。缺少RandomVariable
论证的其他alpha
变量(beta
,sigma
和observed
)被抽样为先验。