{"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/causal-reasoning-in-the-presence-of-latent","title":"Causal Reasoning in the Presence of Latent Confounders via Neural ADMG Learning","arxiv_id":"2303.12703","date":"2023-03-22","proceeding":null,"authors":["Matthew Ashman","Chao Ma","Agrin Hilmkil","Joel Jennings","Cheng Zhang"],"abstract":"Latent confounding has been a long-standing obstacle for causal reasoning from observational data. One popular approach is to model the data using acyclic directed mixed graphs (ADMGs), which describe ancestral relations between variables using directed and bidirected edges. However, existing methods using ADMGs are based on either linear functional assumptions or a discrete search that is complicated to use and lacks computational tractability for large datasets. In this work, we further extend the existing body of work and develop a novel gradient-based approach to learning an ADMG with non-linear functional relations from observational data. We first show that the presence of latent confounding is identifiable under the assumptions of bow-free ADMGs with non-linear additive noise models. With this insight, we propose a novel neural causal model based on autoregressive flows for ADMG learning. This not only enables us to determine complex causal structural relationships behind the data in the presence of latent confounding, but also estimate their functional relationships (hence treatment effects) simultaneously. We further validate our approach via experiments on both synthetic and real-world datasets, and demonstrate the competitive performance against relevant baselines.","url_abs":"https://arxiv.org/abs/2303.12703v1","url_pdf":"https://arxiv.org/pdf/2303.12703v1.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":"causal-reasoning-in-the-presence-of-latent","repo_url":"https://github.com/microsoft/causica","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":null}],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2303.12703","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.12703"}},"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":"deterministic:regex_extraction","url":"https://github.com/microsoft/causica","reach":null},{"provenance":"deterministic:regex_extraction","url":"https://github.com/AMLab-Amsterdam/CEVAE","reach":{"status":"ok"}}],"summary":{"unverified":6},"by_repo_kind":{"official":{"samples":6,"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":"03b0fa1c9bd7973f","entry":"AdjacencyDistribution","repo":"microsoft/causica","repo_kind":"official","path":"src/causica/distributions/adjacency/constrained_adjacency_distributions.py","file_url":"https://github.com/microsoft/causica/blob/HEAD/src/causica/distributions/adjacency/constrained_adjacency_distributions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"03b0fa1c9bd7973f"}},{"code_sha256_prefix":"72d4c409f1fb090c","entry":"ConstrainedAdjacencyDistribution","repo":"microsoft/causica","repo_kind":"official","path":"src/causica/distributions/adjacency/constrained_adjacency_distributions.py","file_url":"https://github.com/microsoft/causica/blob/HEAD/src/causica/distributions/adjacency/constrained_adjacency_distributions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"72d4c409f1fb090c"}},{"code_sha256_prefix":"4317bc976673cbd1","entry":"LaggedAdjacencyDistribution","repo":"microsoft/causica","repo_kind":"official","path":"src/causica/distributions/adjacency/constrained_adjacency_distributions.py","file_url":"https://github.com/microsoft/causica/blob/HEAD/src/causica/distributions/adjacency/constrained_adjacency_distributions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"4317bc976673cbd1"}},{"code_sha256_prefix":"9e07309f7d2ec732","entry":"LaggedConstrainedAdjacencyDistribution","repo":"microsoft/causica","repo_kind":"official","path":"src/causica/distributions/adjacency/constrained_adjacency_distributions.py","file_url":"https://github.com/microsoft/causica/blob/HEAD/src/causica/distributions/adjacency/constrained_adjacency_distributions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"9e07309f7d2ec732"}},{"code_sha256_prefix":"fcec9dc288b9be7f","entry":"TemporalAdjacencyDistribution","repo":"microsoft/causica","repo_kind":"official","path":"src/causica/distributions/adjacency/constrained_adjacency_distributions.py","file_url":"https://github.com/microsoft/causica/blob/HEAD/src/causica/distributions/adjacency/constrained_adjacency_distributions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"fcec9dc288b9be7f"}},{"code_sha256_prefix":"aef77bba1fa257d7","entry":"TemporalConstrainedAdjacencyDistribution","repo":"microsoft/causica","repo_kind":"official","path":"src/causica/distributions/adjacency/constrained_adjacency_distributions.py","file_url":"https://github.com/microsoft/causica/blob/HEAD/src/causica/distributions/adjacency/constrained_adjacency_distributions.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aef77bba1fa257d7"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}