问题标签 [jags]
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 - 使用 R 包 rjags 将现有矩阵传递给 JAGS 模型
非常简单的问题,但我不知何故找不到解决方案。您如何使用 rjags 将现有值(矩阵、向量)传递给 JAGS 模型?
这是一个示例代码:
而且我想以某种方式传递B = diag(100)
到上面的模型中,我该怎么做?
r - 无法提取 DIC
我正在使用 runjags 并试图为我的模型获取 DIC。
我知道如果我打印 runjags 对象,它将返回包含 DIC 的模型摘要,但我的模型有很多变量,因此计算摘要统计信息需要很长时间。当我使用summarise=FALSE
DIC 时不返回。
我试过使用:extract(runJagsObj, what='dic')
但它返回此错误消息:
"Error: Please supply column name"
有没有办法在摘要信息中查看 DIC 而不必计算每个变量的摘要统计信息?或者为什么提取不起作用?
method=parallel
如果这是有用的信息,我正在使用。
bayesian - 嵌套索引 VS。贝叶斯分层模型规范中的嵌套 for 循环
我在 Jeff Gill 的第三版“贝叶斯方法:一种社会和行为方法”(2015 年)一书中遇到了两种指定贝叶斯层次模型的方法。
书中的三个例子(如下)是关于贝叶斯层次模型的。模型中的主要区别已用红色圈出:
在示例 1 中,嵌套结构通过嵌套索引alpha[state.id[i]] 表示。两个 for 循环分别指定。但是,在示例 2 和示例 3 中,层次结构是通过嵌套 for 循环而不是嵌套索引指定的。此外,有i
和j
出现在相同的方括号内(Q[i,j]
在示例 2 和mu[i,j]
示例 3 中),而示例 1 中只有一个索引(i
或j
)出现在方括号中。
我的问题: 嵌套索引与嵌套索引有什么区别。指定贝叶斯层次模型时嵌套for循环?示例 1 能否以类似于示例 2 和 3 的方式建模,反之亦然?我该如何在这两种方法之间进行选择?
如果您对了解示例的细节感到更自在,我将为您提供完整的示例。
谢谢!
r - 软件包“rjags”的安装具有非零退出状态
SO:Linux Ubuntu 14.04 LTS R:R 版本 3.2.1 (2015-06-18) --“世界著名宇航员”版权所有 (C) 2015 统计计算平台 R 基金会:i686-pc-linux-gnu (32 -少量)
当我尝试安装包rjags
时,我收到以下致命错误:
显然,第一条错误消息是
配置:错误:“未定义 JAGS 标头的位置。使用配置参数 '--with-jags-include' 或环境变量 'JAGS_INCLUDE'”
我该如何解决这个问题?
bayesian - 在 JAGS 中运行逻辑模型 - 你可以矢量化而不是循环单个案例吗?
我对 JAGS 很陌生,所以这可能是一个愚蠢的问题。我正在尝试在 JAGS 中运行一个模型,该模型预测一维随机游走过程在越过边界 B 之前越过边界 A 的概率。该模型可以通过以下逻辑模型解析求解:
Pr(A,B) = 1/(1 + exp(-2 * (d/sigma) * theta))
其中“d”是平均漂移率(正值表示向边界 A 漂移),“sigma”是该漂移率的标准偏差,“theta”是起点和边界之间的距离(假设等于两个边界)。
我的数据集由 50 个参与者组成,每个参与者提供 1800 个观察结果。我的模型假设 d 由观察到的环境变量(我将称之为“x”)和将 x 与 d 相关的权重系数(我称之为“beta”)的特定组合确定。因此,存在三个参数:beta、sigma 和 theta。我想为每个参与者估计一组参数。我的意图是最终运行一个层次模型,其中组级别参数影响单个级别参数。然而,为简单起见,这里我将只考虑一个模型,在该模型中我为一个参与者估计一组参数(因此该模型不是分层的)。
我的模型rjags
如下:
该模型运行良好,但需要很长时间才能运行。我不确定 JAGS 是如何执行代码的,但如果这段代码在 R 中运行,效率会相当低,因为它必须遍历案例,分别为每个案例运行模型。因此,随着样本量的增加,运行分析所需的时间会迅速增加。我有一个相当大的样本,所以这是一个问题。
有没有办法对这段代码进行矢量化,以便它可以一次计算所有数据点的可能性?例如,如果我将其作为一个简单的最大似然模型运行。我将对模型进行矢量化并计算给定参与者提供的所有 1800 个案例的特定参数值的数据的概率(因此不需要 for 循环)。然后我会记录这些可能性的对数并将它们加在一起,为参与者给出的所有观察结果提供一个对数似然。这种方法可以节省大量时间。有没有办法在 JAGS 中做到这一点?
编辑
感谢您的回复,并指出我展示的模型中的参数可能无法识别。我应该指出该模型是简化版本。完整模型如下:
在这个模型中,估计的参数是theta
、discount
和gamma
,并且这些参数可以被恢复。当我对单个参与者(Ntotal
= 1800)的观察结果运行模型时,模型运行大约需要 5 分钟,这完全没问题。然而,当我在整个样本上运行模型时(45 名参与者 x 1800 个案例 = 78,900 个观察值),我已经运行了 24 小时,而且还不到 50%。这看起来很奇怪,因为我预计它只需要 45 倍的时间,所以最多 4 或 5 个小时。我错过了什么吗?
winbugs - JAGS - 即使使用伪先验,分层模型比较也不会在模型之间跳转
我正在使用 Kruschke 描述的分层建模框架来 比较 JAGS 中的两个模型。这个框架的想法是通过将每个版本指定为一个类别变量的一个级别来运行和比较模型的多个版本。这个分类变量的后验分布可以解释为各种模型的相对概率。
在下面的代码中,我比较了两个模型。这些模型在形式上是相同的。每个都有一个需要估计的参数,mE
。可以看出,这些模型的先验有所不同。两个先验都分布为众数为 0.5 的 beta 分布。然而,模型 2 的先验分布更加集中。另请注意,我使用了伪先验,我希望这些伪先验可以防止链条卡在其中一个模型上。但无论如何,该模型似乎卡住了。
这是模型:
以下是相关数据的 R 代码:
当我运行这个模型时,MCMC 每次迭代都花费在m = 1
,并且永远不会跳到m = 2
。我尝试了很多不同的先验和伪先验组合,但似乎找不到 MCMC 会考虑的组合m = 2
。我什至尝试为模型 1 和 2 指定相同的先验和伪先验,但这没有帮助。在这种情况下,我预计 MCMC 会在模型之间相当频繁地跳转,大约一半时间考虑一个模型,一半时间考虑另一个模型。但是,JAGS 仍将整个时间都花在了m = 1
. 我已经运行了长达 6000 次迭代的链,这对于像这样的简单模型来说应该足够长了。
如果有人对如何解决此问题有任何想法,我将不胜感激。
干杯,蒂姆
r - 在 rjags 中初始化并行链
我正在通过 rjags 在 jags 中进行一些贫民窟并行化。
我一直在使用函数 parallel.seeds 来获取 RNG 状态来初始化 RNG(下面的示例)。但是,我不明白为什么每个 RNG 都会返回多个整数。在文档中它说,当您初始化 .RNG.state 时,它应该是一个长度为 1 的数字向量。
此外,有时当我尝试执行此操作时,R 会崩溃,但不会产生错误。当我放弃并让它自己生成链的种子时,模型运行良好。这是否意味着我使用了错误的 .RNG.state?任何见解都将不胜感激,因为我计划在未来扩大这个模型。
bayesian - (嵌套?)重复测量方差分析的 BUGS 模型
我想知道是否有人有用于重复测量方差分析的 BUGS/JAGS 模型的代码?基本上,我有一个响应(y),我想针对Time of day、Day和Treatment进行建模。我还想包括两个交互项,Treatment x Time of Day和Treatment x Day. 研究中有大约 20 个人,在大约 1 周内每天测量 4 次。我不完全确定从哪里开始,而且我担心一天中的时间协变量也应该嵌套在日协变量中?如果有人有 BUGS/JAGS 模型的可能性部分的代码,将不胜感激。我可以照顾先验。只是似乎无法用这个起步。
r - JAGS 分析简介
我是一名学习贝叶斯统计的学生,刚刚开始使用我的讲师编写的介绍脚本使用 JAGS,我们(学生)只需输入数据和迭代次数。以下是添加了我的数据的脚本:
但是,当我运行以下代码时,我收到以下错误消息:
但据我所知,第 11 行是空白的,这让我不知道错误来自哪里。如果有人可以给我一些解决此问题的提示,将不胜感激。
bayesian - 简单 JAGS 模型中的编译错误
我已经阅读了有关该主题的其他问题,但是关于这些问题的所有模型都比我的复杂得多,并且无法帮助我找到答案(对 JAGS 来说非常新)。
当我运行以下命令时:
我收到错误:jags.model 中的错误(model.file,data = data,inits = init.values,n.chains = n.chains,:运行时错误:第 3 行的编译错误。无法评估计数器 i 的上索引
其他解决方案提到循环中不应该出现在循环中的东西,但我认为我的循环没有任何问题?我不知道。谢谢!