This might be a basic question, but a search on relevant terms did not reveal a discussion. Apologies if I missed anything.
I have estimated a model with rstan, and I would like to save the model fit object to send to a colleague, who wishes to extract posterior samples, calculate WAIC, etc. Formerly, I have saved model fits as an R object (*.robj) file. When I try that with a Stan model, however, attempts to load it into a new R workspace result in an error (“error reading from connection”). It occurs to me that rstan models might be tied to their C++ compiler somehow . . .
How is it possible to save and share rstan fit objects?
Thanks,
Jeremy
You first have to kill the Dynamic Shared Object inside the stanmodel slot of a stanfit object. Like
fit@stanmodel@dso <- new("cxxdso")
saveRDS(fit, file = "fit.rds")
Of course, only do that when you are done with it because you would have to recompile to estimate with it further.
7 Likes
That seems straightforward enough, but I just tried it and hit a snag.
That is, when I try to load the saved model, I get an error:
fit@stanmodel@dso <- new("cxxdso")
saveRDS(fit, file = "fit.rds")
rm(fit)
load("fit.rds")
Error: bad restore file magic number (file may be corrupted) – no data loaded
In addition: Warning message:
file 'fit.rds’ has magic number ‘X’
** Use of save versions prior to 2 is deprecated**
1 Like
Sorry, I should have looked a little closer. Reading in the models with readRDS seemingly took care of it.
fit <- readRDS("fit.rds")
Thanks, Ben.
2 Likes
Can I get a checkmark on my previous post so that it bubbles up to the top of the thread for future reference?