Сложность запуска байесовской гамма-регрессии с PyMC3 - PullRequest
0 голосов
/ 10 февраля 2019

PyMC3 обладает отличной функциональностью для работы с байесовскими регрессиями, поэтому я пытался использовать это для запуска байесовской гамма-регрессии с использованием PyMC3, где вероятность была бы Гамма.

Насколько я понимаю, запуск любогоДля байесовской регрессии в PyMC3 требуется функция pymc3.glm.GLM(), которая принимает формульную формулу в форме Пэтси (например, y ~ x_1 + x_2 + ... + x_m), фрейм данных и распределение.

Однако проблема заключается в том, что для функции pymc3.glm.GLM() требуется pymc3..families объект (https://github.com/pymc-devs/pymc3/blob/master/pymc3/glm/families.py) для распределения. Но гамма-распределениене отображается как одно из семейств , встроенных в пакет, поэтому я застрял. Или семейство гамма-функций где-то спрятано? Буду признателен за любую помощь в этом вопросе!


Для контекста: У меня есть фрейм данных функций [x_1, x_2, ..., x_m] (назовите его X) и целевую переменную (назовите ее y). Это код, который я подготовил до сих пор, нопросто нужно выяснить, хоw, чтобы получить гамма-распределение как моя вероятность.

import pymc3 as pm

# Combine X and y into a single dataframe
patsy_DF = X
patsy_DF['y'] = y

# Get Patsy Formula 
all_columns = "+".join(X.columns)
patsy_formula = "y~" + all_columns

# Instantiate model
model = pm.Model()

# Construct Model
with model:
    # Fit Bayesian Gamma Regression
    pm.glm.GLM(patsy_formula, df_dummied, family=pm.families.Gamma())
        # !!! ... but pm.families.Gamma() doesn't exist ... !!!

    # Get MAP Estimate and Trace
    map_estimate = pm.find_MAP(model=model)
    trace = pm.sample(draws=2000, chains=3, start = map_estimate)

# Get regression results summary (coefficient estimates, 
pm.summary(trace).round(3)
...