#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 теперь, когда она работает?