小编Dan*_*nny的帖子

PyMC:利用自适应大都市MCMC中的稀疏模型结构

我有一个模型,如下图所示:

模型图

我有几个人口(在这张照片中索引1 ... 5).人口参数(AB,但可以有更多)确定每个人的潜在变量的分布L[i].潜在变量以概率方式L[i]确定观察X[i].在大多数节点没有直接连接它们的边缘的意义上,该模型是"稀疏的".

我试图使用PyMC来推断人口参数,以及每个人的潜在变量.(一个相关的问题,其中详细描述了我的具体情况,是在这里.)我的问题是:我应该使用自适应大都市,而不是另一种方法,如果是这样,有没有"猫腻",以正确分组随机变量?

如果我理解正确的自适应都市报采样(和我可能不会...),该算法提出了一种未知的新值(A,B以及所有L[i]通过考虑这些变量是如何在目前为止在运行构造的后验分布相关) .如果AB是负相关的,那么增加的提案A将倾向于减少B,反之亦然,以增加提案被接受的机会.

问题是,在这个模型中,每个L[i]都是由A和确定的基础人口分布的独立抽取B.因此,虽然他们将被视为在后方相关联,但这些相关性实际上是由于A并且是B单独的,因此它们以某种方式"混淆".所以当我调用这个函数时

M.use_step_method(pymc.AdaptiveMetropolis, stochastics)
Run Code Online (Sandbox Code Playgroud)

是否所有人都应该L[i]在随机指标列表中?或者我应该多次调用use_step_method,每次stochastics=[A, B, L[i]]只调用一个L[i]?我的想法是,对于不同的随机指标组多次调用该函数将构成问题并使PyMC更容易通过告诉它只关注重要的相关性.它是否正确?

python algorithm bayesian mcmc pymc

29
推荐指数
1
解决办法
650
查看次数

PyMC:估计总体参数,其中每个观测值是两个Weibull分布变量的总和

我有一个n个观察列表,每个观察值是两个Weibull分布式变量的总和:

x[i] = t1[i] + t2[i]
t1[i] ~ Weibull(shape1, scale1)
t2[i] ~ Weibull(shape2, scale2)
Run Code Online (Sandbox Code Playgroud)

我的目标是:

1)估计威布尔分布(shape1,scale1,shape2,scale2)的形状和比例参数,

2)对于每个观测值x [i],估计t1 [i](并且t2 [i]由此得出).

(旁白:每次观察x [i]是癌症诊断的年龄,t1 [i]和t2 [i]是肿瘤发展的两个不同时期.实际模型也涉及突变数据,但在此之前尝试一下,我想确保我可以使用PyMC来解决这个更简单的问题.)

我正在使用PyMC2进行这些估算,看起来运行会收敛,但结果不正确.我不知道我的PyMC模型语法,MCMC设置或两者都有问题.我试着适应这个建议使用电位潜变量模型.首先,我为每个观察定义x [i]和t1 [i]:

for i in xrange(n):
    x[i] = pm.Index('x_%i'%i, x=data, index=i) # data is a list of observations
    t1[i] = pm.Weibull('t1_%i'%i, alpha=shape1, beta=scale1)
    # Ensure that initial guess for t1 is not more than the observed sum:
    if t1[i].value >= x[i].value:
        t1[i].value = 0.95 * x[i].value
Run Code Online (Sandbox Code Playgroud)

然后我为t2 [i] = x [i] …

python mcmc pymc probabilistic-programming

5
推荐指数
0
解决办法
252
查看次数