首页 > 解决方案 > 如何在pyMC3中实现多个随机变量的可能性加权乘积?

问题描述

我需要从几个随机变量中构建一个超似然函数。每个变量的分布是标准的。

以两个随机变量为例,目标超似然是这样的:S = F1^w1 * F2^w2 (st w1 + w2 = 1) 或者等效地,logS = w1 logF1 + w2 log F1 (st w1 + w2 = 1)。

其中 F1 ~ 正态分布和 F2 ~ 伯努利分布

我使用以下代码

data = <load my data> 

[w1,w2] = [0.5,0.5]

with Model() as model:
    mu = pm.Uniform('mu',lower=0,upper=1)
    sd = pm.Uniform('sd',lower=0,upper=1)
    p = pm.Uniform('p',lower=0,upper=1)

    F1 = pm.Normal("F1", mu = mu, sigma = sd)
    F1 = pm.Bernoulli("F2",p)

    S = pm.Deterministic('S',F1**w1*F2**w2, observed=data)

    step = Metropolis()
    trace = pm.sample(2000, step=step)

但它不起作用。

请帮助在 pyMC3 中实现这样的加权似然模型。

标签: bayesianpymc3

解决方案



推荐阅读