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)