PyMC观测到的数据是一组随机变量之和

7
我正在尝试使用PyMC推断模型参数。具体而言,观察数据被建模为两个不同随机变量的总和:负二项式和泊松分布。
在PyMC中,随机变量的代数组合由“确定性”对象描述。是否可能将观测数据分配给此确定性对象?
如果不可能,我们仍然知道总和的概率密度函数是组成部分的概率密度函数的卷积。有没有什么技巧可以有效地计算这个卷积?
1个回答

6
在PyMC2中无法使一个“确定性”的节点被观测到,但是您可以通过将卷积的一部分作为潜在变量来实现等效模型。以下是一个小例子:
def model(values):
    # priors for model parameters
    mu_A = pm.Exponential('mu_A', beta=1, value=1)
    alpha_A = pm.Exponential('alpha_A', beta=1, value=1)
    mu_B_minus_A = pm.Uninformative('mu_B_minus_A', value=1)

    # latent variable for negative binomial
    A = pm.NegativeBinomial('A', mu=mu_A, alpha=alpha_A, value=0)

    # observed variable for conditional poisson
    B = pm.Poisson('B', mu=mu_B_minus_A+A, value=values, observed=True)

    return locals()

这里有一个笔记本测试了它。似乎在没有一些关于模型参数的额外信息的情况下,很难适应。也许有一种聪明的方法可以计算或近似负二项式和泊松分布的卷积,你可以将其用作自定义观测随机变量。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接