{"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/engression-extrapolation-for-nonlinear","title":"Engression: Extrapolation through the Lens of Distributional Regression","arxiv_id":"2307.00835","date":"2023-07-03","proceeding":null,"authors":["Xinwei Shen","Nicolai Meinshausen"],"abstract":"Distributional regression aims to estimate the full conditional distribution of a target variable, given covariates. Popular methods include linear and tree-ensemble based quantile regression. We propose a neural network-based distributional regression methodology called `engression'. An engression model is generative in the sense that we can sample from the fitted conditional distribution and is also suitable for high-dimensional outcomes. Furthermore, we find that modelling the conditional distribution on training data can constrain the fitted function outside of the training support, which offers a new perspective to the challenging extrapolation problem in nonlinear regression. In particular, for `pre-additive noise' models, where noise is added to the covariates before applying a nonlinear transformation, we show that engression can successfully perform extrapolation under some assumptions such as monotonicity, whereas traditional regression approaches such as least-squares or quantile regression fall short under the same assumptions. Our empirical results, from both simulated and real data, validate the effectiveness of the engression method and indicate that the pre-additive noise model is typically suitable for many real-world scenarios. The software implementations of engression are available in both R and Python.","url_abs":"https://arxiv.org/abs/2307.00835v3","url_pdf":"https://arxiv.org/pdf/2307.00835v3.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":"engression-extrapolation-for-nonlinear","repo_url":"https://github.com/xwshen51/engression","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"tasks":[{"task_slug":"quantile-regression","task_name":"quantile regression"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2307.00835","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2307.00835"}},"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/xwshen51/engression","reach":{"status":"ok","spdx":"BSD-3-Clause"}}],"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":"253c569c1f91ba2f","entry":"cor","repo":"xwshen51/engression","repo_kind":"official","path":"engression-python/engression/utils.py","file_url":"https://github.com/xwshen51/engression/blob/HEAD/engression-python/engression/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"253c569c1f91ba2f"}},{"code_sha256_prefix":"d2d9d6bc15945145","entry":"energy_loss","repo":"xwshen51/engression","repo_kind":"official","path":"engression-python/engression/loss_func.py","file_url":"https://github.com/xwshen51/engression/blob/HEAD/engression-python/engression/loss_func.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"d2d9d6bc15945145"}},{"code_sha256_prefix":"7d9c765aa41d69fa","entry":"energy_loss_two_sample","repo":"xwshen51/engression","repo_kind":"official","path":"engression-python/engression/loss_func.py","file_url":"https://github.com/xwshen51/engression/blob/HEAD/engression-python/engression/loss_func.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"7d9c765aa41d69fa"}},{"code_sha256_prefix":"fb8e5cdd78353072","entry":"engression","repo":"xwshen51/engression","repo_kind":"official","path":"engression-python/engression/engression.py","file_url":"https://github.com/xwshen51/engression/blob/HEAD/engression-python/engression/engression.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"fb8e5cdd78353072"}},{"code_sha256_prefix":"8b0c19d560bfdb8a","entry":"get_act_func","repo":"xwshen51/engression","repo_kind":"official","path":"engression-python/engression/models.py","file_url":"https://github.com/xwshen51/engression/blob/HEAD/engression-python/engression/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"8b0c19d560bfdb8a"}},{"code_sha256_prefix":"99d5218e579e5adb","entry":"vectorize","repo":"xwshen51/engression","repo_kind":"official","path":"engression-python/engression/utils.py","file_url":"https://github.com/xwshen51/engression/blob/HEAD/engression-python/engression/utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"BSD-3-Clause","inline_ok":true,"mcp_get_code":{"code_sha256":"99d5218e579e5adb"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}