{"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/typing-assumptions-improve-identification-in","title":"Typing assumptions improve identification in causal discovery","arxiv_id":"2107.10703","date":"2021-07-22","proceeding":null,"authors":["Philippe Brouillard","Perouz Taslakian","Alexandre Lacoste","Sebastien Lachapelle","Alexandre Drouin"],"abstract":"Causal discovery from observational data is a challenging task that can only be solved up to a set of equivalent solutions, called an equivalence class. Such classes, which are often large in size, encode uncertainties about the orientation of some edges in the causal graph. In this work, we propose a new set of assumptions that constrain possible causal relationships based on the nature of variables, thus circumscribing the equivalence class. Namely, we introduce typed directed acyclic graphs, in which variable types are used to determine the validity of causal relationships. We demonstrate, both theoretically and empirically, that the proposed assumptions can result in significant gains in the identification of the causal graph. We also propose causal discovery algorithms that make use of these assumptions and demonstrate their benefits on simulated and pseudo-real data.","url_abs":"https://arxiv.org/abs/2107.10703v2","url_pdf":"https://arxiv.org/pdf/2107.10703v2.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":"typing-assumptions-improve-identification-in","repo_url":"https://github.com/ElementAI/typed-dag","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"Apache-2.0"}}],"tasks":[{"task_slug":"causal-discovery","task_name":"Causal Discovery"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2107.10703","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2107.10703"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-24T18:15:14+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/ElementAI/typed-dag","reach":{"status":"ok","spdx":"Apache-2.0"}}],"summary":{"unverified":11},"by_repo_kind":{"official":{"samples":11,"ran":0,"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":"30a089f7e7ce5a1c","entry":"count_undirected_edges","repo":"ElementAI/typed-dag","repo_kind":"official","path":"data_generation/data_generator.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/data_generation/data_generator.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"30a089f7e7ce5a1c"}},{"code_sha256_prefix":"fa9a7a32f77be8cd","entry":"create_graph_viz","repo":"ElementAI/typed-dag","repo_kind":"official","path":"typed_pc/visualization.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/typed_pc/visualization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"fa9a7a32f77be8cd"}},{"code_sha256_prefix":"16f47e3d94898a4a","entry":"create_skeleton_viz","repo":"ElementAI/typed-dag","repo_kind":"official","path":"typed_pc/visualization.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/typed_pc/visualization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"16f47e3d94898a4a"}},{"code_sha256_prefix":"ea4e27e14df75daf","entry":"distr_init","repo":"ElementAI/typed-dag","repo_kind":"official","path":"data_generation/mechanisms.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/data_generation/mechanisms.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"ea4e27e14df75daf"}},{"code_sha256_prefix":"29c969dc5f1b5376","entry":"get_children","repo":"ElementAI/typed-dag","repo_kind":"official","path":"theory/graph_utils.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/theory/graph_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"29c969dc5f1b5376"}},{"code_sha256_prefix":"d701e52573ddde82","entry":"has_same_immoralities","repo":"ElementAI/typed-dag","repo_kind":"official","path":"typed_pc/tmec.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/typed_pc/tmec.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"d701e52573ddde82"}},{"code_sha256_prefix":"952bd860820a32d3","entry":"is_acyclic","repo":"ElementAI/typed-dag","repo_kind":"official","path":"typed_pc/tmec.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/typed_pc/tmec.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"952bd860820a32d3"}},{"code_sha256_prefix":"b49ec52907b90898","entry":"is_consistent_tdag","repo":"ElementAI/typed-dag","repo_kind":"official","path":"data_generation/data_generator.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/data_generation/data_generator.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"b49ec52907b90898"}},{"code_sha256_prefix":"2fa4025f49237387","entry":"rgb2hex","repo":"ElementAI/typed-dag","repo_kind":"official","path":"typed_pc/visualization.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/typed_pc/visualization.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"2fa4025f49237387"}},{"code_sha256_prefix":"0892eced5123ea6d","entry":"type_of","repo":"ElementAI/typed-dag","repo_kind":"official","path":"typed_pc/graph_utils.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/typed_pc/graph_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"0892eced5123ea6d"}},{"code_sha256_prefix":"19234ae4c58eaff2","entry":"typed_meek","repo":"ElementAI/typed-dag","repo_kind":"official","path":"typed_pc/tmec.py","file_url":"https://github.com/ElementAI/typed-dag/blob/HEAD/typed_pc/tmec.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"Apache-2.0","inline_ok":true,"mcp_get_code":{"code_sha256":"19234ae4c58eaff2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}