{"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/arxiv-2605-07029","title":"BGM-IV: an AI-powered Bayesian generative modeling approach for instrumental variable analysis","arxiv_id":"2605.07029","date":"2026-05-07","proceeding":null,"authors":["Guyue Luo","Qiao Liu"],"abstract":"Instrumental-variable (IV) regression enables causal estimation under endogeneity, but modern IV problems often involve nonlinear structural effects and high-dimensional covariates. Existing nonlinear IV methods directly learn the causal relation in observed feature space or rely on learned representations within two-stage or moment-based procedures, which can struggle when the causal information is embedded in a high-dimensional representation. We propose BGM-IV, a latent Bayesian generative modeling approach that reframes nonlinear IV regression as posterior inference in a causally structured latent space. BGM-IV infers latent components that separately capture shared confounding structure, outcome-specific variation, treatment-specific variation, and covariate-only nuisance information. To account for endogeneity, BGM-IV replaces the confounded outcome likelihood with an IV-integrated pseudo-likelihood that averages over instrument-induced treatment values within the latent model. Across various benchmark datasets, BGM-IV remains competitive in the classical low-dimensional regime and performs best in high-dimensional covariate regimes. Together, these results show that structured latent generative modeling provides a principled and effective strategy to nonlinear IV estimation with rich covariates. The code of BGM-IV is available at https://github.com/liuq-lab/BGM-IV.","url_abs":"https://arxiv.org/abs/2605.07029","url_pdf":"https://arxiv.org/pdf/2605.07029","source":{"archive":null,"snapshot":"2025-07-28","note":"not in the Papers with Code archive (frozen at the snapshot)","row_kind":"graph","title_abstract_authors_date":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)"},"code_links":[],"tasks":[],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"atlas_url":null,"mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2605.07029"}},"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":[{"mentioned_in_github":null,"is_official":null,"provenance":"deterministic:regex_extraction","mentioned_in_paper":null,"url":"https://github.com/liuq-lab/BGM-IV","reach":null}],"summary":{"ran":19,"unverified":8},"by_repo_kind":{"found_in_text":{"samples":27,"ran":19,"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":"83753df851de4b8b","entry":"arm_label","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/proxy_transform.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/proxy_transform.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":"83753df851de4b8b"}},{"code_sha256_prefix":"f41058caa097d324","entry":"attach_demand_design_vectors","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/datasets/simulator_vector.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/datasets/simulator_vector.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":"f41058caa097d324"}},{"code_sha256_prefix":"75f421bd4d002b8a","entry":"build_query_table","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/readout.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/readout.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":"75f421bd4d002b8a"}},{"code_sha256_prefix":"ef0816e1fcbf520d","entry":"demand_design_h","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/datasets/simulators.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/datasets/simulators.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":"ef0816e1fcbf520d"}},{"code_sha256_prefix":"4c72ffcdb96ee708","entry":"demand_design_structural_function","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/datasets/simulators.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/datasets/simulators.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":"4c72ffcdb96ee708"}},{"code_sha256_prefix":"b918b93960913c09","entry":"derive_mcmc_seeds","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/inference.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/inference.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":"b918b93960913c09"}},{"code_sha256_prefix":"16a9f87789141a91","entry":"derive_multistart_seed","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/egm_multistart.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/egm_multistart.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":"16a9f87789141a91"}},{"code_sha256_prefix":"d29c33051e99fee9","entry":"gaussian_mixture_quantiles","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/readout.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/readout.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":"d29c33051e99fee9"}},{"code_sha256_prefix":"f4a1805ad76ba5b4","entry":"make_demand_design_vector_prototypes","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/datasets/simulator_vector.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/datasets/simulator_vector.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":"f4a1805ad76ba5b4"}},{"code_sha256_prefix":"eba425492049ef3e","entry":"parse_pca_dim","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/proxy_transform.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/proxy_transform.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":"eba425492049ef3e"}},{"code_sha256_prefix":"7f1800f0ce367f04","entry":"proxy_sha1","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/proxy_transform.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/proxy_transform.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":"7f1800f0ce367f04"}},{"code_sha256_prefix":"cf43d540c3b651d2","entry":"regularize_state_variance","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/sampler.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/sampler.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":"cf43d540c3b651d2"}},{"code_sha256_prefix":"e6cff08d273605b7","entry":"save_draw_artifact","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/artifact.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/artifact.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":"e6cff08d273605b7"}},{"code_sha256_prefix":"6105a1762d74da79","entry":"score_evaluation_iterations","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/egm_multistart.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/egm_multistart.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":"6105a1762d74da79"}},{"code_sha256_prefix":"e6b63bc4a6f0b6d5","entry":"sha256_array","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/hashing.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/hashing.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":"e6b63bc4a6f0b6d5"}},{"code_sha256_prefix":"f9194eb50641d5b2","entry":"sha256_json","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/hashing.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/hashing.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":"f9194eb50641d5b2"}},{"code_sha256_prefix":"597412c57f4ba902","entry":"sha256_weights","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/hashing.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/hashing.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":"597412c57f4ba902"}},{"code_sha256_prefix":"97b82c64328c3fc7","entry":"simulate_demand_design_iv","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/datasets/simulators.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/datasets/simulators.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":"97b82c64328c3fc7"}},{"code_sha256_prefix":"9e3e40b7077a715e","entry":"validate_multistart_config","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/egm_multistart.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/egm_multistart.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":"9e3e40b7077a715e"}},{"code_sha256_prefix":"e98e6f631c0b696a","entry":"load_draw_artifact","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/artifact.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/artifact.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":"e98e6f631c0b696a"}},{"code_sha256_prefix":"9d89a6dba39b76bf","entry":"make_demand_design_mnist_grid","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/datasets/simulator_image.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/datasets/simulator_image.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":"9d89a6dba39b76bf"}},{"code_sha256_prefix":"d461e91872b6a9b4","entry":"model_training_provenance","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/target.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/target.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":"d461e91872b6a9b4"}},{"code_sha256_prefix":"5973fc13cdbcdd7c","entry":"overdispersed_initial_state","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/sampler.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/sampler.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":"5973fc13cdbcdd7c"}},{"code_sha256_prefix":"0bc712f634d8cdec","entry":"resolve_target","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/target.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/target.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":"0bc712f634d8cdec"}},{"code_sha256_prefix":"7251ff631aedeb5b","entry":"sha256_decoder","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/mcmc/target.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/mcmc/target.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":"7251ff631aedeb5b"}},{"code_sha256_prefix":"299a4ec895dc7d62","entry":"simulate_demand_design_mnist_iv","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/datasets/simulator_image.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/datasets/simulator_image.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":"299a4ec895dc7d62"}},{"code_sha256_prefix":"3b097f86ce10b413","entry":"simulate_demand_design_vector_iv","repo":"liuq-lab/BGM-IV","repo_kind":"found_in_text","path":"bgm_iv/datasets/simulator_vector.py","file_url":"https://github.com/liuq-lab/BGM-IV/blob/HEAD/bgm_iv/datasets/simulator_vector.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":"3b097f86ce10b413"}}]},"arxiv_metadata":{"licence":"arXiv metadata, CC0 1.0 (https://info.arxiv.org/help/license)","fields":["title","abstract","authors","date"],"primary_category":"cs.LG","source":"arxiv_2026.jsonl"},"syntology_extracted_results":null}