问题标签 [runjags]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
96 浏览

r - 难以将 dirlichet 模型拟合到 JAGS 中的模拟数据,在 R 中实现(测试版作品)

可以说我有一些关于 3 个物种的相对丰度的数据。物种 1 与年平均温度 ( mat) 呈负相关。相对丰度数据存储在矩阵中r.spp.y

我可以在 JAGS 中一次对每个物种进行 beta 回归,以表明mat物种 1 的相对丰度之间存在负相关,但mat使用 JAGS 时,物种 2 和 3 的相对丰度之间存在正相关:

这表明每个都有一个截距值和一些关系mat。具体来说,物种 1 与 物种 2 和物种 3 呈负相关,mat而物种 2 和 3 表现出正相关,mat这反映在m1参数值中。

我想使用多元模型同时拟合所有丰度。这可以使用 dirlichet 分布来完成,它是 beta 分布的多元泛化。为此,我在 JAGS 中设置了一个 dirlichet 模型,类似于上面的 beta:

然后我设置了一个稍微不同的数据对象,并运行模型:

但是,返回的m0m1参数与循环 beta 模型返回的参数完全不同。似乎所有参数都反映了提供的(平坦)先验分布,并且数据并未以任何方式限制参数。该模型无法捕捉mat物种 1 之间的负相关关系和相对丰度。它甚至似乎根本没有限制数据:

值得注意的是,如果我拟合一个仅截距的 dirlichet 模型(没有mat协变量),它可以很好地捕获相对丰度,但前提是我使用 log-link,而不是 beta 案例中使用的 logit-link(例如在这里)。扩展 log-link 案例并添加mat协变量并不能解决问题。我在这里想念什么?

0 投票
1 回答
694 浏览

model - 错误传递模型 JAGS

我目前正忙于使用 JAGS 工具箱进行多元回归分析。我正在使用 runjags,但仍然出现错误:

这是我的模型的样子:

德错误应该在这一行:

但是,我不知道错误来自哪里。谁能帮助我?

0 投票
2 回答
420 浏览

r - 并行运行 JAGS 时的 DIC 和 PED

我并行运行 JAGS,即每个链在单独的进程/线程中。我在打电话run.jags(..., method = "rjparallel", params = c(..., "dic", "ped"))。我收到以下错误:

锯齿 DIC、PED、pD、full.pD 和 pOpt 在使用平行链或单独链时无法评估

嗯……

  1. 是因为 DIC 和 PED 是从所有链中计算出来的,而不仅仅是一个链吗?难道不能run.jags在收集所有线程的结果后在函数中完成吗?

  2. 有什么办法吗?如何在并行运行时获得 DIC 和 PED?一定是有可能的,对吧?

0 投票
1 回答
1438 浏览

cycle - JAGS 错误 - 可能涉及以下部分或全部节点的定向循环

完整的数据集包含约 11,000 行。我一直在使用 K=400 运行代码,同时检查代码是否运行。

所有行都与地图上的特定单元格相关,并包含从 Sentinel-2 图像和数字高程图中提取的信息。

117 个单元的子集还包含在实地考察中记录的栖息地协变量。因此,包括响应变量(S1 和 S2)和 tussac 在内的一些列的特点是 NA 比例很高。

编码:

当我包含 'c4*S1[i]' 时,我收到以下错误:

然后继续列出 S1、S2、lambda1 和 lambda2 的所有值。

删除 'c4*S1[i]' 会导致代码运行。

我浏览了以下线程:

JAGS 中可能的定向循环错误

https://stats.stackexchange.com/questions/220312/coding-a-jags-error-model-for-a-dependent-variable-that-has-increasing-variance

其中的问题似乎是由于海报在等式两边都使用了“y”引起的。我认为我的问题是由于 a4 将代码发送到 S2 部分,而 c4 将其发送回 S1 部分,这有点像定向循环。知道如何解决这个问题吗?

我已经包含了数据集的顶部行,以防万一它有任何用途:

数据集子集,以便仅包含远程和本地感测数据的 117 行:

0 投票
1 回答
214 浏览

mcmc - 运行 Jags - 从 mcmc 对象中提取多个实现

我有一个 runjags 脚本,可以为岛上的每个细胞生成预测的洞穴密度。我希望从每个单元格的 mcmc 对象中获得多次绘制(大约 100 次)。我的论文导师认为我应该能够使用 coda 包来做到这一点,但我只能提取每个单元格的平均值,而不是多个实现。

用于运行模型并提取平均值的代码:

谁能告诉我如何为每个单元格获取多个值?

该模型:

数据集的前 5 行:

提前感谢您的任何回复。

0 投票
1 回答
180 浏览

jags - 将 jagam 代码插入 runjags (JAGS) 模型

我一直在尝试将平滑融入我创建的 runjags 模型中,以模拟海鸟洞穴数量和整个岛屿的分布。通过从模型输出中提取计数数据以及 x 和 y 坐标并使用此页面http://www.petrkeil.com/?p=2385上的 JAGAM 教程,我设法生成了一些平滑代码

我想我可以通过将平滑合并到 jags 模型中来提高模型性能,但我不知道如何做到这一点。你能给我一些关于如何实现这一目标的指示吗?

我在下面附上了一段 runjags 代码和 JAGAM 输出。

runjags 代码:

JAGAM 输出:

样本数据:

0 投票
1 回答
231 浏览

random-seed - RUNJAGS 设置种子,无需事先进行模拟

我正在使用 runjags 从正态分布中采样一些数据。对于我用于模拟的参数,我没有任何先验信息。似乎 runjages 不使用参数来修复种子:list(".RNG.name"="base::Super-Duper", ".RNG.seed"=1). 我将参数更改为,list(muOfClustsim=rep(1, npop), ".RNG.name"="base::Super-Duper", ".RNG.seed"=1)但它也不起作用。有没有办法在 runjags 中修复此类模型的种子?

这是一个最小的可重现示例:

0 投票
2 回答
1040 浏览

r - 并行运行多个并行进程 R

我使用 R 中的包在单独的处理节点上运行每个链的贝叶斯统计模型runjags。我想通过使用包在并行循环中嵌套run.jags调用来一次拟合多个模型foreach。但是,这通常会导致错误消息,可能是因为foreach循环不“知道”在循环内我正在调用其他并行进程,因此内核可能是双重分配的(或其他什么)。这是一个示例错误消息:

{ 中的错误:任务 2 失败 -“尝试运行 JAGS 模型时遇到以下错误:socketConnection
中的错误(“localhost”,端口 = 端口,服务器 = TRUE,阻塞 = TRUE,:无法打开连接

这是一些示例代码,用于生成数据并拟合两个模型,每个模型请求 2 个内核(总共需要 4 个内核,我的笔记本电脑上有)。我很想找到一个解决方案,让我可以并行运行多个并行 JAGS 模型。实际上,我一次在集群上运行 5-10 个模型,每个模型需要 3 个内核。

0 投票
0 回答
131 浏览

r - 使用 Gelman-Rubin PSRF 进行收敛诊断:R coda package vs Runjags

我使用 Runjags 运行贝叶斯模型,然后使用 coda 包转换 MCMC.list 中的输出。我使用 Gelman-Rubin 诊断(单变量)检查收敛性。

有时,PSRF 很大只是因为一个链在某个点采样了一个很大的值(PsRF 从 ~1 变为 1,2)。另一方面,PSRF 与 Runjags 接近 1。有时 Runjags 的 PSRF 比 Coda 大。

我没有发现计算上有什么区别。你知道吗?即使 PSRF 为 1,2,是否可以认为参数从图中收敛?

0 投票
0 回答
440 浏览

r - JAGS 模型中的 extract(model, what = dic) 返回 NA 以进行惩罚

使用 JAGS,我将不同的模型拟合到数据中,并希望使用偏差信息标准 (DIC) 来比较它们的拟合度。我正在使用“run.jags”来拟合模型,然后在模型运行后“提取”来确定模型的 DIC。我的模型没有问题地收敛,但我只获得了 DIC 偏差部分的值。我所有的惩罚值都是 0 或 NA。我想我明白为什么我得到 NA - 这些是预测值和观察值都为 0 的场景。我不明白为什么我在其他实例中得到 0。有想法该怎么解决这个吗?

有人因处罚而获得 NA 的其他帖子建议更改先验(https://sourceforge.net/p/mcmc-jags/discussion/610037/thread/2fcd66ea/),但他们使用的是 dic.samples(),而不是提炼()。我尝试改变我的先验,但没有发现它改变了我的结果。

这是一些重现这种情况的代码(运行时间 < 1 分钟):