Как отличить приоры от правдоподобия в PyMC3 - PullRequest
1 голос
/ 09 апреля 2019

В примерах 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)

1 Ответ

2 голосов
/ 10 апреля 2019

Передача аргумента observed делает его термином вероятности (в вашем примере, P[y|mu, sigma]). Другие переменные RandomVariable (alpha, beta и sigma), не имеющие аргумента observed, выбираются в качестве априорных значений.

...