{"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/human-mobility-is-well-described-by-closed","title":"Human mobility is well described by closed-form gravity-like models learned automatically from data","arxiv_id":"2312.11281","date":"2023-12-18","proceeding":null,"authors":["Oriol Cabanas-Tirapu","Lluís Danús","Esteban Moro","Marta Sales-Pardo","Roger Guimerà"],"abstract":"Modeling of human mobility is critical to address questions in urban planning and transportation, as well as global challenges in sustainability, public health, and economic development. However, our understanding and ability to model mobility flows within and between urban areas are still incomplete. At one end of the modeling spectrum we have simple so-called gravity models, which are easy to interpret and provide modestly accurate predictions of mobility flows. At the other end, we have complex machine learning and deep learning models, with tens of features and thousands of parameters, which predict mobility more accurately than gravity models at the cost of not being interpretable and not providing insight on human behavior. Here, we show that simple machine-learned, closed-form models of mobility are able to predict mobility flows more accurately, overall, than either gravity or complex machine and deep learning models. At the same time, these models are simple and gravity-like, and can be interpreted in terms similar to standard gravity models. Furthermore, these models work for different datasets and at different scales, suggesting that they may capture the fundamental universal features of human mobility.","url_abs":"https://arxiv.org/abs/2312.11281v1","url_pdf":"https://arxiv.org/pdf/2312.11281v1.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":"human-mobility-is-well-described-by-closed","repo_url":"https://bitbucket.org/rguimera/machine-scientist","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"none","reach":null},{"paper_slug":"human-mobility-is-well-described-by-closed","repo_url":"https://github.com/ocabanas/symbolic_mobility_bms","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"none","reach":{"status":"ok"}}],"tasks":[{"task_slug":"form","task_name":"Form"}],"methods":[{"method_slug":"gravity","method_name":"Gravity"}],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/2312.11281","atlas_url":"https://app.syntology.ai/?focus=2312.11281","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2312.11281"}},"developers":"https://syntology.ai/developers","read_at":"2026-09-25T09:33:49+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/ocabanas/symbolic_mobility_bms","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://bitbucket.org/rguimera/machine-scientist","reach":null}],"summary":{"ran":7,"unverified":4},"by_repo_kind":{"official":{"samples":11,"ran":7,"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":11,"samples":[{"code_sha256_prefix":"ddfd94fe70b91df1","entry":"common_part_of_commuters","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"DeepGravity/models/od_models.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/DeepGravity/models/od_models.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":"ddfd94fe70b91df1"}},{"code_sha256_prefix":"f47821bc7863f761","entry":"df_to_dict","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"DeepGravity/models/deepgravity.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/DeepGravity/models/deepgravity.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":"f47821bc7863f761"}},{"code_sha256_prefix":"1e9b0974a0d58ee5","entry":"earth_distance","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"DeepGravity/models/od_models.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/DeepGravity/models/od_models.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":"1e9b0974a0d58ee5"}},{"code_sha256_prefix":"fbc032d89d6c0153","entry":"get_features_original_gravity","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"DeepGravity/models/od_models.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/DeepGravity/models/od_models.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":"fbc032d89d6c0153"}},{"code_sha256_prefix":"a58fba07e7cec639","entry":"get_flow","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"DeepGravity/models/deepgravity.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/DeepGravity/models/deepgravity.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":"a58fba07e7cec639"}},{"code_sha256_prefix":"44a800fa0f0ab2cb","entry":"load_data","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"DeepGravity/utils.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/DeepGravity/utils.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":"44a800fa0f0ab2cb"}},{"code_sha256_prefix":"965b777175bf394a","entry":"my_collate","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"DeepGravity/data_loader.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/DeepGravity/data_loader.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":"965b777175bf394a"}},{"code_sha256_prefix":"56f6f43d0fdacb42","entry":"get_features_ffnn","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"DeepGravity/models/deepgravity.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/DeepGravity/models/deepgravity.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":"56f6f43d0fdacb42"}},{"code_sha256_prefix":"706e6922be2f4f4f","entry":"test3","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"rguimera-machine-scientist/mcmc.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/rguimera-machine-scientist/mcmc.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":"706e6922be2f4f4f"}},{"code_sha256_prefix":"21fa78bfdeef4a8a","entry":"test4","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"rguimera-machine-scientist/mcmc.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/rguimera-machine-scientist/mcmc.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":"21fa78bfdeef4a8a"}},{"code_sha256_prefix":"f540f60a7b49082d","entry":"test5","repo":"ocabanas/symbolic_mobility_bms","repo_kind":"official","path":"rguimera-machine-scientist/mcmc.py","file_url":"https://github.com/ocabanas/symbolic_mobility_bms/blob/HEAD/rguimera-machine-scientist/mcmc.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":"f540f60a7b49082d"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}