Модель Stan не будет компилироваться в R или Rstudio

#c #r #stan #rstan

#c #r #stan #rstan

Вопрос:

У меня возникла странная проблема, с которой я раньше не сталкивался при использовании R, Rstudio или stan. Я не могу получить какую-либо модель для компиляции в stan. Я уверен, что это не модели. тривиальные модели в brms также не компилируются. В то время как модели rstanarm не имеют проблем, будучи предварительно скомпилированными, насколько я понимаю. Аналогично, аналогичные модели без проблем компилируются на другом компьютере. Итак, что-то не так с моими конфигурациями, но это выше моего понимания. Я пробовал старый трюк удаления всего и переустановки, но безрезультатно. Меня беспокоит, что я что-то удалил, не осознавая этого, во время очистки файлов.

Я нахожусь на ПК с Windows 10 pro. У меня есть 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/[^ ][^ ]*/"amp;"/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)
 

Комментарии:

1. Вы установили rtools и правильно указали путь: cran.r-project.org/bin/windows/Rtools . (rstanarm может работать, поскольку он «Оценивает ранее скомпилированные регрессионные модели», тогда как в rstan компилируется каждая новая модель)

2. multiple definition of boost::math::detail::bessel_j0... это наиболее важная часть сообщения об ошибке, но будет трудно понять, в чем проблема, если вы не сможете опубликовать какой-нибудь Stan-код, который ее запускает.

3. Спасибо за ответы. Я действительно считаю, что у меня установлены Rtools и путь задан правильно. Что касается кода stan, который запускает это … все запускает это. Я добавил модель stan, которая вызывает ошибку.

4. Джентльмены, по наитию я попробовал переустановить rstan. Это решило проблему. Простая модель выше и более сложные модели теперь компилируются. Однако я получаю следующее предупреждающее сообщение: Warning message: In system(paste(CXX, ARGS), ignore.stdout = TRUE, ignore.stderr = TRUE) : 'C:/rtools40/usr/mingw_/bin/g ' not found стоит ли мне об этом беспокоиться?

5. @MpirikL Не беспокойтесь об этом предупреждающем сообщении.

Ответ №1:

Я смог наткнуться на решение. Я переустановил rstan. Я понятия не имею, в чем была проблема и почему это ее устранило. Если другие хотели бы принять участие, это было бы очень ценно. Спасибо тем, кто вложил хоть какую-то мысль в мой запрос.

Комментарии:

1. Ваша (gnu) команда make имеет два параметра. Это кажется странным, потому что опция -f указывает make-файл, а AFAIK обычно требуется только один. Один из способов отладки команды make — использовать параметр -n . Затем вы можете проверить команды сборки, не запуская сборку в качестве проверки смысла. Как выглядит команда make теперь, когда она работает?