Как реализовать взвешенный продукт вероятностей для нескольких случайных величин в pyMC3? - PullRequest
0 голосов
/ 24 июня 2019

Мне нужно построить функцию супер-правдоподобия из нескольких случайных величин. Распределение каждой переменной является стандартным.

Используя в качестве примера две случайные переменные, целевое супер-правдоподобие выглядит следующим образом: S = F1 ^ w1 * F2 ^ w2 (s.t w1 + w2 = 1) или эквивалентно, logS = w1 logF1 + w2 log F1 (s.t. w1 + w2 = 1).

Где F1 ~ Нормальное распределение и F2 ~ Распределение Бернулли

Я использую следующие коды

data = <load my data> 

[w1,w2] = [0.5,0.5]

with Model() as model:
    mu = pm.Uniform('mu',lower=0,upper=1)
    sd = pm.Uniform('sd',lower=0,upper=1)
    p = pm.Uniform('p',lower=0,upper=1)

    F1 = pm.Normal("F1", mu = mu, sigma = sd)
    F1 = pm.Bernoulli("F2",p)

    S = pm.Deterministic('S',F1**w1*F2**w2, observed=data)

    step = Metropolis()
    trace = pm.sample(2000, step=step)

Но это не работает.

Помогите, пожалуйста, реализовать такую ​​модель взвешенного правдоподобия в pyMC3.

1 Ответ

0 голосов
/ 27 июня 2019
...