问题标签 [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.
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:
然后我设置了一个稍微不同的数据对象,并运行模型:
但是,返回的m0
和m1
参数与循环 beta 模型返回的参数完全不同。似乎所有参数都反映了提供的(平坦)先验分布,并且数据并未以任何方式限制参数。该模型无法捕捉mat
物种 1 之间的负相关关系和相对丰度。它甚至似乎根本没有限制数据:
值得注意的是,如果我拟合一个仅截距的 dirlichet 模型(没有mat
协变量),它可以很好地捕获相对丰度,但前提是我使用 log-link,而不是 beta 案例中使用的 logit-link(例如在这里)。扩展 log-link 案例并添加mat
协变量并不能解决问题。我在这里想念什么?
model - 错误传递模型 JAGS
我目前正忙于使用 JAGS 工具箱进行多元回归分析。我正在使用 runjags,但仍然出现错误:
这是我的模型的样子:
德错误应该在这一行:
但是,我不知道错误来自哪里。谁能帮助我?
r - 并行运行 JAGS 时的 DIC 和 PED
我并行运行 JAGS,即每个链在单独的进程/线程中。我在打电话run.jags(..., method = "rjparallel", params = c(..., "dic", "ped"))
。我收到以下错误:
锯齿 DIC、PED、pD、full.pD 和 pOpt 在使用平行链或单独链时无法评估
嗯……
是因为 DIC 和 PED 是从所有链中计算出来的,而不仅仅是一个链吗?难道不能
run.jags
在收集所有线程的结果后在函数中完成吗?有什么办法吗?如何在并行运行时获得 DIC 和 PED?一定是有可能的,对吧?
cycle - JAGS 错误 - 可能涉及以下部分或全部节点的定向循环
完整的数据集包含约 11,000 行。我一直在使用 K=400 运行代码,同时检查代码是否运行。
所有行都与地图上的特定单元格相关,并包含从 Sentinel-2 图像和数字高程图中提取的信息。
117 个单元的子集还包含在实地考察中记录的栖息地协变量。因此,包括响应变量(S1 和 S2)和 tussac 在内的一些列的特点是 NA 比例很高。
编码:
当我包含 'c4*S1[i]' 时,我收到以下错误:
然后继续列出 S1、S2、lambda1 和 lambda2 的所有值。
删除 'c4*S1[i]' 会导致代码运行。
我浏览了以下线程:
其中的问题似乎是由于海报在等式两边都使用了“y”引起的。我认为我的问题是由于 a4 将代码发送到 S2 部分,而 c4 将其发送回 S1 部分,这有点像定向循环。知道如何解决这个问题吗?
我已经包含了数据集的顶部行,以防万一它有任何用途:
数据集子集,以便仅包含远程和本地感测数据的 117 行:
mcmc - 运行 Jags - 从 mcmc 对象中提取多个实现
我有一个 runjags 脚本,可以为岛上的每个细胞生成预测的洞穴密度。我希望从每个单元格的 mcmc 对象中获得多次绘制(大约 100 次)。我的论文导师认为我应该能够使用 coda 包来做到这一点,但我只能提取每个单元格的平均值,而不是多个实现。
用于运行模型并提取平均值的代码:
谁能告诉我如何为每个单元格获取多个值?
该模型:
数据集的前 5 行:
提前感谢您的任何回复。
jags - 将 jagam 代码插入 runjags (JAGS) 模型
我一直在尝试将平滑融入我创建的 runjags 模型中,以模拟海鸟洞穴数量和整个岛屿的分布。通过从模型输出中提取计数数据以及 x 和 y 坐标并使用此页面http://www.petrkeil.com/?p=2385上的 JAGAM 教程,我设法生成了一些平滑代码
我想我可以通过将平滑合并到 jags 模型中来提高模型性能,但我不知道如何做到这一点。你能给我一些关于如何实现这一目标的指示吗?
我在下面附上了一段 runjags 代码和 JAGAM 输出。
runjags 代码:
JAGAM 输出:
样本数据:
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 中修复此类模型的种子?
这是一个最小的可重现示例:
r - 并行运行多个并行进程 R
我使用 R 中的包在单独的处理节点上运行每个链的贝叶斯统计模型runjags
。我想通过使用包在并行循环中嵌套run.jags
调用来一次拟合多个模型foreach
。但是,这通常会导致错误消息,可能是因为foreach
循环不“知道”在循环内我正在调用其他并行进程,因此内核可能是双重分配的(或其他什么)。这是一个示例错误消息:
{ 中的错误:任务 2 失败 -“尝试运行 JAGS 模型时遇到以下错误:socketConnection
中的错误(“localhost”,端口 = 端口,服务器 = TRUE,阻塞 = TRUE,:无法打开连接
这是一些示例代码,用于生成数据并拟合两个模型,每个模型请求 2 个内核(总共需要 4 个内核,我的笔记本电脑上有)。我很想找到一个解决方案,让我可以并行运行多个并行 JAGS 模型。实际上,我一次在集群上运行 5-10 个模型,每个模型需要 3 个内核。
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,是否可以认为参数从图中收敛?
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 分钟):