【问题标题】:How to set Bernoulli distribution parameters in pymc3如何在pymc3中设置伯努利分布参数
【发布时间】:2015-09-15 04:35:51
【问题描述】:

我有一个在 pymc3 中使用以下描述的模型:

from pymc3 import * 
basic_model = Model()

with basic_model:
    # Priors for unknown model parameters
    alpha = Normal('alpha', mu=0, sd=10)
    beta = Normal('beta', mu=0, sd=10, shape=18)
    sigma = HalfNormal('sigma', sd=1)

    # Expected value of outcome
    mu = alpha + beta[0]*X1 + beta[1]*X2 + beta[2]*X3

    # Likelihood (sampling distribution) of observations
    Y_obs = Normal('Y_obs', mu=mu, sd=sigma, observed=Y)

但是,我的Ys 不是正态分布的,而是二进制的(所以,我认为是伯努利)。我无法弄清楚如何将 Y 的 Normal 分布更改为 Bernoulli,因为在这种情况下我无法弄清楚 Y_obs 的参数是什么。

【问题讨论】:

    标签: python bayesian pymc pymc3


    【解决方案1】:

    您正在寻找的是logistic regression。在这里,您使用逻辑函数将线性模型的输出转换为概率。

    在您的示例中,可以按如下方式指定:

    import pyMc3 as pm
    import theano.tensor as T
    basic_model = pm.Model()
    
    def logistic(l):
        return 1 / (1 + T.exp(-l))
    
    with basic_model:
        # Priors for unknown model parameters
        alpha = pm.Normal('alpha', mu=0, sd=10)
        beta = pm.Normal('beta', mu=0, sd=10, shape=18)
    
        # Expected value of outcome
        mu = alpha + beta[0]*X1 + beta[1]*X2 + beta[2]*X3
    
        # Likelihood (sampling distribution) of observations
        Y_obs = pm.Bernoulli('Y_obs', p=logistic(mu), observed=Y)
    

    【讨论】:

    • 谢谢。这是有道理的(尽管我确实知道逻辑回归,但我看不出如何以贝叶斯方式对其进行建模)。我现在正在尝试您的更改,并将在此处发布进展情况。
    • 嗯,它有效,但我得到所有betas 的“精确”值,标准偏差为0.00!我什至不确定要在这里问什么问题才能继续,但我确定我做错了什么:( ...(我的目标只是深入了解我的数据——纯粹是探索性的)跨度>
    • 听起来采样器很难接受新的采样点。您使用哪种采样器以及如何设置起点? Here 是一个使用 pymc3 进行逻辑回归的示例,您可以尝试一下。
    • 这是一个很好的指针。我去了那个 github 文件夹,但错过了 logistic.py 文件。这有很大帮助。我现在用基本的find_map 起点和 NUTS 采样器训练得很好。
    • 另外值得注意的是,PyMC3(和其他概率包,如 Stan 或 Pyro/Numpyro)使用 logits 提供伯努利随机变量的参数化,因此您可以跳过这里的逻辑并使用 Y_obs = pm.Bernoulli('Y_obs', logit_p=mu, observed=Y)。根据 Stan 文档,伯努利分布的这种 logit 参数化在数值上更加稳定......
    猜你喜欢
    • 1970-01-01
    • 2020-08-09
    • 2012-03-16
    • 1970-01-01
    • 1970-01-01
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 2014-02-05
    相关资源
    最近更新 更多