微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Stan 模型不会在 R 或 Rstudio 中编译

如何解决Stan 模型不会在 R 或 Rstudio 中编译

我在使用 R、Rstudio 或 stan 时遇到了一个我以前从未遇到过的奇怪问题。我无法在 stan 中编译任何模型。我非常有信心它不是模型。 brms 中的普通模型也无法编译。而 rstanarm 模型没有问题,据我所知是预编译的。同样,类似的模型在另一台计算机上编译也没有问题。所以,我的配置有问题,但那些东西超出了我的理解。我已经尝试过旧的删除所有内容并重新安装技巧无济于事。我担心我在清理文件时无意中删除了某些内容

我使用的是装有 Windows 10 专业版的 PC。我有 R 4.0.4。 Rstudio 1.4.1103.

每次我尝试编译 stan 模型时,我都会得到以下输出

make cmd is
  make -f "C:/PROGRA~1/R/R-40~1.4/etc/x64/Makeconf" -f "C:/PROGRA~1/R/R-40~1.4/share/make/winshlib.mk" CXX='$(CXX14) $(CXX14STD)' CXXFLAGS='$(CXX14FLAGS)' CXXPICFLAGS='$(CXX14PICFLAGS)' SHLIB_LDFLAGS='$(SHLIB_CXX14LDFLAGS)' SHLIB_LD='$(SHLIB_CXX14LD)' SHLIB="file735032f41a17.dll" WIN=64 TCLBIN=64 OBJECTS="file735032f41a17.o"

make would use
if test "zfile735032f41a17.o" != "z"; then \
  if test -e "file735032f41a17-win.def"; then \
    echo "C:/rtools40/mingw64/bin/"g++  -shared -s -static-libgcc -o file735032f41a17.dll file735032f41a17-win.def file735032f41a17.o   "C:/Users/loren/Documents/R/win-library/4.0/rstan/lib/x64/libStanServices.a" -L"C:/Users/loren/Documents/R/win-library/4.0/StanHeaders/libs/x64" -lStanHeaders -L"C:/Users/loren/Documents/R/win-library/4.0/RcppParallel/lib/x64" -ltbb  -L"C:/PROGRA~1/R/R-40~1.4/bin/x64" -lR ; \
    "C:/rtools40/mingw64/bin/"g++  -shared -s -static-libgcc -o file735032f41a17.dll file735032f41a17-win.def file735032f41a17.o   "C:/Users/loren/Documents/R/win-library/4.0/rstan/lib/x64/libStanServices.a" -L"C:/Users/loren/Documents/R/win-library/4.0/StanHeaders/libs/x64" -lStanHeaders -L"C:/Users/loren/Documents/R/win-library/4.0/RcppParallel/lib/x64" -ltbb  -L"C:/PROGRA~1/R/R-40~1.4/bin/x64" -lR ; \
  else \
    echo EXPORTS > tmp.def; \
    "C:/rtools40/mingw64/bin/"nm file735032f41a17.o | sed -n 's/^.* [BCDRT] / /p' | sed -e '/[.]refptr[.]/d' -e '/[.]weak[.]/d' | sed 's/[^ ][^ ]*/"&"/g'  >> tmp.def; \
    echo "C:/rtools40/mingw64/bin/"g++  -shared -s -static-libgcc -o file735032f41a17.dll tmp.def file735032f41a17.o   "C:/Users/loren/Documents/R/win-library/4.0/rstan/lib/x64/libStanServices.a" -L"C:/Users/loren/Documents/R/win-library/4.0/StanHeaders/libs/x64" -lStanHeaders -L"C:/Users/loren/Documents/R/win-library/4.0/RcppParallel/lib/x64" -ltbb  -L"C:/PROGRA~1/R/R-40~1.4/bin/x64" -lR ; \
    "C:/rtools40/mingw64/bin/"g++  -shared -s -static-libgcc -o file735032f41a17.dll tmp.def file735032f41a17.o   "C:/Users/loren/Documents/R/win-library/4.0/rstan/lib/x64/libStanServices.a" -L"C:/Users/loren/Documents/R/win-library/4.0/StanHeaders/libs/x64" -lStanHeaders -L"C:/Users/loren/Documents/R/win-library/4.0/RcppParallel/lib/x64" -ltbb  -L"C:/PROGRA~1/R/R-40~1.4/bin/x64" -lR ; \
    rm -f tmp.def; \
  fi \
fi
Error in compileCode(f,code,language = language,verbose = verbose) : 
  C:/rtools40/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/loren/Documents/R/win-library/4.0/rstan/lib/x64/libStanServices.a(stan_fit.o):stan_fit.cpp:(.data$_ZZN5boost4math6detail9bessel_j0IeEET_S3_E2P1[_ZZN5boost4math6detail9bessel_j0IeEET_S3_E2P1]+0x0): multiple deFinition of `boost::math::detail::bessel_j0<long double>(long double)::P1'; file735032f41a17.o:file735032f41a17.cpp:(.rdata$_ZZN5boost4math6detail9bessel_j0IeEET_S3_E2P1[_ZZN5boost4math6detail9bessel_j0IeEET_S3_E2P1]+0x0): first defined hereC:/rtools40/mingw64/bin/../lib/gcc/x86_64-w64-mingw32/8.3.0/../../../../x86_64-w64-mingw32/bin/ld.exe: C:/Users/loren/Documents/R/win-library/4.0/rstan/lib/x64/libStanServices.a(stan_fit.o):stan_fit.cpp:(.data$_ZZN5boost4math6detail9bessel_j0IeEET_S3_E2QS[_ZZN5boost4math6detail9bessel_j0IeEET_S3_E2QS]+0x0): multiple deFinition of `boost::math::detail::bessel_j0<long double>(long double)::QS'; file735032f41a17.o:file735032f41a
Error in sink(type = "output") : invalid connection

这是我第一次在论坛上提问。所以,如果我没有给你你需要的所有信息,请不要犹豫,索取。非常感谢您的帮助。

这似乎很常见:

> sessionInfo()
R version 4.0.4 (2021-02-15)
Platform: x86_64-w64-mingw32/x64 (64-bit)
Running under: Windows 10 x64 (build 19041)

Matrix products: default

locale:
[1] LC_COLLATE=English_United States.1252  LC_CTYPE=English_United States.1252    LC_MONETARY=English_United States.1252
[4] LC_NUMERIC=C                           LC_TIME=English_United States.1252    

attached base packages:
[1] stats     graphics  Grdevices utils     datasets  methods   base     

other attached packages:
 [1] rstan_2.21.2         StanHeaders_2.21.0-7 bayesplot_1.8.0      sjplot_2.8.7         survminer_0.4.8     
 [6] ggpubr_0.4.0         survival_3.2-7       rstanarm_2.21.1      brms_2.14.4          Rcpp_1.0.6          
[11] finalfit_1.0.2       lubridate_1.7.9.2    reshape2_1.4.4       googlesheets4_0.2.0  forcats_0.5.1       
[16] stringr_1.4.0        dplyr_1.0.4          purrr_0.3.4          readr_1.4.0          tidyr_1.1.2         
[21] tibble_3.0.6         ggplot2_3.3.3        tidyverse_1.3.0     

loaded via a namespace (and not attached):
  [1] readxl_1.3.1         backports_1.2.1      plyr_1.8.6           igraph_1.2.6         splines_4.0.4       
  [6] crosstalk_1.1.1      TH.data_1.0-10       rstantools_2.1.1     inline_0.3.17        digest_0.6.27       
 [11] htmltools_0.5.1.1    rsconnect_0.8.16     magrittr_2.0.1       openxlsx_4.2.3       modelr_0.1.8        
 [16] RcppParallel_5.0.2   matrixStats_0.58.0   xts_0.12.1           sandwich_3.0-0       askpass_1.1         
 [21] prettyunits_1.1.1    colorspace_2.0-0     rvest_0.3.6          xfun_0.20            haven_2.3.1         
 [26] callr_3.5.1          Crayon_1.4.1         jsonlite_1.7.2       lme4_1.1-26          zoo_1.8-8           
 [31] glue_1.4.2           gargle_0.5.0         gtable_0.3.0         emmeans_1.5.4        sjstats_0.18.1      
 [36] sjmisc_2.8.6         V8_3.4.0             car_3.0-10           pkgbuild_1.2.0       abind_1.4-5         
 [41] scales_1.1.1         mvtnorm_1.1-1        DBI_1.1.1            ggeffects_1.0.1      rstatix_0.7.0       
 [46] miniui_0.1.1.1       performance_0.7.0    xtable_1.8-4         foreign_0.8-81       km.ci_0.5-2         
 [51] stats4_4.0.4         DT_0.17              htmlwidgets_1.5.3    httr_1.4.2           threejs_0.3.3       
 [56] ellipsis_0.3.1       mice_3.13.0          pkgconfig_2.0.3      loo_2.4.1            dbplyr_2.1.0        
 [61] effectsize_0.4.3     tidyselect_1.1.0     rlang_0.4.10         later_1.1.0.1        munsell_0.5.0       
 [66] cellranger_1.1.0     tools_4.0.4          cli_2.3.0            generics_0.1.0       sjlabelled_1.1.7    
 [71] broom_0.7.4          ggridges_0.5.3       fastmap_1.1.0        knitr_1.31           processx_3.4.5      
 [76] fs_1.5.0             zip_2.1.1            survMisc_0.5.5       nlme_3.1-152         mime_0.9            
 [81] projpred_2.0.2       xml2_1.3.2           compiler_4.0.4       shinythemes_1.2.0    rstudioapi_0.13     
 [86] gamm4_0.2-6          curl_4.3             ggsignif_0.6.0       reprex_1.0.0         statmod_1.4.35      
 [91] stringi_1.5.3        parameters_0.11.0    ps_1.5.0             brobdingnag_1.2-6    lattice_0.20-41     
 [96] Matrix_1.3-2         nloptr_1.2.2.2       markdown_1.1         KMsurv_0.1-5         shinyjs_2.0.0       
[101] vctrs_0.3.6          pillar_1.4.7         lifecycle_1.0.0      bridgesampling_1.0-0 estimability_1.3    
[106] insight_0.13.0       data.table_1.13.6    httpuv_1.5.5         R6_2.5.0             promises_1.1.1      
[111] gridExtra_2.3        rio_0.5.16           codetools_0.2-18     boot_1.3-26          colourpicker_1.1.0  
[116] MASS_7.3-53          gtools_3.8.2         assertthat_0.2.1     openssl_1.4.3        withr_2.4.1         
[121] shinystan_2.5.0      multcomp_1.4-16      bayestestR_0.8.2     mgcv_1.8-33          parallel_4.0.4      
[126] hms_1.0.0            grid_4.0.4           coda_0.19-4          minqa_1.2.4          carData_3.0-4       
[131] googledrive_1.0.1    shiny_1.6.0          base64enc_0.1-3      dygraphs_1.1.1.6    

以下非常简单的 stan 模型引发了上述错误

model <- "
  data{
    int<lower=0> N;
    vector[N] Y;
    vector[N] X;
  }

  parameters{
    real beta;
    real mu;
    real<lower=0> sigma;
  }

  model{
    Y ~ normal(mu + beta*X,sigma);

    mu ~ normal(0,1);
    beta ~ normal(0,1);
    sigma ~ gamma(0.1,0.1);
  }"

stan_model(model_code = model)

解决方法

我偶然发现了一个解决方案。我重新安装了rstan。我不知道问题是什么,也不知道为什么会解决这个问题。如果其他人愿意参与进来,那将不胜感激。感谢那些对我的查询提出任何想法的人。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。