问题标签 [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 回答
461 浏览

r - “这个 R 函数纯粹是指示性的,永远不应该被调用”:为什么我会收到这个错误?

我正在返回一些旧代码。我确信它在过去有效。自从我上次使用它以来,我已经升级dplyr到 1.0.0 版本。不幸的是,在编译时devtools::install_version("dplyr", version='0.8.5")给了我一个错误,所以我无法执行回归测试。

我正在尝试从包中创建一个整洁的类版本。该类本质上是任意大小的(大)二维矩阵。它可能有几(几万)行,并且列名是相关的,并且(如下面的玩具数据)可能很尴尬。对象的属性中也有有用的信息。因此,我采取了有点复杂的方法。它必须是完全通用的。mcmcrunjags mcmcmcmc

* 玩具数据 *

* 第 1 阶段:有效的代码:*

在这一点上,我有一个小标题列表。每个 tibble 包含命名的列Chain1在这种情况下,每个 tibble 中每个观察的值都是 ),Sample(值取自dimnames属性的第一个维度xTemp(值betaalpha[1]并且alpha[2]在列表的元素 3、1 和 2 中) ) 和Value( mcmc单元格 [ Sample, Temp] 中对象的值。

* 第 2 阶段:问题出在这里... *

row_bind将列表放入一个包含(一些)我需要的信息的整洁的小标题中应该是一件简单的事情。但:

* 问题 *

我看不出我在这里做错了什么。(即使我做错了什么,我也希望得到更用户友好、更高级别的错误消息。)我在网络上的任何地方都找不到对这个错误的任何引用。

  1. 有谁知道发生了什么?
  2. 有人会使用dplyrv0.8.x 运行代码并报告他们看到的内容吗?

我很感激你的想法。

* 更新 *

看起来问题似乎已通过重新启动解决,但现在又回来了。即使这些小问题导致错误,在线文档中的一个相关示例也有效:

运行没有问题。

语境:

0 投票
1 回答
71 浏览

r - 如何指定嵌套模型

runjags用来建模一些分层数据。我可以对层次结构的一个级别进行建模,但我不知道如何将其扩展到更多级别。我正在尝试使用“使用 WinBUGS 进行贝叶斯分层建模”的第 24 页中的方法 3来执行此操作,该方法由 Nicky Best 等人撰写,该方法使用嵌套循环(与嵌套索引相反)。

对于一个级别,我可以建模

然后我尝试使用添加另一个级别

但收到错误

第 5 行编译错误。
尝试重新定义节点 y[1,1]

如何扩展它以模拟第一个嵌套的另一个级别?谢谢你。

下面是一些可重现的数据,显示了数据的结构。我希望估计outer_grp和 的 随机估计inner_grp


编辑

也许像这样建模就足够了??

0 投票
3 回答
75 浏览

r - 运行时错误:索引超出范围获取 theta 的子集

我有一个看起来像这样的数据框:

我正在使用 jags 执行 MCMC 算法,但我总是得到错误:

这是源文件:

这是我从原始源文件中使用的代码:

回溯错误来自原始源文件中的行

有人可以帮我弄清楚为什么会出现错误:

另外,我在数据文件中将 s 变量更改为数字,但我没有在这里显示。将其保留为字符也会产生另一个错误。

0 投票
0 回答
39 浏览

r - 当我知道某些模拟失败时,从 runjags 获取 coda 文件

我正在通过模拟 ID 拆分我的数据集,并将 runjags 函数同时应用于每个子数据集。这使我能够利用并行处理并在集群上运行我的模拟。一项需要 1 天以上的工作可以在 2 小时左右完成。

在我运行的 1000 次模拟中,大约有 25 次失败。我正在使用带有陷阱捕获错误的 for 循环从成功运行的模拟中提取 coda 文件。问题是,一旦模拟失败,该错误会影响我正在使用的所有内核,并且我也无法提取成功运行的模拟的 coda 文件。

有什么建议么?我在下面包含代码和日志文件。谢谢你。

这是我在集群上完成作业后从日志文件中看到的内容。第 1000 次模拟后跟一个错误,然后是 for 循环的下标超出范围错误。

0 投票
1 回答
35 浏览

r - 更新每次模拟中的观察次数(使用库:runjags,parallel)

我正在通过模拟 ID 拆分我的数据集,并将 runjags 函数同时应用于每个子集。

现在,每个模拟都包含 1000 个观测值。我知道有时观察的数量会有所不同,因为我会删除符合某些标准的行。我不知道有多少观察会被丢弃,但我可以通过使用来计算groupobs <- fulldata %>% count(SimulID, sort=TRUE).

有没有一种方法可以在每次模拟运行期间更改 N=1000。这意味着每次运行的模拟都必须重写 tempModel.txt 文件。

谢谢你。

0 投票
0 回答
33 浏览

r - “runjags”R 包run.jags 函数并行方法。并行方法使用多少个内核?

我使用了 run.jags 函数来执行并​​行处理。处理过程中使用了多少核心?我的电脑有 4 个核心,我可以指定 run.jags 使用所有 4 个核心,只使用 2 个或 3 个核心等吗?

0 投票
0 回答
22 浏览

r - r中的Jags.model

我试图重现书中给出的一个例子。我正在尝试完全相同的代码,并收到此错误。这到底是什么意思?

0 投票
1 回答
24 浏览

r - 在Rjags/runjags中,使用dinterval时出现“node与parents不一致”错误的原因是什么?

我绞尽脑汁想办法解决这个问题,但我束手无策!首先,必要的背景:用耙子对湖泊中的水生植物进行采样。你把耙子扔进湖里,然后把它拉回你的船上,然后你就会弄清楚它的尖叉上有什么植物。在我们的例子中,我们测量存在/不存在以及“丰度”,但是以序数/间隔审查的方式->如果物种 X 根本没有在耙子上被注意到,则为 0,如果覆盖 < 25,则为 1耙齿的百分比,如果覆盖范围在 25% 到 75% 之间,则为 2,如果覆盖 > 75%,则为 3。然而,当一个物种的丰度较低时,很容易完全错过它,所以 0 是粗略的——它们可能并不代表真正的缺失,而这正是我们的模型试图探索的问题。

所以,这里真的有三层——一个真正的、完全潜在的丰度,我们根本没有直接观察到,一个部分潜在的“真正的存在/不存在”,因为我们知道真正的存在在哪里,但不知道真正的缺席在哪里,然后我们有我们观察到的存在/不存在数据。更有趣的是,我们认为一些环境变量可能会影响真实丰度和真实发生率,但会有所不同,然后其他变量可能会影响可检测性,而我们正试图梳理这些过程。

所以,无论如何,我的实际模型比我在下面粘贴的要大得多,也更复杂,但这里有一种功能性(但可能在学术上毫无价值)的训练版本,它复制了我得到的错误

最后,我得到了这个错误,每当我尝试做这样的远程操作时,我总是会得到这个错误:

图信息:观察到的随机节点:3000 未观察到的随机节点:1505 总图大小:19519。读取参数文件 inits1.txt。节点obs 1中的初始化模型 错误节点 与父节点不一致

我已经阅读了所有我能找到的包含此错误的帖子,包括thisthisthisthis。我可以从我的研究和测试中推测出该错误可能是由于以下原因之一而发生的。

  1. 我对潜在丰度变量的缩写不知何故是不够的。听起来这需要非常有用的初始值才能工作。
  2. 我的一个或多个先验是允许不允许的值或它们太宽泛,这会以某种方式造成问题。这可能是一个特别严重的问题,因为我使用的 beta 分布对没有 0 和 1 之外的值有很强的要求。
  3. 我错误地使用了 dinterval() 函数,这似乎是因为包含它的行总是会触发错误。
  4. 我的模型不知何故指定错误。

但我看不出哪里出错了——我已经为 1 和 2 尝试了许多不同的选项,据我从文档中可以看出(参见第 55-56 页),我正在正确使用 dinterval . 我错过了什么??

如果它是相关的,从我收集的内容来看, dinterval() 的想法是 ~ 左侧的变量是第一个参数中给出的变量的区间删失版本(这里是丰度)。然后,第二个参数(此处为 lim)是一个“断点”向量,它指示丰度数据最终位于哪个区间。因此,在这里,如果您低于最低 lim,则最终观察到的丰度代码为 0 (此处为 0.05),如果您在 lim 的前两个值之间,则为 1 等。这就像丰度变量被推过由 lim 变量创建的“分箱筛”以产生分箱输出变量,我们观察到的丰度.

任何指导将是最受欢迎的!