Смоделируйте распределение, которое представляет собой комбинацию двух других

Я не могу найти пример по этому поводу или не вижу сходства с моей проблемой:

Я попытался смоделировать мультимодальное распределение, которое выглядит так, как будто оно определяется суммой двух распределений хи-квадрат (хотя можно взять любую комбинацию распределений...).

Теперь я не знаю, как "поженить" эти дистрибутивы. Я ищу что-то вроде этого, но это не работает следующим образом:

из pymc3 import Model, HalfNormal, find_MAP, sample, traceplot, ChiSquared, детерминированный basic_model = Model()

with basic_model:
    nu1 = HalfNormal("nu1", sd = 1)
    nu2 = HalfNormal("nu2", sd = 1)
    cs1 = ChiSquared("cs1", nu = nu1)
    cs2 = ChiSquared("cs2", nu = nu2)
    # this is wrong, but it shows what I would like to achieve:
    Y_obs = Deterministic("Y_obs", cs1, cs2, observed = tx)
    start = find_MAP(model = basic_model)
    trace = sample(2000, start = start)

traceplot(trace)

Как бы я это сделал? Результирующая функция должна моделировать что-то вроде этого:

введите здесь описание изображения


person Xiphias    schedule 23.05.2016    source источник


Ответы (1)


Проверьте следующую модель, эта модель предполагает, что ваши данные представляют собой смесь двух распределений хи-квадрат. Имя этого типа модели — смешанная модель. Здесь категориальное распределение используется для назначения каждой точки данных одному из двух распределений хи-квадрат. Возможно, вам придется адаптировать его к вашей проблеме, но я думаю, что это хорошее начало.

with pm.Model() as model:
    nus = pm.HalfCauchy('nus', beta=10, shape=2)

    category = pm.Categorical('category', p=[0.5, 0.5], shape=len(x))

    obs = pm.ChiSquared('obs', nu=nus[category], observed=x)

    step = pm.ElemwiseCategorical(vars=[category], values=[0, 1])
    trace = pm.sample(1000, step)
person aloctavodia    schedule 23.05.2016
comment
Спасибо! Я пробую это прямо сейчас. ElemwiseCategorical отсутствует в документации? Я нигде не могу найти такой. - person Xiphias; 24.05.2016
comment
А, здесь это в коде . Но документов нет, верно? - person Xiphias; 24.05.2016
comment
Недавно были внесены некоторые изменения в документацию и, я думаю, также в функцию ElewiseCategorical. - person aloctavodia; 24.05.2016