我试图跟随一系列的人口分析的Stan模型教程和演示,它们是基于Kéry和Schaub的“贝叶斯总体分析”中的模型和代码。我突然遇到了一些解析失败,我不熟悉Stan代码。我检查了stan手册(可在此下载)中不推荐的特性,但据我所知,代码看起来是最新的。
以下是一些会话信息:r版本4.0.3,rstan_2.21.5,StanHeaders_2.21.0-7,Rcpp_1.0.9,RcppParallel_5.1.5
当我在链接的GitHub站点上运行任何一个示例模型时,都会遇到相同的错误:
SYNTAX ERROR, MESSAGE(S) FROM PARSER:
error in 'modelxyz' at line 6, column 20
-------------------------------------------------
4:
5: functions {
6: int first_capture(array[] int y_i) {
^
PARSER EXPECTED: <argument declaration or close paren ) to end argument declarations>
Error in stanc(file = file, model_code = model_code, model_name = model_name, :
failed to parse Stan model 'cjs_age' due to the above error.
In addition: Warning message:
In readLines(file, warn = TRUE) :
incomplete final line found on '~/example-models/BPA/Ch.07/cjs_age.2.stan'例如,R脚本在提供了名为"7.7_Models_with_age_effects.R“的链接上调用Stan模型,其中包含模型"cjs_age.stan”和数据"cjs_age.data.R“。我还在代码中寻找缺失的分号,但在我看来,这一切都是正确的,因为我对stan语法并不熟悉。任何帮助都将不胜感激。
发布于 2022-07-20 08:01:19
我以前从未见过将int数组声明为输入的方式。这要么是一个很老的斯坦版本,要么是一个全新的版本,或者是我不知道的另一种方式。无论如何,您应该能够通过指定这样的int数组来修复代码:
functions {
int first_capture(int[] y_i) {https://stackoverflow.com/questions/72983015
复制相似问题