{"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/on-the-identifiability-and-estimation-of","title":"On the Identifiability and Estimation of Causal Location-Scale Noise Models","arxiv_id":"2210.09054","date":"2022-10-13","proceeding":null,"authors":["Alexander Immer","Christoph Schultheiss","Julia E. Vogt","Bernhard Schölkopf","Peter Bühlmann","Alexander Marx"],"abstract":"We study the class of location-scale or heteroscedastic noise models (LSNMs), in which the effect $Y$ can be written as a function of the cause $X$ and a noise source $N$ independent of $X$, which may be scaled by a positive function $g$ over the cause, i.e., $Y = f(X) + g(X)N$. Despite the generality of the model class, we show the causal direction is identifiable up to some pathological cases. To empirically validate these theoretical findings, we propose two estimators for LSNMs: an estimator based on (non-linear) feature maps, and one based on neural networks. Both model the conditional distribution of $Y$ given $X$ as a Gaussian parameterized by its natural parameters. When the feature maps are correctly specified, we prove that our estimator is jointly concave, and a consistent estimator for the cause-effect identification task. Although the the neural network does not inherit those guarantees, it can fit functions of arbitrary complexity, and reaches state-of-the-art performance across benchmarks.","url_abs":"https://arxiv.org/abs/2210.09054v2","url_pdf":"https://arxiv.org/pdf/2210.09054v2.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":"on-the-identifiability-and-estimation-of","repo_url":"https://github.com/AlexImmer/loci","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null}],"tasks":[{"task_slug":"causal-discovery","task_name":"Causal Discovery"},{"task_slug":"causal-inference","task_name":"Causal Inference"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":null,"atlas_url":"https://app.syntology.ai/?focus=2210.09054","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2210.09054"}},"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/AlexImmer/loci","reach":null}],"summary":{"ran":3,"ran_draft_wrong":4,"ran_fixture":2,"unverified":3},"by_repo_kind":{"official":{"samples":12,"ran":9,"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":12,"samples":[{"code_sha256_prefix":"e66a3d206e9cefb8","entry":"DatasetDummy","repo":"AlexImmer/loci","repo_kind":"official","path":"causa/loci.py","file_url":"https://github.com/AlexImmer/loci/blob/HEAD/causa/loci.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e66a3d206e9cefb8"}},{"code_sha256_prefix":"ce038a74c4beaf44","entry":"HetSpindlyHead","repo":"AlexImmer/loci","repo_kind":"official","path":"causa/loci.py","file_url":"https://github.com/AlexImmer/loci/blob/HEAD/causa/loci.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"ce038a74c4beaf44"}},{"code_sha256_prefix":"d608fbd313af917e","entry":"TensorDataLoader","repo":"AlexImmer/loci","repo_kind":"official","path":"causa/loci.py","file_url":"https://github.com/AlexImmer/loci/blob/HEAD/causa/loci.py","link_basis":"first_harvest_node","language":"python","status":"ran","verification_level":1,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d608fbd313af917e"}},{"code_sha256_prefix":"e8fcdc386801c3a2","entry":"build_het_network","repo":"aleximmer/loci","repo_kind":"official","path":"causa/loci.py","file_url":"https://github.com/aleximmer/loci/blob/HEAD/causa/loci.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"e8fcdc386801c3a2"}},{"code_sha256_prefix":"213c36e53ea6fd6d","entry":"build_het_network","repo":"aleximmer/loci","repo_kind":"official","path":"generate_figures_and_tables.py","file_url":"https://github.com/aleximmer/loci/blob/HEAD/generate_figures_and_tables.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"213c36e53ea6fd6d"}},{"code_sha256_prefix":"afb671fb44014507","entry":"build_network","repo":"aleximmer/loci","repo_kind":"official","path":"run_individual.py","file_url":"https://github.com/aleximmer/loci/blob/HEAD/run_individual.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"afb671fb44014507"}},{"code_sha256_prefix":"cefef482f657e2d0","entry":"build_network","repo":"aleximmer/loci","repo_kind":"official","path":"generate_figures_and_tables.py","file_url":"https://github.com/aleximmer/loci/blob/HEAD/generate_figures_and_tables.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":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"cefef482f657e2d0"}},{"code_sha256_prefix":"1d062e7a895dfd5e","entry":"heteroscedastic_normal","repo":"aleximmer/loci","repo_kind":"official","path":"causa/ml.py","file_url":"https://github.com/aleximmer/loci/blob/HEAD/causa/ml.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":"invariant","behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"1d062e7a895dfd5e"}},{"code_sha256_prefix":"0de4ae1519f818df","entry":"heteroscedastic_normal","repo":"AlexImmer/loci","repo_kind":"official","path":"causa/loci.py","file_url":"https://github.com/AlexImmer/loci/blob/HEAD/causa/loci.py","link_basis":"first_harvest_node","language":"python","status":"ran_fixture","verification_level":1,"contract_check":"RAISES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"0de4ae1519f818df"}},{"code_sha256_prefix":"b5938c74ab55b3cc","entry":"het_fit_nn","repo":"AlexImmer/loci","repo_kind":"official","path":"causa/loci.py","file_url":"https://github.com/AlexImmer/loci/blob/HEAD/causa/loci.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"b5938c74ab55b3cc"}},{"code_sha256_prefix":"f8f3410e14b3e43a","entry":"map_optimization","repo":"aleximmer/loci","repo_kind":"official","path":"causa/ml.py","file_url":"https://github.com/aleximmer/loci/blob/HEAD/causa/ml.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"f8f3410e14b3e43a"}},{"code_sha256_prefix":"eb20b986433d56d4","entry":"set_seed","repo":"AlexImmer/loci","repo_kind":"official","path":"causa/loci.py","file_url":"https://github.com/AlexImmer/loci/blob/HEAD/causa/loci.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"eb20b986433d56d4"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}