- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Kruschke 描述的分层建模框架在 JAGS 中建立两个模型之间的比较。该框架的想法是通过将每个版本指定为分类变量的一个级别来运行和比较模型的多个版本。该分类变量的后验分布可以解释为各种模型的相对概率。
在下面的代码中,我比较了两个模型。这些模型在形式上是相同的。每个都有一个需要估计的参数,mE
。可以看出,这些模型的先验有所不同。两个先验均以众数为 0.5 的 beta 分布形式进行分布。然而,模型 2 的先验分布更加集中。另请注意,我使用了伪先验,我希望它可以防止链卡在其中一个模型上。但无论如何,模型似乎都卡住了。
这是模型:
model {
m ~ dcat( mPriorProb[] )
mPriorProb[1] <- .5
mPriorProb[2] <- .5
omegaM1[1] <- 0.5 #true prior
omegaM1[2] <- 0.5 #psuedo prior
kappaM1[1] <- 3 #true prior for Model 1
kappaM1[2] <- 5 #puedo prior for Model 1
omegaM2[1] <- 0.5 #psuedo prior
omegaM2[2] <- 0.5 #true prior
kappaM2[1] <- 5 #puedo prior for Model 2
kappaM2[2] <- 10 #true prior for Model 2
for ( s in 1:Nsubj ) {
mE1[s] ~ dbeta(omegaM1[m]*(kappaM1[m]-2)+1 , (1-omegaM1[m])*(kappaM1[m]-2)+1 )
mE2[s] ~ dbeta(omegaM2[m]*(kappaM2[m]-2)+1 , (1-omegaM2[m])*(kappaM2[m]-2)+1 )
mE[s] <- equals(m,1)*mE1[s] + equals(m,2)*mE2[s]
z[s] ~ dbin( mE[s] , N[s] )
}
}
以下是相关数据的 R 代码:
dataList = list(
z = c(81, 59, 36, 18, 28, 59, 63, 57, 42, 28, 47, 55, 38,
30, 22, 32, 31, 30, 32, 33, 32, 26, 13, 33, 30),
N = rep(96, 25),
Nsubj = 25
)
当我运行此模型时,MCMC 的每次迭代都在 m = 1
处进行,并且从不跳转到 m = 2
。我尝试了许多不同的先验和伪先验组合,但似乎找不到 MCMC 会考虑 m = 2
的组合。我什至尝试为模型 1 和 2 指定相同的先验和伪先验,但这没有帮助。在这种情况下,我预计 MCMC 会在模型之间相当频繁地跳转,大约花费一半的时间考虑一个模型,一半的时间考虑另一个模型。然而,JAGS 始终处于 m = 1
状态。我已经运行了长达 6000 次迭代的链,这对于像这样的简单模型来说应该足够长了。
如果有人对如何解决此问题有任何想法,我将不胜感激。
干杯,蒂姆
最佳答案
我还没能弄清楚这一点,但我认为从事这方面工作的其他人可能会欣赏下面的代码,它将使用 rjags 从 R 重现问题(必须安装 JAGS) .
请注意,由于此示例中只有两个竞争模型,因此我将 m ~ dcat()
更改为 m ~ dbern()
,然后替换 m
与代码中其他地方的 m+1
。我希望这可以改善这种行为,但事实并非如此。另请注意,如果我们指定 m 的初始值,则无论我们选择哪个值,它都会停留在该值,因此 m 只是无法正确更新(而不是奇怪地被一个模型或另一个模型吸引)。这让我很头疼;为了马丁的眼睛,可能值得发布在 http://sourceforge.net/p/mcmc-jags/discussion/
library(rjags)
load.module('glm')
dataList = list(
z = c(81, 59, 36, 18, 28, 59, 63, 57, 42, 28, 47, 55, 38,
30, 22, 32, 31, 30, 32, 33, 32, 26, 13, 33, 30),
N = rep(96, 25),
Nsubj = 25
)
sink("mymodel.txt")
cat("model {
m ~ dbern(.5)
omegaM1[1] <- 0.5 #true prior
omegaM1[2] <- 0.5 #psuedo prior
kappaM1[1] <- 3 #true prior for Model 1
kappaM1[2] <- 5 #puedo prior for Model 1
omegaM2[1] <- 0.5 #psuedo prior
omegaM2[2] <- 0.5 #true prior
kappaM2[1] <- 5 #puedo prior for Model 2
kappaM2[2] <- 10 #true prior for Model 2
for ( s in 1:Nsubj ) {
mE1[s] ~ dbeta(omegaM1[m+1]*(kappaM1[m+1]-2)+1 , (1-omegaM1[m+1])*(kappaM1[m+1]-2)+1 )
mE2[s] ~ dbeta(omegaM2[m+1]*(kappaM2[m+1]-2)+1 , (1-omegaM2[m+1])*(kappaM2[m+1]-2)+1 )
z[s] ~ dbin( (1-m)*mE1[s] + m*mE2[s] , N[s] )
}
}
", fill=TRUE)
sink()
inits <- function(){list(m=0)}
params <- c("m")
nc <- 1
n.adapt <-100
n.burn <- 200
n.iter <- 5000
thin <- 1
mymodel <- jags.model('mymodel.txt', data = dataList, inits=inits, n.chains=nc, n.adapt=n.adapt)
update(mymodel, n.burn)
mymodel_samples <- coda.samples(mymodel,params,n.iter=n.iter, thin=thin)
summary(mymodel_samples)
关于winbugs - JAGS - 即使使用伪先验,分层模型比较也不会在模型之间跳转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32689459/
每次我使用 jags() 函数运行我的 JAGS 模型时,我都会得到非常不同的拟合参数值。但是,我希望其他人重现我的结果。 我尝试添加 set.seed(123),但没有帮助。 This link描述
是否有颜色突出显示锯齿和错误模型文件的软件包?我安装了 ESS,但它似乎无法识别开箱即用的 .bug 文件或 jags/bugs 语法。 最佳答案 语法高亮 我正在使用 ESS 5.14(来自 ELP
我正在尝试在 JAGS 中运行一个二项式-beta 模型(参见下面的示例代码)。我不断收到错误:错误:尝试运行 JAGS 模型时遇到以下错误: Error in node a0 Slicer stuc
我正在尝试在 JAGS 中运行一个二项式-beta 模型(参见下面的示例代码)。我不断收到错误:错误:尝试运行 JAGS 模型时遇到以下错误: Error in node a0 Slicer stuc
我正在尝试在 JAGS 中执行此操作: z[l] ~ dbeta(0.5,0.5) y[i,l] ~ z[l]*dnorm(0,10000) + inprod(1-z[l],dnegbin(exp(e
我正在尝试使用 Mark the Ballot 的一段 jags 代码复制模拟,但是 jags 向我发送了一条错误消息.. 如果我理解正确,它应该在为某个地方的每一方索引房屋效应时出现问题,但我无法找
我正在尝试使用指数作为响应 (D47)、温度作为预测变量 (Temp) 并考虑离散变量( Material )的随机效应来对贝叶斯回归建模。我找到了关于非层次回归的非常好的信息,一些帖子甚至包括这些模
考虑以下数据框: set.seed(5678) sub_df% select(-1) %>% mutate(clustersize = as.integer(clustersize),
我正在使用 rJAGS 构建多级贝叶斯模型,并且我想为我的几个参数指定柯西先验。有没有办法在 JAGS 中做到这一点,或者我需要切换到 STAN 吗?我的 JAGS 模型如下。我想用柯西分布替换 dn
我正在尝试在使用 GPFS 作为其文件系统的集群上构建和安装 JAGS。我遇到了配置脚本的问题: ./configure --prefix=$HOME/JAGS/ --with-lapack=/cm/
想象一个基础过程,它从概率为 $\alpha$ 的正态分布和概率为 $1 -\alpha$ 的均匀分布中抽取数字。因此,观察到的由该过程生成的数字序列遵循 $f$ 分布,它是 2 个分量 的混合 和
我正在使用 dirlichet 分布在 JAGS 中拟合多变量模型。我有一个包含 3 个物种比例丰度的矩阵 y。 #generate 3 columns of species proprotional
完整数据集包含约 11,000 行。我一直在使用 K=400 运行代码,同时检查代码是否运行。 所有行都与 map 上的特定单元格相关,并包含从 Sentinel-2 图像和数字高程图中提取的信息。
我是 JAGS 的新手,我正在尝试运行一个简单的逻辑回归。我的数据文件非常简单:响应是二进制的,我使用的一个预测器具有三个级别。像这样: col1: 1 2 2 2 1 1 1 2 1 2 ... c
我正在尝试在 JAGS 中拟合逻辑回归模型,但我的数据形式为(#success y,#尝试 n),而不是二进制变量。在 R 中,可以通过使用带有“权重”参数的 glm(y/n ~) 将模型拟合到诸如此
假设我们使用 JAGS(或 WinBUGS)拟合贝叶斯线性混合模型,输出对象是否包括模型残差?我们怎样才能找到残差? 谢谢! 最佳答案 JAGS (BUGS) 模型只是输出您让它监控的模型中的节点值。
我正在使用 Kruschke 描述的分层建模框架在 JAGS 中建立两个模型之间的比较。该框架的想法是通过将每个版本指定为分类变量的一个级别来运行和比较模型的多个版本。该分类变量的后验分布可以解释为各
我正在使用 zeros-ones 技巧将计数数据拟合到 JAGS 中的广义泊松分布。我遵循“使用 WinBUGS 进行贝叶斯建模”一书中的代码(第 286 页)。这是我的代码: GPoisson.mo
我试图在 R 中调用以下 jags 模型: model{ # Main model level 1 for (i in 1:N){ ficon[i] ~ dnorm(mu[i], ta
这是对 SE 早期帖子的一种跟进:https://stats.stackexchange.com/questions/70858/right-censored-survival-fit-with-ja
我是一名优秀的程序员,十分优秀!