Data Fields | |
| int | accept_count |
| int(* | base_adapt_fn )(struct apop_mcmc_proposal_s *ps, struct apop_mcmc_settings *ms) |
| apop_model * | base_model |
| void(* | base_step_fn )(double const *, struct apop_mcmc_proposal_s *, struct apop_mcmc_settings *) |
| int | block_count |
| size_t * | block_starts |
| double | burnin |
| apop_data * | data |
| char | gibbs_chunks |
| int | histosegments |
| double | last_ll |
| long int | periods |
| apop_model * | pmf |
| int | proposal_count |
| int | proposal_is_cp |
| apop_mcmc_proposal_s * | proposals |
| int | reject_count |
| char | start_at |
| double | target_accept_rate |
Method settings for a model to be put through Bayesian updating.
| int apop_mcmc_settings::accept_count |
After calling apop_model_metropolis, this will have the number of accepted proposals.
| int(* apop_mcmc_settings::base_adapt_fn)(struct apop_mcmc_proposal_s *ps, struct apop_mcmc_settings *ms) |
If a apop_mcmc_proposal_s has NULL adapt_fn, use this. If you don't want an adapt function, set this to a do-nothing function.
| apop_model * apop_mcmc_settings::base_model |
The model you provided with a log_likelihood or p element (which need not sum to one). You do not have to set this: if it is NULL on input to apop_model_metropolis, I will fill it in.
| void(* apop_mcmc_settings::base_step_fn)(double const *, struct apop_mcmc_proposal_s *, struct apop_mcmc_settings *) |
If an apop_mcmc_proposal_s struct has NULL step_fn, use this. If you don't want a step function, set this to a do-nothing function.
| size_t * apop_mcmc_settings::block_starts |
For internal use
| double apop_mcmc_settings::burnin |
What percentage of the periods should be ignored as initialization. That is, this is a number between zero and one.
| char apop_mcmc_settings::gibbs_chunks |
See the apop_model_metropolis documentation for discussion.
'a': One step draws and accepts/rejects all parameters as a unit
'b': draw in blocks: the vector is a block, the matrix is a separate block, the weights are a separate block, and so on through every page of the model parameters. Each block of parameters is drawn and accepted/rejected as a unit.
'1': draw each parameter and accept/reject separately. One MCMC step consists of a set of draws for every parameter.
| int apop_mcmc_settings::histosegments |
If outputting a binned PMF, how many segments should it have?
| double apop_mcmc_settings::last_ll |
If you have already run MCMC, the last log likelihood in the chain.
| long int apop_mcmc_settings::periods |
For how many steps should the MCMC chain run?
| apop_model * apop_mcmc_settings::pmf |
If you have already run MCMC, I keep a pointer to the model so far here. Use apop_model_metropolis_draw to get one more draw.
| int apop_mcmc_settings::proposal_count |
The number of proposal sets; see gibbs_chunks below.
| int apop_mcmc_settings::proposal_is_cp |
For internal use.
| apop_mcmc_proposal_s * apop_mcmc_settings::proposals |
The list of proposals. You can probably use the default of adaptive multivariate normals. See the apop_mcmc_proposal_s struct for details.
| int apop_mcmc_settings::reject_count |
After calling apop_model_metropolis, this will have the number of rejected proposals.
| char apop_mcmc_settings::start_at |
If '1' (the default), start with a first proposal of all 1s. Even when this is a far-from-useful starting point, MCMC typically does a good job of crawling to better spots early in the chain.
The default when this is unset is to start at the parameters of the apop_model sent in to apop_model_metropolis.
| double apop_mcmc_settings::target_accept_rate |
The desired acceptance rate, for use by adaptive proposals. Default: .35