Skip to main content

A Python toolkit for causal inference and experimentation

Project description

Causalis

Python PyPI Downloads License: MIT Code quality

Causalis logo

Robust causal inference for experiments and observational studies in Python, organized around scenarios (e.g., Classic RCT, CUPED, Unconfoundedness) with a consistent fit() → estimate() workflow.

Why Causalis?

Causalis focuses on:

  • Scenario-first workflows (you pick the study design; Causalis provides best-practice defaults).
  • Guardrails and diagnostics (e.g., SRM checks, balance checks).
  • Typed data contracts (CausalData) to fail fast on schema issues.

Installation

Recommended

pip install causalis

Quickstart: Classic RCT (difference in means + inference)

from causalis.dgp import generate_classic_rct_26
from causalis.scenarios.classic_rct import DiffInMeans, check_srm

# Synthetic RCT data as a validated CausalData object
data = generate_classic_rct_26(seed=42, return_causal_data=True)

# Optional: Sample Ratio Mismatch check
srm = check_srm(data, target_allocation={0: 0.5, 1: 0.5}, alpha=1e-3)
print("SRM detected?", srm.is_srm, "p=", srm.p_value, "chi2=", srm.chi2)

# Estimate treatment effect with t-test inference (or bootstrap / conversion_ztest)
result = DiffInMeans().fit(data).estimate(method="ttest", alpha=0.05)
result.summary()

Quickstart: Observational study (Unconfoundedness / DML IRM)

from causalis.scenarios.unconfoundedness.dgp import generate_obs_hte_26
from causalis.scenarios.unconfoundedness import IRM
from causalis.data_contracts import CausalData

causaldata = generate_obs_hte_26(return_causal_data=True, include_oracle=False)

from causalis.scenarios.unconfoundedness import IRM

model = IRM().fit(causaldata)
result = model.estimate(score='ATTE')
result.summary()

Pick your scenario

Classic RCT: randomized assignment (no pre-period metric).

CUPED: randomized assignment with pre-period metric for variance reduction.

Unconfoundedness: observational study adjusting for measured confounders (DML IRM).

See scenario notebooks: https://causalis.causalcraft.com/explore-scenarios

Responsible use / limitations

Causal estimates require identification assumptions (e.g., randomization or unconfoundedness + overlap). Causalis can help with diagnostics, but it cannot guarantee assumptions hold in your data.

Contributing

Contributions are welcome—bug reports, docs fixes, notebooks, and new estimators. Please read CONTRIBUTING.md and follow the Code of Conduct.

Getting help

Questions: GitHub Discussions

Bugs: GitHub Issues (include minimal repro + versions)

License

MIT (see LICENSE).

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

causalis-0.2.5.tar.gz (251.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

causalis-0.2.5-py3-none-any.whl (299.9 kB view details)

Uploaded Python 3

File details

Details for the file causalis-0.2.5.tar.gz.

File metadata

  • Download URL: causalis-0.2.5.tar.gz
  • Upload date:
  • Size: 251.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for causalis-0.2.5.tar.gz
Algorithm Hash digest
SHA256 9bb87711545b4e0f35f3e029801d6cea0212a9ca15745d8675b13de557f92a30
MD5 3306f6808d07825fb5529e87e3825631
BLAKE2b-256 a9a46b741c1d7771349ed0f3dffe072b2d70aff5541df5fb11b80f90a54e2f60

See more details on using hashes here.

File details

Details for the file causalis-0.2.5-py3-none-any.whl.

File metadata

  • Download URL: causalis-0.2.5-py3-none-any.whl
  • Upload date:
  • Size: 299.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.2

File hashes

Hashes for causalis-0.2.5-py3-none-any.whl
Algorithm Hash digest
SHA256 cd593cf8aeef61b3dfd1d5cf53bf13deefeb818d5500b60f4f305a8dd8162d5b
MD5 70b1fa4273e10155a6b5b4c0306080d3
BLAKE2b-256 85817dbd974a4b6a6b8f20a22118a0b57a17adb832d3ac2feb7cc5861aa6a819

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page