- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试在 JAGS 中实现为 WinBUGS 编写的以下模型:
model {
for (i in 1:N) {
wtp[i] ~ dweib(r[G[i]], mu[i])I(lower[i], upper[i])
mu[i] <- exp(beta[G[i]])
G[i] ~ dcat(P[])
}
P[1] ~ dunif(0.01, 0.99)
P[2] <- 1 - P[1]
r[1] ~ dunif(1, 10)
r[2] ~ dunif(0.1, 10)
beta[1] ~ dunif(0, 1000)
beta[2] ~ dunif(-1000, 0)
weibmed[1] <- pow(log(2) * exp(-beta[1]), 1 / r[1])
weibmed[2] <- pow(log(2) * exp(-beta[2]), 1 / r[2])
weibmed[3] <- pow(log(1 / (1 - 0.5 + P[1])) * exp(-beta[2]), 1 / r[2])
weibmean[1] <- pow(exp(-beta[1]), 1 / r[1]) * exp(loggam((1 + r[1]) / r[1]))
weibmean[2] <- pow(exp(-beta[2]), 1 / r[2]) * exp(loggam((1 + r[2]) / r[2]))
weibmean[3] <- P[1] * weibmean[1] + P[2] * weibmean[2]
}
我认为在 JAGS 中使用它会很简单:
library(rjags)
txt <- 'model {
for (i in 1:N) {
wtp[i] ~ dweib(r[G[i]], mu[i])T(lower[i], upper[i])
mu[i] <- exp(beta[G[i]])
G[i] ~ dcat(P[])
}
P[1] ~ dunif(0.01, 0.99)
P[2] <- 1 - P[1]
r[1] ~ dunif(1, 10)
r[2] ~ dunif(0.1, 10)
beta[1] ~ dunif(0, 1000)
beta[2] ~ dunif(-1000, 0)
weibmed[1] <- pow(log(2) * exp(-beta[1]), 1 / r[1])
weibmed[2] <- pow(log(2) * exp(-beta[2]), 1 / r[2])
weibmed[3] <- pow(log(1 / (1 - 0.5 + P[1])) * exp(-beta[2]), 1 / r[2])
weibmean[1] <- pow(exp(-beta[1]), 1 / r[1]) * exp(loggam((1 + r[1]) / r[1]))
weibmean[2] <- pow(exp(-beta[2]), 1 / r[2]) * exp(loggam((1 + r[2]) / r[2]))
weibmean[3] <- P[1] * weibmean[1] + P[2] * weibmean[2]
}'
set.seed(3.14159)
dat <- list(N = 1000, lower = rep(0, 1000), upper = runif(1000, 5, 200000))
ini <- list(P = c(0.4, NA), r = c(8.2, 1.2), beta = c(3.8, -6.5))
mod <- jags.model(
file = textConnection(txt),
data = dat,
inits = c(ini, .RNG.name = 'base::Mersenne-Twister', .RNG.seed = 314159),
n.chains = 1,
n.adapt = 100
)
sam.jags <- coda.samples(
model = mod,
variable.names = c('P', 'r', 'beta', 'weibmed', 'weibmean'),
n.iter = 400,
n.thin = 1
)
只需将 I()
替换为 T()
。这会产生 coda.samples()
错误:
Error: Error in node weibmed[3]
Invalid parent values
如果我忽略对 weibmed
和 weibmean
的监控,那么 coda.samples()
可以工作,但参数估计:
Mean SD Naive SE Time-series SE
P[1] 0.4840704 0.2769491 0.01384746 0.01384746
P[2] 0.5159296 0.2769491 0.01384746 0.01384746
beta[1] 509.3614647 295.0860473 14.75430237 14.75430237
beta[2] -487.5362940 285.4126899 14.27063449 14.27063449
r[1] 5.2054730 2.6330434 0.13165217 0.13165217
r[2] 5.0478143 2.9480476 0.14740238 0.14740238
与我在使用 WinBUGS 时得到的结果不可比:
library(R2WinBUGS)
sam.bugs <- bugs(
model.file = 'model.bug',
data = dat,
inits = list(ini),
parameters.to.save = c('P', 'r', 'beta'), #, 'weibmed', 'weibmean'),
n.chains = 1,
n.burnin = 100,
n.iter = 500,
n.thin = 1,
debug = F,
DIC = F,
bugs.seed = 314159
)
Inference for Bugs model at "3mixout2.bug", fit using WinBUGS,
1 chains, each with 500 iterations (first 100 discarded)
n.sims = 400 iterations saved
mean sd 2.5% 25% 50% 75% 97.5%
P[1] 0.4 0.0 0.3 0.4 0.4 0.4 0.4
P[2] 0.6 0.0 0.6 0.6 0.6 0.6 0.7
r[1] 7.2 0.8 6.2 6.6 6.9 7.7 9.3
r[2] 1.5 0.0 1.4 1.4 1.5 1.5 1.6
beta[1] 5.5 0.5 4.6 5.0 5.4 5.8 6.6
beta[2] -7.2 0.2 -7.5 -7.3 -7.2 -7.1 -6.9
有什么想法或建议吗?
最佳答案
JAGS手册说;
pow(x, z) || Power function || Real || If x < 0 then z is integer
当 0.5 < P[1]
, log(1 / (1 - 0.5 + P[1])) * exp(-beta[2]) < 0
, 所以 weibmed[3]
, pow(negative, non_integer)
, 变成 NaN
.据我所知,coda.samples()
不允许监控变量取 NaN
.
如果您使用 P[1] ~ dunif(0.01, 0.5)
或 weibmed[3]
除外通过更改其名称从受监视的变量列表中删除,例如 weibmed3 <- pow(log(1 / (1 - 0.5 + P[1])) * exp(-beta[2]), 1 / r[2])
,您的代码运行。
关于r - 将 WinBUGS 模型转换为 JAGS(使用 R),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40776739/
每次我使用 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
我是一名优秀的程序员,十分优秀!