{"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/local-causal-discovery-with-linear-non","title":"Local Causal Discovery with Linear non-Gaussian Cyclic Models","arxiv_id":"2403.14843","date":"2024-03-21","proceeding":null,"authors":["Haoyue Dai","Ignavier Ng","Yujia Zheng","Zhengqing Gao","Kun Zhang"],"abstract":"Local causal discovery is of great practical significance, as there are often situations where the discovery of the global causal structure is unnecessary, and the interest lies solely on a single target variable. Most existing local methods utilize conditional independence relations, providing only a partially directed graph, and assume acyclicity for the ground-truth structure, even though real-world scenarios often involve cycles like feedback mechanisms. In this work, we present a general, unified local causal discovery method with linear non-Gaussian models, whether they are cyclic or acyclic. We extend the application of independent component analysis from the global context to independent subspace analysis, enabling the exact identification of the equivalent local directed structures and causal strengths from the Markov blanket of the target variable. We also propose an alternative regression-based method in the particular acyclic scenarios. Our identifiability results are empirically validated using both synthetic and real-world datasets.","url_abs":"https://arxiv.org/abs/2403.14843v1","url_pdf":"https://arxiv.org/pdf/2403.14843v1.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":"local-causal-discovery-with-linear-non","repo_url":"https://github.com/markdana/local-ling-discovery","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"causal-discovery","task_name":"Causal Discovery"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2403.14843","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2403.14843"}},"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/markdana/local-ling-discovery","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":15,"unverified":3},"by_repo_kind":{"official":{"samples":18,"ran":15,"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":"04038ee5ba1c7542","entry":"acyclic_sink_processing","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"local_isa_ling/acyclic_sink_processing.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/local_isa_ling/acyclic_sink_processing.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"04038ee5ba1c7542"}},{"code_sha256_prefix":"dc52901e1f5769c3","entry":"compute_cycle_strength","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"local_isa_ling/block_diagonal_processing.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/local_isa_ling/block_diagonal_processing.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dc52901e1f5769c3"}},{"code_sha256_prefix":"eb5aab91f877d5bb","entry":"count_accuracy_of_mb","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"utils/metrics.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/utils/metrics.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"eb5aab91f877d5bb"}},{"code_sha256_prefix":"e1c6fa33cb193a70","entry":"estimate_markov_blanket","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"utils/markov_blanket.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/utils/markov_blanket.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"e1c6fa33cb193a70"}},{"code_sha256_prefix":"08d21923803611bd","entry":"get_column_with_one_nonzero","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"local_isa_ling/acyclic_sink_processing.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/local_isa_ling/acyclic_sink_processing.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"08d21923803611bd"}},{"code_sha256_prefix":"44c5f0acd1db0b3c","entry":"get_parents","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"utils/graph.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/utils/graph.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"44c5f0acd1db0b3c"}},{"code_sha256_prefix":"93a8f8022a34d375","entry":"get_vstructs","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"utils/graph.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/utils/graph.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"93a8f8022a34d375"}},{"code_sha256_prefix":"3c1bf98579e1564c","entry":"is_dag","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"utils/graph.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/utils/graph.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"3c1bf98579e1564c"}},{"code_sha256_prefix":"ba75cb86644a5849","entry":"is_singleton","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"local_isa_ling/acyclic_sink_processing.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/local_isa_ling/acyclic_sink_processing.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"ba75cb86644a5849"}},{"code_sha256_prefix":"d1ff8680471e0c76","entry":"lasso","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"utils/markov_blanket.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/utils/markov_blanket.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d1ff8680471e0c76"}},{"code_sha256_prefix":"22ef3504a4923055","entry":"sample_dag","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"data_loader/sample_dag.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/data_loader/sample_dag.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"22ef3504a4923055"}},{"code_sha256_prefix":"d81335fb6c059e2a","entry":"sample_data","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"data_loader/sample_data.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/data_loader/sample_data.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"d81335fb6c059e2a"}},{"code_sha256_prefix":"aece1776553b8d83","entry":"sample_er_dcg","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"data_loader/sample_dcg.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/data_loader/sample_dcg.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"aece1776553b8d83"}},{"code_sha256_prefix":"dd0c66a9906862be","entry":"sample_param_unif","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"data_loader/sample_data.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/data_loader/sample_data.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"dd0c66a9906862be"}},{"code_sha256_prefix":"71ddf6f8f03056f0","entry":"scorecond","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"local_isa_ling/isa.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/local_isa_ling/isa.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"71ddf6f8f03056f0"}},{"code_sha256_prefix":"436c036bed175033","entry":"block_diagonal_processing","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"local_isa_ling/block_diagonal_processing.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/local_isa_ling/block_diagonal_processing.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":"436c036bed175033"}},{"code_sha256_prefix":"a62c2c6ad341ab35","entry":"get_pr","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"local_isa_ling/isa.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/local_isa_ling/isa.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":"a62c2c6ad341ab35"}},{"code_sha256_prefix":"7550c08b662ee3c0","entry":"get_psi","repo":"markdana/local-ling-discovery","repo_kind":"official","path":"local_isa_ling/isa.py","file_url":"https://github.com/markdana/local-ling-discovery/blob/HEAD/local_isa_ling/isa.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":"7550c08b662ee3c0"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}