PyMC3难以运行贝叶斯伽马回归

时间:2019-02-10 08:35:32

标签: python bayesian pymc3 gamma-distribution

PyMC3具有出色的处理贝叶斯回归的功能,因此我一直在尝试利用PyMC3在可能为Gamma的PyMC3上运行贝叶斯伽马回归。

据我了解,在PyMC3中运行任何形式的贝叶斯回归都需要pymc3.glm.GLM()函数,该函数采用Patsy形式的模型公式(例如y〜x_1 + x_2 + ... + x_m),数据框和分布。

但是, 问题是pymc3.glm.GLM()函数需要一个pymc3..families对象 https://github.com/pymc-devs/pymc3/blob/master/pymc3/glm/families.py)才能进行分发。但是 Gamma发行版并未显示为软件包中内置的家族之一 ,因此我被困住了。还是Gamma函数族隐藏在某个地方?希望对您有所帮助!


对于上下文: 我有一个功能为[x_1, x_2, ..., x_m](称为X)和目标变量(称为y)的数据框。这是我到目前为止准备的代码,但仅需弄清楚如何获得Gamma分布即可。

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)

0 个答案:

没有答案