问题标签 [stan]
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 中的 arm 或 rstanarm 包模拟感兴趣的数量?
我想知道如何从使用Rarm
中的包或rstanarm
包估计的回归模型中模拟感兴趣的数量。我是贝叶斯方法和 R 的新手,并且已经使用Zelig
包一段时间了。我之前问过一个类似的问题,但我想知道是否可以使用这些包估计的后验分布来模拟这些数量。
Zelig
您可以为独立值设置所需的值,并计算结果变量的结果(预期值、概率等)。一个例子:
因此Zelig
将 x 保持在其平均值 (20.56),并在 z = 10 时模拟感兴趣的数量。在这种情况下,y 约为 71。
使用相同的模型arm
:
并使用rstanarm
:
有没有办法用这两个包估计的后验分布来模拟 z = 10 和 x 等于它的平均值并得到 y 的期望值?非常感谢!
r - 超过 R 中的最大 DLL 数
我正在使用 RStan 从大量高斯过程 (GP) 中进行采样,即使用函数 stan()。对于我适合的每个 GP,都会加载另一个 DLL,这可以通过运行 R 命令看到
我遇到的问题是,因为我需要安装这么多独特的 GP,我超过了可以加载的 DLL 的最大数量,此时我收到以下错误:
据我所知,这是在基本 R 代码的 Rdynload.c 中设置的,如下所示:
所以,我的问题是,可以做些什么来解决这个问题?从源代码构建具有更大 MAX_NUM_DLLS 的 R 不是一种选择,因为我的代码将由不熟悉该过程的合作者运行。我尝试过使用 dyn.unload() 卸载 DLL 的简单方法,希望在再次需要时重新加载它们。卸载工作正常,但是当我再次尝试使用 fit 时,R 毫不奇怪地崩溃并出现如下错误:
我也尝试过分离 RStan,希望 DLL 会被自动卸载,但即使在卸载包后它们仍然存在(正如预期的那样,在分离的帮助中给出以下内容:“分离通常不会卸载任何动态加载的编译代码(DLL)”)。
从这个问题来看,可以在不重新启动 R 的情况下卸载 Rcpp 包 DLL 吗?,似乎library.dynam.unload()
在解决方案中可能有一些作用,但我没有成功使用它来卸载 DLL,而且我怀疑在卸载 DLL 后我会遇到与以前相同的段错误。
编辑:添加一个最小的、功能齐全的例子:
R代码:
此代码要求以下模型定义位于文件 gp-sim.stan 的工作目录中(此模型是 Stan 包含的示例之一):
注意:此代码需要相当长的时间才能运行,因为它正在创建约 100 个 Stan 模型。
stan - stan 中允许的注释字符是什么?
我已经看到//
在某些示例中使用过,但还有其他允许的注释字符。
Stan 中的注释字符是什么?全套评论规则是什么?
stan - 有没有为 Stan 提供语法高亮的 vim 插件?
Vim 中是否有对 Stan 的语法高亮支持?
r - 如何处理超过 10GB 的 stan 结果
我有一个预测时间序列的模型。所以我只有 5 个参数——然后我用它来计算时间序列,作为生成 7200x3 矩阵的转换参数——然后将其与观察结果进行比较。
到目前为止一切顺利 - 仅进行 100 次迭代时按预期工作。但是现在我使用 SNOW 来并行化这个计算来创建 6x1000 迭代。花了一个小时 - 但看起来不错。唯一的问题是我无法再加载生成的 rdata 文件。它的大小为 11GB - 可能就是这样。
我需要增加模拟的数量——所以我需要找到一种方法来处理这种大小的数据。其他人如何处理这个问题?
代码
(试图做一个简单的例子 - 所以它是可读的)
R 脚本
模型的相关部分
更新
我按照建模语言手册p41中的示例成功地重新组织了代码- 现在不再存储状态空间。不幸的是,我仍然需要这些轨迹(至少在这个开发阶段)。因此,我将保持开放状态,希望有人有一个聪明的解决方案。
r - stan/R 中的均匀分布导致抽样误差
我正在学习rstan
,目前我正在解决 Gelmans “贝叶斯数据分析”中的练习。作为参考,这是关于第 3 章中的示例 5。
它不断失败:
这是我的 R 代码:
有趣的是 - 如果我将第二个 tru_val 采样更改tru_val[i] ~ normal(o_data[i],0.5);
为模型,则评估结果会很好。
到目前为止,我尝试了 stan 代码:
- 重新排列抽样语句
- 引入辅助变量
- 明确地写
increment_log_p
陈述 - 更改变量名以防我不小心使用了关键字
- 在 stan 代码中添加打印语句
- 将 mu 设置为 10
- 放松/扩大均匀分布中的约束
- 以及以上的组合
我注意到一些令人惊讶的事情,因为我打印了 tru_val 的值 - 无论语句的顺序如何 - 我都让它打印大约 0 的值,通常在 -2 和 +2 之间 - 即使我设置mu <- 10; sigma <- 1;
(在数据部分)和采样语句tru_val[i] ~ uniform(9.5,10.5)
. 我真的不明白它是如何获得这些数字的。
我真的希望有人可以对此有所启发。
r - 如何在 Stan 中运行机器人模型?
我想在 Stan 中运行稳健的逻辑回归(robit)。该模型在 Gelman & Hill 的“使用回归和多级方法的数据分析”(2006 年,第 124 页)中提出,但我不确定如何实现它。我检查了Stan 的 Github 存储库和参考手册,但不幸的是我仍然感到困惑。这是我用来模拟常规逻辑回归的一些代码。我应该添加什么,以便错误跟随,例如,在具有 7 个自由度的分布时?无论如何,如果我运行多级分析,它会是相同的程序吗?
谢谢!
r - Stan 错误:需要不受约束的变量声明。发现单纯形
在 Stan 中,我收到以下错误:
我不太明白是什么问题。当我使用real pi[7]
而不是simplex[7] pi
,我得到了不同的错误:
我也不明白...我的整个代码:
r - JAGS 会评估 dcat 的所有父节点,还是只评估需要的一个?
假设我们有以下语句:
让我们这么说吧Y[1] = 5
。jags 会评估所有pi[1,1:100]
节点,还是唯一需要的节点,即pi[1,5]
?
根据我的经验,似乎 JAGS 评估所有父节点的效率很低,因为在我摆脱 dcat 后,我的模型加速了 3 倍。我必须使用多个 for 循环来处理不同的结果Y[i]
。
现在我意识到,dcat
在 JAGS 中实际上不需要sum(pi[]) = 1
,并且dcat
它将归一化pi[]
以使其总和为 1。这意味着它必须评估所有节点。
这是非常可悲的。是否有任何智能等价物dcat
只会评估唯一需要的一个父节点?WinBUGS 和斯坦呢?
r - 如何在 STAN 中运行最大似然优化 (BFGS)?
根据STAN 主页,STAN 能够进行惩罚最大似然 (BFGS) 优化。我正在使用 R 包rstan
,但我还没有找到任何方法来使用这种方法。我试图查看?stan
该函数的帮助stan()
,但唯一可用的选项算法是"NUTS"
and "HMC"
。
我正在使用 rstan 2.5.0 版。