{"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/standardizing-structural-causal-models","title":"Standardizing Structural Causal Models","arxiv_id":"2406.11601","date":"2024-06-17","proceeding":null,"authors":["Weronika Ormaniec","Scott Sussex","Lars Lorch","Bernhard Schölkopf","Andreas Krause"],"abstract":"Synthetic datasets generated by structural causal models (SCMs) are commonly used for benchmarking causal structure learning algorithms. However, the variances and pairwise correlations in SCM data tend to increase along the causal ordering. Several popular algorithms exploit these artifacts, possibly leading to conclusions that do not generalize to real-world settings. Existing metrics like $\\operatorname{Var}$-sortability and $\\operatorname{R^2}$-sortability quantify these patterns, but they do not provide tools to remedy them. To address this, we propose internally-standardized structural causal models (iSCMs), a modification of SCMs that introduces a standardization operation at each variable during the generative process. By construction, iSCMs are not $\\operatorname{Var}$-sortable. We also find empirical evidence that they are mostly not $\\operatorname{R^2}$-sortable for commonly-used graph families. Moreover, contrary to the post-hoc standardization of data generated by standard SCMs, we prove that linear iSCMs are less identifiable from prior knowledge on the weights and do not collapse to deterministic relationships in large systems, which may make iSCMs a useful model in causal inference beyond the benchmarking problem studied here. Our code is publicly available at: https://github.com/werkaaa/iscm.","url_abs":"https://arxiv.org/abs/2406.11601v3","url_pdf":"https://arxiv.org/pdf/2406.11601v3.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":"standardizing-structural-causal-models","repo_url":"https://github.com/werkaaa/iscm","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"benchmarking","task_name":"Benchmarking"},{"task_slug":"causal-inference","task_name":"Causal Inference"}],"methods":[{"method_slug":"causal-inference","method_name":"Causal inference"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2406.11601","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2406.11601"}},"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/werkaaa/iscm","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":6,"unverified":1},"by_repo_kind":{"official":{"samples":7,"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":"b2399067bdec2bea","entry":"convert_to_binary_matrix","repo":"werkaaa/iscm","repo_kind":"official","path":"iscm/graph_utils.py","file_url":"https://github.com/werkaaa/iscm/blob/HEAD/iscm/graph_utils.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":"b2399067bdec2bea"}},{"code_sha256_prefix":"7498f406618c10c6","entry":"draw_rff_params","repo":"werkaaa/iscm","repo_kind":"official","path":"iscm/mechanisms/rff.py","file_url":"https://github.com/werkaaa/iscm/blob/HEAD/iscm/mechanisms/rff.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":"7498f406618c10c6"}},{"code_sha256_prefix":"1e3c2a4dd856e0d0","entry":"get_data_samples_from_noise_vars","repo":"werkaaa/iscm","repo_kind":"official","path":"iscm/closed_form_data_generator.py","file_url":"https://github.com/werkaaa/iscm/blob/HEAD/iscm/closed_form_data_generator.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":"1e3c2a4dd856e0d0"}},{"code_sha256_prefix":"5f38cecff3d354ae","entry":"has_cycles","repo":"werkaaa/iscm","repo_kind":"official","path":"iscm/graph_utils.py","file_url":"https://github.com/werkaaa/iscm/blob/HEAD/iscm/graph_utils.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":"5f38cecff3d354ae"}},{"code_sha256_prefix":"6e1d5ddcdecc486b","entry":"rff_mechanism_matrix","repo":"werkaaa/iscm","repo_kind":"official","path":"iscm/mechanisms/rff.py","file_url":"https://github.com/werkaaa/iscm/blob/HEAD/iscm/mechanisms/rff.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":"6e1d5ddcdecc486b"}},{"code_sha256_prefix":"1ddad73a7e261d04","entry":"sample_weight","repo":"werkaaa/iscm","repo_kind":"official","path":"iscm/mechanisms/linear.py","file_url":"https://github.com/werkaaa/iscm/blob/HEAD/iscm/mechanisms/linear.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":"1ddad73a7e261d04"}},{"code_sha256_prefix":"0b9b470c0dcf86ea","entry":"topo_sort","repo":"werkaaa/iscm","repo_kind":"official","path":"iscm/graph_utils.py","file_url":"https://github.com/werkaaa/iscm/blob/HEAD/iscm/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":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"0b9b470c0dcf86ea"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}