В примерах 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
, выбираются как априорные.