问题标签 [rstan]
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 - 与 Stan 一起使用时未定义的 Rcpp 函数
我有一个将Rcpp用于某些内部功能的 R 包。这些函数不会导出供用户直接访问(请参阅rcpptest存储库中的最小可重现示例)。
我现在尝试将Stan代码添加到src/
安装包时要编译的目录(rcppstan存储库中的可重现示例)。但是,当我修改包以使用 Stan 时,我在 R CMD CHECK 中收到以下错误:
事实上,当我尝试调用使用该meanC
函数的 R 函数时,我收到一条错误消息Error in meanC(x) : object '_rcppstan_meanC' not found
。
据我所知,这是当我修改包以使用rstan时发生的变化,因此可能是原因。
仅使用Rcpp时,以下内容位于
/li>src/RcppExports.cpp
:合并Stan后,文件中不再生成该代码
/li>src/RcppExports.cpp
。相反,这似乎是由rstantools包src/init.cpp
创建的文件处理的。该文件中的相关块在这里:
为什么中的代码src/init.cpp
使Rcpp函数未定义?相反,有没有一种方法可以编辑src/init.cpp
,以便Stan模型能够正确编译和访问,同时仍然允许定义Rcpp函数?
r - 在 Stan/RStan 中实现指数一般线性模型
我有以下模型:
我想学习如何实现这个模型。
研究与尝试
我以以下 Poisson GLM 为例:
我了解此示例使用了 QR 重新参数化(请参阅 Stan 参考手册的第 9.2 节)。但是,由于我是 Stan 的新手,我觉得这很吓人,而且我不确定如何以同样的方式实现指数 GLM。甚至需要对指数情况使用 QR 重新参数化吗?
无论如何,我对指数 GLM 的天真尝试是对 Poisson GLM 代码的以下改编:
但是,我完全不确定这是否是在 Stan 中编写这样一个模型的正确方法。我所做的只是尝试使 Poisson GLM 示例适应上述指数 GLM。
我正在寻求指数 GLM 的演示,并澄清我上面的误解。
样本数据
r - 在 Stan 中开发非线性增长曲线模型的分层版本
以下模型是 Preece and Baines (1978, Annals of Human Biology ) 的模型 1,用于描述人类的成长。
我的这个模型的斯坦代码如下:
我现在想创建此模型的分层版本,其参数建模在男孩之间相同(例如测量变异性sigma
)或分层版本(例如 h_1,成人身高)。
至于参数sigma
和theta
,我想保持这些先验在男孩之间与sigma ~ student_t(2, 0, 1);
和相同theta ~ normal(10, 5);
。
不幸的是,我几乎没有实施分层建模的经验,而且我一直在努力尝试做任何分层示例,而不是贝叶斯教科书中的简单二项式分层模型(参见 Richard McElreath 的Statistical Rethinking的第 12 章,第 358-359 页)。然而,我确实理解层次建模背后的理论,正如Andrew Gelman的Bayesian Data Analysis第 5 章和Richard McElreath的Statistical Rethinking的第 12 章所写的那样。
我很想知道如何在 Stan 中实现这种类型的层次模型。理想情况下,我会在代码旁边寻求解释,以便将来我可以学习如何独立实现这些类型的分层模型示例。
我的数据样本如下:
我承认小数位不精确。数据采用 tibble 表的形式,似乎没有响应 R 的常用命令以获得更高的精度。为了保持一致性,最好直接忽略第 5 行之后的所有行,因为第 1 - 5 行显示原始数据中存在的完整精度。
在完整的数据中,年龄是
并且有 39 个男孩,以与上述样本相同的宽数据格式列出。
r - R中非常慢的STAN代码
我正在尝试在 R 中拟合贝叶斯模型。我已经尝试了所有可用的软件包(rstanarm 和 brms),但它们需要几个小时。这就是我尝试编写 stan 代码的原因。为了让您了解模型,我正在尝试拟合具有随机效应(弹性)的对数模型。因此,在使用 log1p 转换我的数据后,我运行以下代码:
即使我只包含一个截距和一个回归量,拟合模型也需要 1 个小时以上。有任何想法吗 ?
以及我如何称呼斯坦:
r - 当一个参数依赖于RSTAN中的另一个时如何解决
我有一个 Stan 代码,其中一个模型参数取决于另一个参数。我总共有 5 个参数:mu, alpha,beta, gamma, delta。现在 beta 在某种程度上依赖于 alpha——
.参数块目前看起来像:
如何将 beta 的下限放在参数块内?
代码是:
r - 如何从保存的 CSV 文件中的 stanfit 对象获取运行时间
我有一个stanfit
保存在 csv 中的对象。
在文件末尾的 csv 中,提到了模型运行所需的时间。
因为我有很多模型,并且我想看看所有模型的总运行时间是多少,所以我正在考虑使用读取所有 csv,然后从每个模型中获取时间并对它们求和。read_stan_csv
elapsed time
问题是我在阅读 csv 后找不到。
有任何想法吗 ?
r - R Prophet 在循环中使 Rstudio 崩溃
我已经在 Windows 上的 R 中使用了几个月的先知,最近开始看到随机的 RStudio 崩溃。在几天前,我没有任何问题。我知道这没什么好说的,但我希望有人能认出我的系统可能发生了什么。我注意到当 n.changepoints 高于默认值 25 时,它会更频繁地崩溃。
我在 R 3.4 和 3.5 上都看到了崩溃。我已经正确安装了 Rtools,并且可以按照Rstan 安装中的说明内联编译 cpp 代码。
这是我正在开发的系统。我有最新版本的先知和 Rcpp。
这是我正在运行的代码。有时(1/5 次?)会导致 Rstudio 因“会话终止”错误而崩溃。
如果您曾经遇到过这样的事情或知道我可以做些什么来提供更多信息,请指教!
编辑:我使用的是 Rstudio 1.1.447。这也发生在 Rgui 和 R 命令行中。
output - rstan 如何为单独的链存储后验样本?
我想了解 in 的输出如何对extract
后rstan
验样本进行排序。我知道我可以通过使用查看每个链的后验样本as.array
,
例如,fitarray[, 2, 1]
会给我第一个参数的第二个链的样本。将后验样本存储在输出中的一种方法是extract
将它们连接起来。当我做,
对于几个链和参数,我总是得到TRUE
(ss
是第一个参数)。这使得后验样本似乎被连接到fit
. 然而,当我这样做时,
我明白FALSE
了(确认不仅仅是精度差异)。似乎fitarray
并且fit
以不同的方式存储迭代。如何分别查看每个后验样本链的迭代(按顺序)?
r-markdown - Stan 代码块在 HTML 输出中不可见
在 R 笔记本中(使用html_notebook
输出类型),“预览”按钮会生成一个.nb.html
文件,其中 Stan 代码块无法出现。有谁知道为什么?这是一个错误吗?
澄清: Stan 代码块运行得很好。输出可用于未来的代码块。但在呈现的 HTML 文件中,Stan 代码是不可见的。
这是一个完整的降价文档作为可重现的示例。
bayesian - 使用 rstan MCMC 对简单二项式 GLM 进行低效采样
我正在尝试使用rethinking
包拟合二项式 GLM(利用rstan
MCMC)。
该模型适合,但采样效率低下,Rhat 表示出了点问题。我不明白这个拟合问题的原因。
这是数据:
这是模型:
拟合诊断(Rhat,有效样本数)表明出现问题:
跟踪图没有显示“肥毛毛虫”:
stan 输出建议增加两个参数adapt_delta
和max_treedepth
,我这样做了。这在一定程度上改进了采样过程:
配对图看起来也很奇怪:
我还尝试了什么:
- 我对预测器进行了中心化/z 标准化(产生了这个错误:““sampler$call_sampler 中的错误(args_list[[i]]):初始化失败。”)
- 我尝试了普通模型(但它是计数数据)
- 我检查了没有遗漏(没有)
- 我将迭代次数增加到4000,没有改善
- 我增加了先验的 sd(模型需要很长时间才能适应)
但到目前为止没有任何帮助。拟合无效的原因可能是什么?我可以尝试什么?
每个中的大计数会是一个问题吗?
数据摘录:
会话信息: