{"about":{"site":"https://codewithpapers.app","non_affiliation":"Code with Papers and Syntology are not affiliated with, endorsed by, or sponsored by Papers with Code, Meta, or the pwc-archive mirror.","licence":"CC BY-SA 4.0","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","attribution":"https://codewithpapers.app/attribution","modified":"archive material modified by Syntology; see the attribution page"},"url":"/paper/dowhy-an-end-to-end-library-for-causal","title":"DoWhy: An End-to-End Library for Causal Inference","arxiv_id":"2011.04216","date":"2020-11-09","proceeding":null,"authors":["Amit Sharma","Emre Kiciman"],"abstract":"In addition to efficient statistical estimators of a treatment's effect, successful application of causal inference requires specifying assumptions about the mechanisms underlying observed data and testing whether they are valid, and to what extent. However, most libraries for causal inference focus only on the task of providing powerful statistical estimators. We describe DoWhy, an open-source Python library that is built with causal assumptions as its first-class citizens, based on the formal framework of causal graphs to specify and test causal assumptions. DoWhy presents an API for the four steps common to any causal analysis---1) modeling the data using a causal graph and structural assumptions, 2) identifying whether the desired effect is estimable under the causal model, 3) estimating the effect using statistical estimators, and finally 4) refuting the obtained estimate through robustness checks and sensitivity analyses. In particular, DoWhy implements a number of robustness checks including placebo tests, bootstrap tests, and tests for unoberved confounding. DoWhy is an extensible library that supports interoperability with other implementations, such as EconML and CausalML for the the estimation step. The library is available at https://github.com/microsoft/dowhy","url_abs":"https://arxiv.org/abs/2011.04216v1","url_pdf":"https://arxiv.org/pdf/2011.04216v1.pdf","source":{"archive":"pwc-archive (Hugging Face), CC BY-SA 4.0","snapshot":"2025-07-28","licence_url":"https://creativecommons.org/licenses/by-sa/4.0/legalcode","row_kind":"abstracts"},"code_links":[{"paper_slug":"dowhy-an-end-to-end-library-for-causal","repo_url":"https://github.com/microsoft/dowhy","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"dowhy-an-end-to-end-library-for-causal","repo_url":"https://github.com/CasualModel/CancerCausality","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"dowhy-an-end-to-end-library-for-causal","repo_url":"https://github.com/eyerus21/Breast-cancer-Wisconsin-Diagnostic-","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"unanswered"}},{"paper_slug":"dowhy-an-end-to-end-library-for-causal","repo_url":"https://github.com/py-why/dowhy","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"dowhy-an-end-to-end-library-for-causal","repo_url":"https://github.com/yutong-zhou-cv/biox","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"pytorch","reach":{"status":"unanswered"}}],"tasks":[{"task_slug":"causal-inference","task_name":"Causal Inference"},{"task_slug":null,"task_name":"valid"}],"methods":[{"method_slug":"causal-inference","method_name":"Causal inference"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2011.04216","atlas_url":"https://app.syntology.ai/?focus=2011.04216","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2011.04216"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+00:00","read_at_is":"when the build read Syntology's graph, not when any sample ran","claim":"Per-sample execution status on synthesized fixtures; not a correctness claim about the paper. Samples come from repositories linked to the paper, official or community; repo_kind says which.","repos":[{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/microsoft/dowhy","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/CasualModel/CancerCausality","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/yutong-zhou-cv/biox","reach":{"status":"unanswered"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/py-why/dowhy","reach":null},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/eyerus21/Breast-cancer-Wisconsin-Diagnostic-","reach":{"status":"unanswered"}}],"summary":{"ran_draft_wrong":5,"ran_violates":1},"by_repo_kind":{"listed":{"samples":6,"ran":6,"repositories":1}},"repo_kind_vocabulary":{"official":"The archive marks this repository official for the paper","named_in_paper":"The archive records that the paper mentions this repository; it is not marked official","listed":"In the archive's code links for this paper, not marked official and not recorded as mentioned in the paper","found_in_text":"Syntology found this repository in the paper's own text; whether it is the authors' implementation is not asserted","community":"Not in the archive's code links for this paper; a community repository Syntology harvested"},"n_pointer_only_for_licence":0,"samples":[{"code_sha256_prefix":"36145701d6e173b8","entry":"choose_variables","repo":"py-why/dowhy","repo_kind":"listed","path":"dowhy/causal_refuter.py","file_url":"https://github.com/py-why/dowhy/blob/HEAD/dowhy/causal_refuter.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"36145701d6e173b8"}},{"code_sha256_prefix":"e6ae681a5991d9cf","entry":"get_ordered_predecessors","repo":"py-why/dowhy","repo_kind":"listed","path":"dowhy/graph.py","file_url":"https://github.com/py-why/dowhy/blob/HEAD/dowhy/graph.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e6ae681a5991d9cf"}},{"code_sha256_prefix":"21cf2805cc097d4e","entry":"is_root_node","repo":"py-why/dowhy","repo_kind":"listed","path":"dowhy/graph.py","file_url":"https://github.com/py-why/dowhy/blob/HEAD/dowhy/graph.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":"deterministic","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"21cf2805cc097d4e"}},{"code_sha256_prefix":"63538d4b9bf66f8d","entry":"node_connected_subgraph_view","repo":"py-why/dowhy","repo_kind":"listed","path":"dowhy/graph.py","file_url":"https://github.com/py-why/dowhy/blob/HEAD/dowhy/graph.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"OUTPUT_MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"63538d4b9bf66f8d"}},{"code_sha256_prefix":"80b0ffe65b0c7576","entry":"perform_bootstrap_test","repo":"py-why/dowhy","repo_kind":"listed","path":"dowhy/causal_refuter.py","file_url":"https://github.com/py-why/dowhy/blob/HEAD/dowhy/causal_refuter.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"80b0ffe65b0c7576"}},{"code_sha256_prefix":"f00b9d8cb7351187","entry":"perform_normal_distribution_test","repo":"py-why/dowhy","repo_kind":"listed","path":"dowhy/causal_refuter.py","file_url":"https://github.com/py-why/dowhy/blob/HEAD/dowhy/causal_refuter.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"well_formed","behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f00b9d8cb7351187"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}