The $profiles() method returns a list of data frames with
profiling data if any profiling data was written to the profile CSV files.
See save_profile_files() to control where the files are saved.
Profiling requires adding profiling statements to the Stan program. See Examples for a demonstration.
Examples
# \dontrun{
# first fit a model using MCMC
mcmc_program <- write_stan_file(
'data {
int<lower=0> N;
array[N] int<lower=0,upper=1> y;
}
parameters {
real<lower=0,upper=1> theta;
}
model {
profile("likelihood") {
y ~ bernoulli(theta);
}
}
generated quantities {
array[N] int y_rep;
profile("gq") {
y_rep = bernoulli_rng(rep_vector(theta, N));
}
}
'
)
mod_mcmc <- cmdstan_model(mcmc_program)
data <- list(N = 10, y = c(1,1,0,0,0,1,0,1,0,0))
fit <- mod_mcmc$sample(data = data, seed = 123, refresh = 0)
#> Running MCMC with 4 sequential chains...
#>
#> Chain 1 finished in 0.0 seconds.
#> Chain 2 finished in 0.0 seconds.
#> Chain 3 finished in 0.0 seconds.
#> Chain 4 finished in 0.0 seconds.
#>
#> All 4 chains finished successfully.
#> Mean chain execution time: 0.0 seconds.
#> Total execution time: 0.5 seconds.
#>
fit$profiles()
#> [[1]]
#> name thread_id total_time forward_time reverse_time chain_stack
#> 1 gq 140391589312320 0.000147451 0.000147451 0.000000000 0
#> 2 likelihood 140391589312320 0.000656777 0.000470151 0.000186626 6721
#> no_chain_stack autodiff_calls no_autodiff_calls
#> 1 0 0 1000
#> 2 6721 6721 1
#>
#> [[2]]
#> name thread_id total_time forward_time reverse_time chain_stack
#> 1 gq 140312295630656 0.000181678 0.000181678 0.000000000 0
#> 2 likelihood 140312295630656 0.000676161 0.000468609 0.000207552 6792
#> no_chain_stack autodiff_calls no_autodiff_calls
#> 1 0 0 1000
#> 2 6792 6792 1
#>
#> [[3]]
#> name thread_id total_time forward_time reverse_time chain_stack
#> 1 gq 140047924557632 0.000133194 0.000133194 0.000000000 0
#> 2 likelihood 140047924557632 0.000671644 0.000484796 0.000186848 6797
#> no_chain_stack autodiff_calls no_autodiff_calls
#> 1 0 0 1000
#> 2 6797 6797 1
#>
#> [[4]]
#> name thread_id total_time forward_time reverse_time chain_stack
#> 1 gq 139832440641344 0.000129943 0.000129943 0.000000000 0
#> 2 likelihood 139832440641344 0.000754104 0.000564312 0.000189792 6979
#> no_chain_stack autodiff_calls no_autodiff_calls
#> 1 0 0 1000
#> 2 6979 6979 1
#>
# }