问题标签 [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.
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 次迭代的链,这对于像这样的简单模型来说应该足够长了。
如果有人对如何解决此问题有任何想法,我将不胜感激。
干杯,蒂姆
plot - Plotting specific variable in runjags output
When plotting runjags output, how does one plot a single specific variable, when many other variables have similar names? Providing a quoted variable name with the vars
argument doesn't seem to do it (it still provides all partial matches).
Here is a simple reproducible example.
jags - runjags 模型中未使用的变量警告
我正在通过 R 包运行 JAGS 模型runjags
。我刚刚从 JAGS 3.4 更新到 JAGS 4.0.0,并注意到一些似乎与更新有关的意外行为。
首先,当我运行一个模型时,我现在会收到一条警告消息WARNING: Unused variable(s) in data table:
,后面是一个在模型中引用并作为数据提供的数据对象列表。它似乎不影响结果(但它非常令人费解)。然而,我在玩这个时注意到几次,对于某些变量,后验实际上与先验相同(表明没有发生更新)。我现在似乎无法重新创建更新失败,但下面是一个可重现的代码示例,说明了奇怪的警告消息。帮助页面上的代码示例run.jags
也会产生相同的警告。
R2jags
其次,如果我使用 R 包而不是,我想我会检查是否弹出相同的消息runjags
,但R2jags
不会加载,因为显然rjags
(依赖项之一)与 JAGS 4.0 不兼容(它正在寻找 JAGS 3 。X)。此外,在runjags
函数 run.jags 中,该参数method="rjags"
似乎不再起作用,但method="parallel"
确实起作用。
我正在使用 runjags_2.0.1-4 和 R 3.2.2。
所以我的问题是:
1) rjags 真的与 JAGS 4.0 不兼容吗?进入 4.0 的动机是使用向量作为索引(参见https://martynplummer.wordpress.com/2015/08/16/whats-new-in-jags-4-0-0-part-34-r-风格特征/)。
2)未使用的变量警告是怎么回事,我应该关注它吗?
谢谢,格伦
代码:
model - 使用 JAGS 进行分类预测变量的逻辑回归
我是 JAGS 的新手,我正在尝试使用 9 个非连续预测变量来预测二元结果(0/1)。预测值可能是 0、1 或 2。这是我第一次这样做,尽管我可以让模型运行,但我 100% 肯定这里肯定存在许多问题。
数据文件样本(列表)
模型
我使用来自glm()
模型的估计值作为初始值(正如 A. Gelman 所建议的那样)——但为了简单起见,我们假设我会让 JAGS 选择链的初始值。
跑步模型等
问题
我的模型的输出看起来完全不正确(当我尝试绘制它时会变得很清楚)。我敢肯定这里有一些非常基本的问题。有人可以帮忙吗?
非常感谢。
r - 在 R 的 runjags 中运行 JAGS 模型后延长老化期
R的runjags
软件包很棒。并行功能和使用extend.jags
功能的能力使我的生活变得更好。然而,有时,在我运行一个模型之后,我意识到老化阶段应该更长。如何从run.jags
输出中修剪额外的样本,以便重新估计参数分布并检查收敛?
r - 进行多个预测时 JAGS 中的定向循环误差
我使用我的 JAGS 模型,然后使用该模型进行预测,将参数不确定性传播到这些预测中。我目前有一个零膨胀泊松 (ZIP) 模型,它可以很好地进行单一预测。它看起来像这样:
但是,如果我在这个模型中插入第二个预测循环作为预测器,x4
我会得到一个错误。第二个预测循环看起来像这样,并插入到model
循环和x5
预测循环之间。
它返回此错误:
这让我感到惊讶,因为这个预测循环的格式与预测循环完全相同x5
,所以我知道应该定义所有内容,因为它以前工作得很好。有两个导致问题的原因吗?
r - run.jags 数据搜索环境
在任何带有数据块和 data= 参数的模型中,我都会从 run.jags() 中得到一些违反直觉的行为。它似乎使用 data 参数来运行实际模型,但在环境中搜索数据块中使用的任何内容。这是一个非常简单的模型的示例:
如果我像这样运行它,我会收到一个错误:
但是,如果我在调用环境中创建一个变量“y”,它会被使用,但是以一种非常奇怪的方式:
所以你可以看到它似乎使用了调用环境中的 y 来计算长度,达到 3,但使用数据列表中的 y 值来计算实际数据,达到 mu=5。
如果我使用 rjags,它会按我的预期工作,使用 data= 参数用于实际模型和数据块中派生变量的计算。
这是runjags中的错误吗?我怎样才能让它使用 data= 参数来 run.jags() 在数据块中进行计算?
我在 runjags_2.0.3-2 和 runjags_2.0.4-2 上试过这个
r - runjags 定位 JAGS 时遇到问题 - 即使在设置 jagspath 之后也会出现错误“'where' not found”
似乎 runjags 突然(更新到版本 2.0.3-2 后)找不到 JAGS 二进制文件,发出错误:
我通过将这条线放在我的Rprofile
:
这几乎可以解决问题(尽管它并不理想——以前版本的 runjags 可以自动找到二进制文件)。
但是,当通过打开与其关联的 .Rdata 文件启动 Rgui(在 Windows XP 中)时,它会停止工作:
这是一个错误吗?如何解决这个问题?
我目前正在调用runjags.options(jagspath = "c:/Program Files/JAGS/JAGS-4.2.0/i386/bin/jags-terminal.exe")
我的消息来源require(runjags)
,但我想尽可能避免这种情况!
r - JAGS/rjags 中多个组的单独贝叶斯参数估计
我正在尝试在 JAGS 中执行分层分析,从 Kruschke 的《做贝叶斯数据分析》第 9 章推断。我希望获得四个硬币(theta 的 1、2、3 和 4)正面比例的后验参数估计,来自两枚铸币厂,以及来自每个铸币厂的硬币平均偏差的估计值(铸币厂偏差:欧米茄)。我将每个铸币厂的偏差 kappa 的可变性保持为常数。问题是我无法从第二次造币厂得到后验估计,它似乎只是对先验进行抽样。有谁知道如何修复模型字符串文本(参见下面的步骤 3)以便为第二个铸币厂生成后验估计?
下面分析的整个脚本
bayesian - JAGS 中的样条混合严重
我有一个模型,可以计算带有生存数据的标记重新捕获数据的样条曲线。该模型运行良好,但计算样条曲线的参数混合得非常糟糕。
基本上,我正在计算p
由物种特定效果p.sp
和采样努力组成的重新捕获率p.effort
。我还计算了phi
具有特定物种术语phi.sp
、年份影响phi.year
、气候因素phi.sum.preci
和样条曲线的适应度分量m
。