PyMC3中如何区分先验和似然
How to distinguish between priors and likelihood in PyMC3
在 PyMC3 示例中,先验和似然在 with
语句中定义,但如果它们是先验或似然则未明确定义。我该如何定义它们?
在下面的示例代码中,alpha
和 beta
是先验,y_obs
是似然(如 PyMC3 示例所述)。
我的问题是:PyMC3 内部代码如何确定分布是先验分布还是似然分布?应该有一些明确的参数来告诉 PyMC3 内部有关分布类型的信息 (prior/likelihood)。
我知道 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]
)。缺少 observed
参数的其他 RandomVariable
变量(alpha
、beta
和 sigma
)被采样为先验。
在 PyMC3 示例中,先验和似然在 with
语句中定义,但如果它们是先验或似然则未明确定义。我该如何定义它们?
在下面的示例代码中,alpha
和 beta
是先验,y_obs
是似然(如 PyMC3 示例所述)。
我的问题是:PyMC3 内部代码如何确定分布是先验分布还是似然分布?应该有一些明确的参数来告诉 PyMC3 内部有关分布类型的信息 (prior/likelihood)。
我知道 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]
)。缺少 observed
参数的其他 RandomVariable
变量(alpha
、beta
和 sigma
)被采样为先验。