A mechanism owns the full lifecycle of a node's conditional model, decoupled from any particular inference backend. Subclasses implement:
$fit(node, parents, data, ...)- fit the local model, returning an opaque fit object.$predict_mean(node, parents, parent_values, fit)- the conditional meanE[node | parents]for each posterior draw, as a[n_chains, n_draws]matrix (Gaussian processes use a single chain, son_chains = 1).$log_marglik(node, parents, data)- the log marginal likelihoodlog P(node | parents), used by structure discovery.$posterior_shape(fit)-c(n_chains, n_draws)for the fit.$node_terms(node, parents, data, fit)- summary rows formodel$summary().$simulate_prior(node, parents, parent_values, data, ndraws)- replicated node values drawn from the prior predictive distribution.$simulate_posterior(node, parents, parent_values, fit, draws, n)- replicated node values drawn from the posterior predictive distribution.$function_draws(node, parents, grid, data, fit, ndraws)- prior or posterior draws of the node's conditional-mean function on a grid.
Methods
Mechanism$fit()
Fit the node's local model.
Mechanism$predict_mean()
Conditional mean for each posterior draw.
Mechanism$log_marglik()
Log marginal likelihood log P(node | parents).
Mechanism$node_terms()
Summary rows for this node (used by model$summary()).
Mechanism$simulate_prior()
Simulate node values from the prior predictive distribution.
Arguments
nodeCharacter scalar - the node name.
parentsCharacter vector of parent node names.
parent_valuesNamed list of
[ndraws, n]matrices of simulated parent values, one per parent (empty for a root node).dataA
data.frame- sets the node's location/scale andn.ndrawsInteger - number of prior predictive draws.
Mechanism$simulate_posterior()
Simulate node values from the posterior predictive distribution (conditional mean plus observation noise).
Arguments
nodeCharacter scalar - the node name.
parentsCharacter vector of parent node names.
parent_valuesNamed list, one entry per parent: either a length-
nvector shared by every draw (e.g. the observed parents) or a[length(draws), n]matrix with one row per draw.fitA fit object from
$fit().drawsInteger vector - which posterior draws to use.
nInteger - number of observations to simulate per draw.
Mechanism$function_draws()
Prior (fit = NULL) or posterior draws of the node's
conditional-mean function, evaluated on a grid of parent values.