pub fn sample_conditional_interventional(
model: &CompiledCausalModel,
interventions: &[Intervention],
condition_nodes: &[DenseNodeId],
condition_values: &[f64],
n_rows: usize,
rng: &mut CausalRng,
ws: &mut MechanismWorkspace,
ctx: &ExecutionContext,
) -> Result<ValueBatch, ModelError>Expand description
Sample under interventions conditioned on observed node values.
Strategy:
- Rejection sampling when conditions match within
1e-9(exact / discrete). - Likelihood-weighting SIR when rejection under-accepts: propose from
do(·), weight by∏_c p(condition_c | parents_c)via [log_prob_column], resample.
Conditioning nodes must not be hard-intervened.
§Errors
Empty condition, intervened condition nodes, density failures, or empty weights.