Skip to main content

Comprehensive Python library for policy evaluation and causal inference

Project description

KRL Causal Policy Toolkit

Python Version License Tests Coverage Documentation

Comprehensive Python library for policy evaluation and causal inference

KRL Causal Policy Toolkit provides state-of-the-art methods for estimating treatment effects, conducting policy analysis, and generating publication-ready reports. Built for policy analysts, economists, and researchers who need rigorous causal inference tools with practical usability.

โœจ Key Features

๐ŸŽฏ Treatment Effect Estimation

  • Basic Methods: Difference-in-Means, Regression Adjustment, IPW, Doubly Robust
  • Panel Methods: Difference-in-Differences with TWFE and event studies
  • Matching: Propensity Score Matching with multiple algorithms
  • Advanced: Synthetic Control, Regression Discontinuity, Instrumental Variables

๐Ÿ“Š Policy Evaluation

  • Unified Interface: Automatic method selection and comparison
  • Cost-Benefit Analysis: NPV, IRR, BCR with Monte Carlo simulation
  • Sensitivity Analysis: Rosenbaum bounds, E-values, specification curves
  • Diagnostics: Balance tests, parallel trends, placebo tests

๐Ÿ“ Automated Reporting

  • Multiple Formats: HTML, LaTeX, Markdown
  • Publication-Ready: Bootstrap styling, academic formatting
  • Comparison Tables: Side-by-side method comparisons
  • Professional Output: Executive summaries and technical appendices

๐Ÿ“ฆ Built-in Datasets

  • 5 Policy Datasets: NSW, Medicaid, Minimum Wage, Education Voucher, SNAP
  • Ready-to-Use: Pre-configured with proper metadata
  • Realistic: Synthetic data with proper causal structure

๐Ÿš€ Installation

pip install krl-causal-policy-toolkit

Requirements: Python 3.9+, NumPy, pandas, SciPy, scikit-learn

Optional dependencies for report generation:

pip install krl-causal-policy-toolkit[reporting]

Development installation:

git clone https://github.com/KR-Labs/krl-causal-policy-toolkit.git
cd krl-causal-policy-toolkit
pip install -e ".[dev]"

๐Ÿ“– Quick Start

Basic Treatment Effect Estimation

from krl_policy import TreatmentEffectEstimator, load_policy_dataset

# Load built-in dataset
dataset = load_policy_dataset("nsw")

# Estimate treatment effect with doubly robust method
estimator = TreatmentEffectEstimator(method="doubly_robust")
result = estimator.fit(
    y=dataset.outcome,
    treatment=dataset.treatment,
    X=dataset.covariates_data
)

print(f"Treatment Effect: {result.ate:.3f}")
print(f"95% CI: [{result.ci_lower:.3f}, {result.ci_upper:.3f}]")
print(f"P-value: {result.p_value:.4f}")

Difference-in-Differences Analysis

from krl_policy import DifferenceInDifferences, load_policy_dataset

# Load panel dataset
dataset = load_policy_dataset("medicaid")

# Run DiD analysis
did = DifferenceInDifferences()
result = did.fit(
    data=dataset.data,
    outcome_col="insurance_rate",
    treatment_col="medicaid_expansion",
    unit_col="state",
    time_col="year",
    covariates=["poverty_rate", "unemployment"]
)

print(f"Treatment Effect: {result.estimate:.3f}")

# Event study
event_study = did.event_study(
    data=dataset.data,
    outcome_col="insurance_rate",
    treatment_col="medicaid_expansion",
    unit_col="state",
    time_col="year"
)

Unified Policy Evaluation

from krl_policy import PolicyEvaluator, load_policy_dataset

dataset = load_policy_dataset("nsw")

# Compare multiple methods automatically
evaluator = PolicyEvaluator()
result = evaluator.evaluate(
    y=dataset.outcome,
    treatment=dataset.treatment,
    X=dataset.covariates_data,
    methods=["regression", "ipw", "doubly_robust", "matching"]
)

# Print comparison table
print(result.summary())

# Get recommended estimate
best = result.get_best_estimate()
print(f"Recommended Method: {best.method}")
print(f"Effect: {best.estimate:.3f}")

Generate Professional Reports

from krl_policy import ReportGenerator, TreatmentEffectEstimator, load_policy_dataset

dataset = load_policy_dataset("nsw")
estimator = TreatmentEffectEstimator(method="doubly_robust")
result = estimator.fit(
    y=dataset.outcome,
    treatment=dataset.treatment,
    X=dataset.covariates_data
)

# Create report in multiple formats
report = ReportGenerator(
    title="NSW Job Training Evaluation",
    author="Your Name"
)

report.add_title("Results")
report.add_estimate(result.get_estimate(), label="Average Treatment Effect")
report.add_diagnostics(result.diagnostics)

# Save in HTML, LaTeX, and Markdown
report.save_html("report.html")
report.save_latex("report.tex")
report.save_markdown("report.md")

Available Tools

1. PolicyEvaluator

Standard framework for policy evaluation:

  • Pre/post comparison
  • Difference-in-differences
  • Regression discontinuity
  • Synthetic control
  • Panel data methods

2. TreatmentEffectEstimator

Flexible treatment effect estimation:

  • Propensity score matching
  • Inverse probability weighting
  • Regression adjustment
  • Doubly robust estimation
  • Heterogeneous effect analysis

3. CostBenefitAnalyzer

Comprehensive cost-benefit analysis:

  • Monetization of impacts
  • Discount rate sensitivity
  • Monte Carlo simulation
  • Distributional analysis
  • Multi-criteria evaluation

4. SensitivityAnalyzer

Robustness testing:

  • Placebo tests
  • Randomization inference
  • Confounding analysis
  • Specification curves
  • Leave-one-out analysis

5. ReportGenerator

Professional reporting:

  • Executive summaries
  • Technical appendices
  • Visualizations (charts, maps, tables)
  • LaTeX and HTML output
  • Customizable templates

Supported Methods

Causal Inference Methods

  • Difference-in-Differences (DiD): Panel data with parallel trends
  • Synthetic Control: Data-driven comparison units
  • Regression Discontinuity (RDD): Sharp and fuzzy designs
  • Propensity Score Matching (PSM): Matching on observables
  • Instrumental Variables (IV): Addressing endogeneity
  • Fixed Effects: Individual and time fixed effects
  • Event Study: Dynamic treatment effects

Economic Evaluation

  • Cost-Benefit Analysis (CBA): Monetized impacts
  • Cost-Effectiveness Analysis (CEA): Outcomes per dollar
  • Return on Investment (ROI): Financial returns
  • Social Return on Investment (SROI): Broader impacts
  • Budget Impact Analysis: Fiscal consequences

Architecture

krl-causal-policy-toolkit/
โ”œโ”€โ”€ src/krl_policy/
โ”‚   โ”œโ”€โ”€ __init__.py
โ”‚   โ”œโ”€โ”€ evaluators/           # Policy evaluation frameworks
โ”‚   โ”‚   โ”œโ”€โ”€ policy_evaluator.py
โ”‚   โ”‚   โ”œโ”€โ”€ treatment_effect.py
โ”‚   โ”‚   โ””โ”€โ”€ cost_benefit.py
โ”‚   โ”œโ”€โ”€ methods/              # Causal inference methods
โ”‚   โ”‚   โ”œโ”€โ”€ did.py
โ”‚   โ”‚   โ”œโ”€โ”€ synthetic_control.py
โ”‚   โ”‚   โ”œโ”€โ”€ rdd.py
โ”‚   โ”‚   โ””โ”€โ”€ psm.py
โ”‚   โ”œโ”€โ”€ analysis/             # Advanced analysis
โ”‚   โ”‚   โ”œโ”€โ”€ heterogeneity.py
โ”‚   โ”‚   โ”œโ”€โ”€ sensitivity.py
โ”‚   โ”‚   โ””โ”€โ”€ robustness.py
โ”‚   โ”œโ”€โ”€ reporting/            # Report generation
โ”‚   โ”‚   โ”œโ”€โ”€ templates/
โ”‚   โ”‚   โ”œโ”€โ”€ visualizations.py
โ”‚   โ”‚   โ””โ”€โ”€ generators.py
โ”‚   โ””โ”€โ”€ datasets/             # Synthetic datasets
โ”‚       โ””โ”€โ”€ examples.py
โ””โ”€โ”€ tests/
    โ”œโ”€โ”€ unit/
    โ””โ”€โ”€ integration/

Example Datasets

The toolkit includes several synthetic datasets for demonstration:

  • minimum_wage_policy: County-level employment and minimum wage changes
  • job_training_program: Individual-level participant data
  • education_reform: School district panel data
  • tax_policy: State-level tax revenue and policy changes
  • healthcare_expansion: Insurance coverage and health outcomes
from krl_policy.datasets import load_example_dataset

# Load example dataset
data = load_example_dataset("minimum_wage_policy")
print(data.description)
print(data.variables)

Best Practices

1. Identify Causal Question

Clearly define:

  • Treatment/intervention
  • Outcome of interest
  • Comparison group
  • Time period
  • Population

2. Check Assumptions

Verify:

  • Parallel trends (DiD)
  • Common support (PSM)
  • Continuity at cutoff (RDD)
  • Donor pool validity (Synthetic Control)
  • Instrument validity (IV)

3. Conduct Robustness Checks

Test:

  • Alternative specifications
  • Different time periods
  • Placebo tests
  • Falsification tests
  • Sensitivity to unobservables

4. Report Transparently

Include:

  • Descriptive statistics
  • Balance tests
  • Main estimates
  • Standard errors
  • Confidence intervals
  • Sensitivity analysis

๐Ÿ“š Documentation

๐Ÿงช Testing

All features are thoroughly tested with 293 passing tests and 100% coverage:

# Run all tests
pytest

# Run with coverage
pytest --cov=krl_policy --cov-report=html

# Run specific test file
pytest tests/test_treatment_effect.py -v

๐Ÿค Contributing

We welcome contributions! Please see CONTRIBUTING.md for guidelines.

Areas for contribution:

  • New causal inference methods
  • Additional datasets
  • Documentation improvements
  • Bug reports and fixes

๐Ÿ“„ License

MIT License - see LICENSE for details.

Copyright ยฉ 2024 Sudiata Giddasira, Inc. d/b/a Quipu Research Labs, LLC d/b/a KR-Labsโ„ข

Trademark: KR-Labsโ„ข and Khipu Research Labsโ„ข are trademarks of Quipu Research Labs, LLC.

๐Ÿ“– Citation

If you use this toolkit in your research, please cite:

@software{krl_causal_policy_toolkit,
  title = {KRL Causal Policy Toolkit},
  author = {{KR-Labs}},
  year = {2024},
  version = {1.0.0},
  url = {https://github.com/KR-Labs/krl-causal-policy-toolkit},
  doi = {10.5281/zenodo.XXXXXXX}
}

๐Ÿ”— Related Projects

๐Ÿ“š References

  • Angrist, J. D., & Pischke, J. S. (2009). Mostly Harmless Econometrics
  • Cunningham, S. (2021). Causal Inference: The Mixtape
  • Imbens, G. W., & Rubin, D. B. (2015). Causal Inference for Statistics, Social, and Biomedical Sciences
  • Pearl, J. (2009). Causality: Models, Reasoning, and Inference

๐Ÿ’ฌ Support


Built with โค๏ธ by KR-Labsโ„ข | Empowering Policy Analysis Through Causal Inference

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

krl_causal_policy_toolkit-1.0.0.tar.gz (113.6 kB view details)

Uploaded Source

Built Distribution

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

krl_causal_policy_toolkit-1.0.0-py3-none-any.whl (104.8 kB view details)

Uploaded Python 3

File details

Details for the file krl_causal_policy_toolkit-1.0.0.tar.gz.

File metadata

File hashes

Hashes for krl_causal_policy_toolkit-1.0.0.tar.gz
Algorithm Hash digest
SHA256 1aa31df4096edb28bcd1de411631395accd6de74c2aac5ac8b77dedf4eb63fe7
MD5 c89b0445adac8000cac5e19ac9c8fa01
BLAKE2b-256 e30e6d6cdfce39ce9e375327d6eaafc886559377c853da6202c110afdce362d5

See more details on using hashes here.

File details

Details for the file krl_causal_policy_toolkit-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for krl_causal_policy_toolkit-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 34182fd68ea553f74db959a768541d45134fe500b0a850751f9d99d2a0450824
MD5 92a10673a92387477eccb2567879b2d7
BLAKE2b-256 da0da52291c3f5d5c62a9c656601ed186759c4b4f0661f9ecaaee397f85ce2c7

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