Skip to content
Scenario1 min read

Observational Treatment Effect Estimation in Python

How to estimate treatment effects from observational data in Python with Causalis, CausalData, IRM, overlap checks, balance diagnostics, and sensitivity analysis.

Observational Treatment Effect Estimation in Python

Use Causalis for observational treatment effect estimation in Python when treatment was not randomized but the important confounders are observed and overlap is plausible. The Causalis workflow uses CausalData, IRM, and diagnostics for overlap, score behavior, balance, and sensitivity.

The causal claim depends on assumptions. For observational data, state SUTVA/consistency, unconfoundedness given observed covariates, and overlap/positivity.

Minimal Observational Example

Data Shape

The dataframe should include:

  • a treatment column;
  • an outcome column;
  • pre-treatment confounders that affect treatment assignment and outcome;
  • optional user or unit identifier;
  • no post-treatment variables in the confounder list.

Diagnostics

When Not to Use This Workflow

  • Key confounders are unobserved and no credible instrument or panel design is available.
  • Treatment and control groups have little or no overlap.
  • Confounders include post-treatment variables.
  • The data are better described as a randomized experiment, DiD panel, synthetic-control panel, or IV design.

Common Mistakes

  • Saying the estimate is causal without explaining identification assumptions.
  • Keeping post-treatment variables in confounders.
  • Ignoring extreme propensities or weak overlap.
  • Treating a flexible ML model as a substitute for study design.