MCMC 收敛到单一值?

机器算法验证 马尔可夫链蒙特卡罗 多层次分析 锯齿
2022-03-25 11:10:10

我正在尝试使用 jags 和 rjags 包来拟合分层模型。我的结果变量是 y,它是一系列伯努利试验。我有 38 个人类受试者,它们在两个类别下表演:P 和 M。根据我的分析,每个演讲者都有可能在类别 P 中成功θp和类别 M 的成功概率θp×θm. 我还假设 P 和 M 有一些社区级别的超参数:μpμm.

因此,对于每个演讲者: θpbeta(μp×κp,(1μp)×κp)θmbeta(μm×κm,(1μm)×κm)在哪里κpκm控制分布的峰值程度μpμm.

μpbeta(Ap,Bp),μmbeta(Am,Bm).

这是我的锯齿模型:

model{
## y = N bernoulli trials
## Each speaker has a theta value for each category
for(i in 1:length(y)){
    y[i] ~ dbern( theta[ speaker[i],category[i]])
}

## Category P has theta Ptheta
## Category M has theta Ptheta * Mtheta
## No observed data for pure Mtheta
##
## Kp and Km represent how similar speakers are to each other 
## for Ptheta and Mtheta
for(j in 1:max(speaker)){
    theta[j,1] ~ dbeta(Pmu*Kp, (1-Pmu)*Kp)
    catM[j] ~ dbeta(Mmu*Km, (1-Mmu)*Km)
    theta[j,2] <- theta[j,1] * catM[j]
}

## Priors for Pmu and Mmu
Pmu ~ dbeta(Ap,Bp)
Mmu ~ dbeta(Am,Bm)

## Priors for Kp and Km
Kp ~ dgamma(1,1/50)
Km ~ dgamma(1,1/50)

## Hyperpriors for Pmu and Mmu
Ap ~ dgamma(1,1/50)
Bp ~ dgamma(1,1/50)
Am ~ dgamma(1,1/50)
Bm ~ dgamma(1,1/50)
}

我遇到的问题是,当我以 5000 次迭代运行此模型以进行适应时,然后取 1000 个样本,MmuKm收敛到单个值。我一直在用 4 个链运行它,每个链没有相同的值,但在每个链中只有一个值。

我对使用 MCMC 方法拟合分层模型非常陌生,所以我想知道这有多糟糕。我是否应该将此视为该模型无法适应的迹象,表明我的先验有问题,或者这是课程的标准?

编辑:如果重要的话,价值μm它收敛到(跨链平均)为 0.91 和κm为 1.78

2个回答

这更像是一个评论,但由于我没有足够的声誉,我不妨回答一下。

根据我对 MCMC 采样器的有限经验,我观察到的是,当超参数太窄时,参数往往会保持固定。由于它们控制参数的传播,因此它们会阻止对解空间进行有效采样。

尝试为超参数取更大的值,看看会发生什么。

这篇技术论文对我了解 MCMC 采样器有很大帮助。它由 Gibbs(您正在使用的那个)和 Hybrid Monte Carlo 两个采样器组成,并快速解释了如何选择先验、超先验以及参数和超参数的值。

这可能是链结构的问题。你在哪里结束取决于你从哪里开始。要使用 MCMC,您希望链是循环的,这意味着无论您从哪里开始,您都可以到达状态空间中的每个其他状态。如果链不是循环的,您可能会被困在状态空间的一个子集中。MCMC 的想法是拥有一个现有的平稳分布,链最终将进入该分布。这种平稳分布通常具有处于链中任何状态的正概率,并且不会像您描述的那样最终被困在一个点. 我无法检查您的算法,但也许您有错误。您也可能定义了一个马尔可夫链不重复的问题。

如果您想了解 MCMC,我建议您查看马尔可夫链蒙特卡罗手册,其中包含描述 MCMC 各个方面的文章。它于 2011 年由 CRC 出版社出版。