{"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/automatic-doubly-robust-inference-for-linear","title":"Automatic doubly robust inference for linear functionals via calibrated debiased machine learning","arxiv_id":"2411.02771","date":"2024-11-05","proceeding":null,"authors":["Lars van der Laan","Alex Luedtke","Marco Carone"],"abstract":"In causal inference, many estimands of interest can be expressed as a linear functional of the outcome regression function; this includes, for example, average causal effects of static, dynamic and stochastic interventions. For learning such estimands, in this work, we propose novel debiased machine learning estimators that are doubly robust asymptotically linear, thus providing not only doubly robust consistency but also facilitating doubly robust inference (e.g., confidence intervals and hypothesis tests). To do so, we first establish a key link between calibration, a machine learning technique typically used in prediction and classification tasks, and the conditions needed to achieve doubly robust asymptotic linearity. We then introduce calibrated debiased machine learning (C-DML), a unified framework for doubly robust inference, and propose a specific C-DML estimator that integrates cross-fitting, isotonic calibration, and debiased machine learning estimation. A C-DML estimator maintains asymptotic linearity when either the outcome regression or the Riesz representer of the linear functional is estimated sufficiently well, allowing the other to be estimated at arbitrarily slow rates or even inconsistently. We propose a simple bootstrap-assisted approach for constructing doubly robust confidence intervals. Our theoretical and empirical results support the use of C-DML to mitigate bias arising from the inconsistent or slow estimation of nuisance functions.","url_abs":"https://arxiv.org/abs/2411.02771v1","url_pdf":"https://arxiv.org/pdf/2411.02771v1.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":"automatic-doubly-robust-inference-for-linear","repo_url":"https://github.com/Larsvanderlaan/CDML","is_official":1,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"NOASSERTION"}}],"tasks":[{"task_slug":"causal-inference","task_name":"Causal Inference"},{"task_slug":"regression-1","task_name":"regression"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2411.02771","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2411.02771"}},"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/Larsvanderlaan/CDML","reach":{"status":"ok","spdx":"NOASSERTION"}}],"summary":{"unverified":16},"by_repo_kind":{"official":{"samples":16,"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":16,"samples":[{"code_sha256_prefix":"0e8fa479eb88f061","entry":"as_1d_array","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/_utils.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"0e8fa479eb88f061"}},{"code_sha256_prefix":"2938d3cd27ebaa80","entry":"as_feature_frame","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/_utils.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"2938d3cd27ebaa80"}},{"code_sha256_prefix":"1182d9955afa2589","entry":"calibrate_outcome_matrix","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/calibration.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/calibration.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"1182d9955afa2589"}},{"code_sha256_prefix":"8635ad1b84a71c0e","entry":"calibratedDML","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/legacy.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/legacy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"8635ad1b84a71c0e"}},{"code_sha256_prefix":"7ee8afe7ca03e482","entry":"calibratedDML","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"Python/.ipynb_checkpoints/calibratedDML-checkpoint.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/Python/.ipynb_checkpoints/calibratedDML-checkpoint.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7ee8afe7ca03e482"}},{"code_sha256_prefix":"78e7bca0765c8010","entry":"calibratedDML_bootstrap","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/legacy.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/legacy.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"78e7bca0765c8010"}},{"code_sha256_prefix":"8077d8970d448238","entry":"calibratedDML_bootstrap","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"Python/.ipynb_checkpoints/calibratedDML-checkpoint.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/Python/.ipynb_checkpoints/calibratedDML-checkpoint.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"8077d8970d448238"}},{"code_sha256_prefix":"7e88f6e5c5de8802","entry":"fit_monotone_calibrator","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/calibration.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/calibration.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"7e88f6e5c5de8802"}},{"code_sha256_prefix":"9e04ae808da0ecc6","entry":"isoreg_with_xgboost","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/calibration.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/calibration.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"9e04ae808da0ecc6"}},{"code_sha256_prefix":"33361784c870a865","entry":"make_binary_nonlinear_oracle_data","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"validation/python_coverage_validation.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/validation/python_coverage_validation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"33361784c870a865"}},{"code_sha256_prefix":"950fe33566c7d73d","entry":"make_binary_oracle_data","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"validation/python_coverage_validation.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/validation/python_coverage_validation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"950fe33566c7d73d"}},{"code_sha256_prefix":"c1d18a6380f8e026","entry":"make_multiarm_oracle_data","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"validation/python_coverage_validation.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/validation/python_coverage_validation.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"c1d18a6380f8e026"}},{"code_sha256_prefix":"abcf7cd195d875f1","entry":"make_regression_spec","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/models.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"abcf7cd195d875f1"}},{"code_sha256_prefix":"0ef1fe4ad9bc8f66","entry":"resolve_classifier","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/models.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"0ef1fe4ad9bc8f66"}},{"code_sha256_prefix":"f1694044c0396249","entry":"resolve_regressor","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/models.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/models.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"f1694044c0396249"}},{"code_sha256_prefix":"2f8df77d7f903ad2","entry":"resolve_weights","repo":"Larsvanderlaan/CDML","repo_kind":"official","path":"src/calibrateddml/_utils.py","file_url":"https://github.com/Larsvanderlaan/CDML/blob/HEAD/src/calibrateddml/_utils.py","link_basis":"first_harvest_node","language":"python","status":"unverified","verification_level":0,"contract_check":null,"metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NOASSERTION","inline_ok":false,"mcp_get_code":{"code_sha256":"2f8df77d7f903ad2"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}