{
  "slug": "dowhy",
  "name": "DoWhy",
  "aliases": [],
  "vendor": { "name": "PyWhy (originally Microsoft)", "slug": "pywhy", "website": "https://www.pywhy.org" },
  "homepage_url": "https://www.pywhy.org/dowhy/",
  "docs_url": "https://www.pywhy.org/dowhy/",
  "repo_url": "https://github.com/py-why/dowhy",
  "license_url": "https://github.com/py-why/dowhy/blob/main/LICENSE",
  "product_type": "library",
  "product_status": "active",
  "summary": "Python causal-inference library organized around model, identify, estimate and refute steps, with graphical causal models for attribution, counterfactuals and root-cause analysis",
  "description": "DoWhy is an open-source Python library for causal inference, started at Microsoft and now part of the PyWhy ecosystem under the MIT license. Its effect-estimation API follows four explicit steps: model the problem as a causal graph, identify the estimand with graph-based criteria and do-calculus, estimate it with potential-outcome methods (regression, matching, weighting, instrumental variables, or EconML estimators through an integration), and refute the result with falsification tests such as placebo treatments, random common causes and data subsets.\n\nA second module, graphical causal models (GCM), fits explicit causal mechanisms at each node to support interventions, counterfactuals, attribution of anomalies and distribution changes, intrinsic causal influence and root-cause analysis. DoWhy supports Python 3.9 and later and is installed from PyPI or conda. The library makes assumptions explicit and testable, which is its main value in applied research, but it does not create identification where none exists, its estimators are simpler than dedicated packages unless EconML is attached, and the GCM module requires specifying or learning a plausible graph.",
  "capabilities": ["Four-step effect estimation: model, identify, estimate, refute", "Graph-based identification using do-calculus and backdoor/frontdoor criteria", "Refutation tests for causal assumptions", "Graphical causal models for interventions and counterfactuals", "Root-cause analysis and anomaly attribution", "Integration with EconML estimators"],
  "workflows": ["Documenting identification assumptions for an observational study", "Root-cause analysis of a metric change in a system", "Robustness checks on an estimated treatment effect"],
  "advantages": ["Makes causal assumptions explicit and testable", "MIT licence; active PyWhy community", "Bridges graphical models and potential outcomes"],
  "limitations": ["Requires a specified causal graph", "Built-in estimators are basic without EconML", "Assumptions cannot be verified from data alone"],
  "prerequisites": ["Python 3.9+ with NumPy, pandas and networkx"],
  "audiences": ["Researchers formalizing causal designs", "Data scientists doing attribution and root-cause analysis"],
  "alternatives": ["econml", "statsmodels", "fixest"],
  "comparison_notes": "EconML specializes in heterogeneous-effect estimation and plugs into DoWhy's estimate step; statsmodels and fixest provide classical regression tools without a graphical identification layer.",
  "categories": [{ "slug": "econometrics-causal-inference", "primary": true }],
  "tags": ["python", "causal-inference", "open-source"],
  "use_cases": ["estimate-causal-effects"],
  "operating_systems": ["macos", "linux", "windows"],
  "execution_modes": ["local"],
  "interfaces": ["library"],
  "deployment_models": ["embedded"],
  "integrations": ["EconML", "scikit-learn", "networkx", "pandas"],
  "data_formats": ["pandas DataFrame", "NumPy arrays", "DOT/GML graphs"],
  "languages": ["Python"],
  "source_model": "open-source",
  "license_spdx": "MIT",
  "pricing_model": ["free", "open-source"],
  "self_hostable": true,
  "sources": [
    { "url": "https://www.pywhy.org/dowhy/", "type": "official_site", "title": "DoWhy documentation", "supports": ["name", "summary"], "checked_at": "2026-11-02" },
    { "url": "https://github.com/py-why/dowhy", "type": "repository", "title": "py-why/dowhy", "supports": ["capabilities", "description", "prerequisites"], "checked_at": "2026-11-02", "note": "README describes tasks, GCM module and Python support" },
    { "url": "https://github.com/py-why/dowhy/blob/main/LICENSE", "type": "license_page", "title": "DoWhy LICENSE", "supports": ["license_spdx", "source_model"], "checked_at": "2026-11-02" }
  ],
  "confidence": "high",
  "discovery_method": "editorial-research",
  "depth": "standard",
  "editorial_status": "reviewed",
  "visibility": "public",
  "featured": false,
  "author": "batch-E"
}
