I am trying to write a C++ program within which posterior samples are generated using Stan’s sampler and then those samples go on to be part of another calculation, rather than returning the samples and calling a new function externally.
I have generated the .hpp file using stanc, which defines a new class, e.g. gaussian_model
. I then assume I can generate a new model as something like
gaussian_model model(stan::io::var_context &context, unsigned int seed, ...);
then pass model
as an argument to stan::services::sample::hmc_nuts_diag_e_adapt
. However, I am having trouble working out, or finding examples, about how to construct a stan::io::var_context
object. The array_var_context
class seems to have constructors that match more the type of data that might be input and I could translate the data into std::vector
, but how do you generate the var_context
from the array_var_context
?. I can also generate a JSON file of the data for the model or other required format. Is there a way of generating a var_context
given these files?
The sampler can be called with stan::services::sample::hmc_nuts_diag_e_adapt
, which takes the model object as an argument, and also another stan::io::var_context
object. Is this right that this var_context
is the initial values for the parameters and chains? If so, what structure should these be in?