API overview

Public exports are listed on the module docstring. Prefer MediationSpec + run_mediation for new code. Certificate bridges sit beside estimation; see Getting started.

Module

CausalMediation.CausalMediationModule
CausalMediation

Cross-fitted mediation estimation for the CDCS stack: interventional (RI), natural, organic, controlled direct, and recanting-twin path-specific effects.

Depends on CausalDynamics for identification certificates and CausalTargeted for Super Learner, ShiftPolicy, fold helpers, and MTP density ratios.

Entry points

  • MediationSpec / run_mediation — typed estimate
  • run_mediation_grid — δ-grid DataFrame API
  • plan_mediation / spec_from_identification — ID bridge
  • decompose — TE / NDE / NIE (or path) extraction

Documentation

source

Effect types and specification

CausalMediation.MediationSpecType
MediationSpec(treatment, outcome; mediators, covariates, moc, policy_d0, policy_d1, effect)

Typed mediation estimand: treatment, outcome, mediators, baseline covariates, intermediate confounders (moc), shift policies, and effect family.

Arguments

  • mediators: mediator column symbols (required)
  • covariates: baseline adjustment set (often from IdentificationResult.adjustment)
  • moc: intermediate confounders; must be empty for NaturalMediation
  • policy_d0 / policy_d1: CausalTargeted ShiftPolicy for the two arms
  • effect: InterventionalMediation() by default

See also plan_mediation, run_mediation, assumptions.

source
CausalMediation.MediationResultType
MediationResult

Point estimates, SEs, influence curves, and diagnostics for a mediation run.

Fields include estimates / se (typically :te, :nde, :nie), a full δ-grid table (DataFrame), and diagnostics (n_mc, estimator, …). Use decompose for a compact TE/NDE/NIE (or path) NamedTuple.

source

Identification bridge

CausalMediation.plan_mediationFunction
plan_mediation(spec, id_result; shift) -> MediationSpec

Certificate-first planning: merge adjustment / mediators / moc from a CausalDynamics IdentificationResult into a concrete MediationSpec (mirrors CausalTargeted plan_mtp).

Empty fields on spec are filled from the certificate; nonempty fields are kept. Optional shift replaces both policy_d0 and policy_d1.

source
CausalMediation.spec_from_identificationFunction
spec_from_identification(id_result; effect, policy_d0, policy_d1) -> MediationSpec

Build a MediationSpec from an IdentificationResult whose query is a CausalDynamics MediationQuery.

Uses id_result.adjustment, .mediators, and .moc. When effect is the default :interventional and the query carries a different effect_kind, that kind is preferred.

source

Estimation

CausalMediation.run_mediationFunction
run_mediation(spec, data; folds, learners, estimator, deltas, n_mc, kwargs...) -> MediationResult

Canonical mediation entry point. Dispatches on spec.effect and returns a MediationResult whose table is the δ-grid from run_mediation_grid.

Keyword arguments

  • estimator: :plugin, :onestep (default), or :tmle
  • deltas: MTP shift grid (defaults to CausalTargeted default_deltas())
  • n_mc: nested mediator Monte Carlo draws per unit (default 32)
  • folds, learners, parallel, cache_nuisances: Super Learner / cross-fit controls from CausalTargeted

Natural effects with nonempty spec.moc are refused by assert_natural_admissible!.

source
CausalMediation.run_mediation_gridFunction
run_mediation_grid(data, trt, outcome; covar, mediators, moc, deltas, estimator, effect, kwargs...) -> DataFrame

Mediation δ-grid as a DataFrame (rows for TE / NDE / NIE × δ × stratum). Supports optional moc intermediate confounders and estimator ∈ (:plugin, :onestep, :tmle).

Prefer run_mediation with a MediationSpec when you already have an identification certificate. Pass effect to select natural / organic / RT / controlled-direct families (default InterventionalMediation()).

source
CausalMediation.run_tmle3_ndeFunction
run_tmle3_nde(data, treatment, outcome; baseline, mediators, folds, rng) -> DataFrame

Cross-fitted SuperLearner interventional NDE with one-step TMLE targeting.

source

Influence functions and caches

CausalMediation.build_mediation_fold_cacheFunction
build_mediation_fold_cache(df, outcome, trt, covar, mediators, folds, rng; learners, moc) -> MediationFoldCache

Cross-fit Super Learner fits for outcome, mediators, optional moc, and exposure, reused across δ values on a mediation grid.

source

Diagnostics and synthetics

CausalMediation.mediation_n_mc_sweepFunction
mediation_n_mc_sweep(data, trt, outcome; covar, mediators, n_mc_values, delta, kwargs...) -> DataFrame

Re-fit mediation NDE/NIE/TE at a single delta for each n_mc in n_mc_values. Useful for checking whether nested-MC noise dominates inference.

source
CausalMediation.simulate_recanting_twin_mediationFunction
simulate_recanting_twin_mediation(n; ...) -> (df, truth)

Two-mediator DGP with a recanting structure: A → M1 → M2 → Y and A → M2, so natural effects are not identified without path-specific (RT) assumptions.

source

Target trial and Riesz

CausalMediation.target_trial_mediationFunction
target_trial_mediation(...) -> MediationSpec

Build an interventional MediationSpec from target-trial contrasts. Policies use raw additive shifts of intervention_d0 / intervention_d1 (SD-scale via ShiftPolicy).

source
CausalMediation.fit_riesz_representerFunction
fit_riesz_representer(X, y; kwargs...) -> Any

Fit a Riesz representer for high-dimensional mediators / moc. Requires using Lux so the weakdep extension loads. Without Lux, throws.

source

PPL helpers

CausalMediation.prepare_ppl_mediation_specFunction
prepare_ppl_mediation_spec(g, treatment, outcome, data, covar, mediators; node_names) -> NamedTuple
prepare_ppl_mediation_spec(treatment, outcome, data, covar, mediators; kwargs...) -> NamedTuple

Prepare a NamedTuple for PPL / RxInfer-style mediation workflows. With a graph and node_names, delegates to CausalDynamics prepare_for_rxinfer when available; otherwise returns a generic identifiable spec.

source