【问题标题】:Posterior probability with pymcpymc 的后验概率
【发布时间】:2016-06-23 23:35:35
【问题描述】:

(这个问题最初发布在 stats.O 上。我把它移到这里是因为它确实与 pymc 以及其中的更一般的问题有关:事实上,主要目的是更好地了解 pymc 的工作原理. 如果任何版主认为它不适合 SO,我会从这里删除。)

我一直在阅读pymc tutorial 以及这里和 SO 中的许多其他问题。

我试图了解如何应用贝叶斯定理来使用某些数据计算后验概率。特别是,我有一个独立参数的元组

我想根据数据推断 的可能性,其中 是某个事件。然后目标是计算

一些额外的 cmets

  1. 这是一种无监督学习,我知道 发生了,我想找出使 概率最大化的参数。 (*)
  2. 我还想要一个并行程序,让pymc 计算给定数据的可能性,然后对于每个参数元组我想得到后验概率。

在下文中,我将假设 和可能性是具有 的多维正态分布(因为独立性)。

以下是我正在使用的代码(为简单起见,假设只有两个参数)。代码仍在开发中(我知道它不能工作!)。但我认为包含它是有用的,然后根据 cmets 和答案对其进行改进,以提供框架供将来参考。

class ObsData(object):
    def __init__(self, params):
        self.theta1 = params[0]
        self.theta2 = params[1]

class Model(object):
    def __init__(self, data):
        # Priors
        self.theta1 = pm.Uniform('theta1', 0, 100)
        self.theta2 = pm.Normal('theta2', 0, 0.0001)

        @pm.deterministic
        def model(
            theta1=self.theta1,
            theta2=self.theta2,
        ):
            return (theta1, theta2)
        # Is this the actual likelihood?
        self.likelihood = pm.MvNormal(
            'likelihood',
            mu=model,
            tau=np.identity(2),
            value=data,  # is it correct to put the data here?
            observed=True
        )

def mcmc(observed_data):
    data = ObsData(observed_data)
    pymc_obj = Model(data)
    model = pymc.MCMC(pymc_obj)
    model.sample(10000, verbose=0) # Does this line compute the likelihood and the normalisation factor? 
    # How do I get the posterior distribution?

问题如下:

  1. self.likelihood 是否代表贝叶斯似然?
  2. 如何使用这些数据? (我怀疑value=data 不正确..)
  3. .sample() 是否真的计算后验概率?
  4. 如何从后端获取信息?
  5. (*)我是否应该包含与 发生在某个时间点有关的任何内容?
  6. 作为一般性问题:是否可以使用 pymc 仅计算给定数据和先验的可能性?

欢迎任何cmets,也欢迎参考其他问题或教程!

【问题讨论】:

    标签: python bayesian pymc naivebayes mcmc


    【解决方案1】:

    对于初学者,我认为您想从模型的定义中返回 (theta1*theta2)。

    model.sample 是采样,而不是计算,给定数据的参数的后验分布(给定足够的老化等),并且每个参数元组的特定值的可能性可以从联合后验确定采样。

    我认为您目前对 MCMC 有一些根本性的误解。我想不出比把你指向精彩的Bayesian Methods for Hackers 更好的方式来回答你的问题了

    【讨论】:

    • 是的,我同意你的观点,我对此感到非常困惑。我读了一些你的参考资料(谢谢!)。据我了解,采样后mcmc 对象的轨迹(参数)给出了其似然分布——假设我的问题中的方程被反转,即似然为 $P(\theta | E)$。我对吗? (我会阅读更多内容以获得更多信心..)
    • 很抱歉给你大量的链接,但这是另一个很好的直觉on cross validated。 MCMC 对参数值 P(theta|E) 的后验概率进行采样,但在给定模型下数据的似然性是似然 P(E|theta)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-09
    • 1970-01-01
    • 2013-12-02
    • 1970-01-01
    • 2018-07-03
    • 2019-01-11
    • 2015-05-25
    相关资源
    最近更新 更多