{"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/multivariate-time-series-imputation-by-graph","title":"Filling the G_ap_s: Multivariate Time Series Imputation by Graph Neural Networks","arxiv_id":"2108.00298","date":"2021-07-31","proceeding":"ICLR 2022 4","authors":["Andrea Cini","Ivan Marisca","Cesare Alippi"],"abstract":"Dealing with missing values and incomplete time series is a labor-intensive, tedious, inevitable task when handling data coming from real-world applications. Effective spatio-temporal representations would allow imputation methods to reconstruct missing temporal data by exploiting information coming from sensors at different locations. However, standard methods fall short in capturing the nonlinear time and space dependencies existing within networks of interconnected sensors and do not take full advantage of the available - and often strong - relational information. Notably, most state-of-the-art imputation methods based on deep learning do not explicitly model relational aspects and, in any case, do not exploit processing frameworks able to adequately represent structured spatio-temporal data. Conversely, graph neural networks have recently surged in popularity as both expressive and scalable tools for processing sequential data with relational inductive biases. In this work, we present the first assessment of graph neural networks in the context of multivariate time series imputation. In particular, we introduce a novel graph neural network architecture, named GRIN, which aims at reconstructing missing data in the different channels of a multivariate time series by learning spatio-temporal representations through message passing. Empirical results show that our model outperforms state-of-the-art methods in the imputation task on relevant real-world benchmarks with mean absolute error improvements often higher than 20%.","url_abs":"https://arxiv.org/abs/2108.00298v3","url_pdf":"https://arxiv.org/pdf/2108.00298v3.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":"multivariate-time-series-imputation-by-graph","repo_url":"https://github.com/Graph-Machine-Learning-Group/grin","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":1,"framework":"pytorch","reach":null},{"paper_slug":"multivariate-time-series-imputation-by-graph","repo_url":"https://github.com/torchspatiotemporal/tsl","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"graph-neural-network","task_name":"Graph Neural Network"},{"task_slug":"imputation","task_name":"Imputation"},{"task_slug":"missing-values","task_name":"Missing Values"},{"task_slug":"multivariate-time-series-imputation","task_name":"Multivariate Time Series Imputation"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"},{"task_slug":"traffic-data-imputation","task_name":"Traffic Data Imputation"}],"methods":[{"method_slug":"grin","method_name":"GRIN"},{"method_slug":"graph-neural-network","method_name":"Graph Neural Network"}],"datasets_introduced":[{"slug":"metr-la-point-missing","name":"METR-LA Point Missing","full_name":""},{"slug":"pems-bay-point-missing","name":"PEMS-BAY Point Missing","full_name":""}],"methods_introduced":[],"results":[{"leaderboard":"/sota/multivariate-time-series-imputation-on","task":"Multivariate Time Series Imputation","dataset":"Beijing Multi-Site Air-Quality Dataset","model":"GRIN","rank_in_archive_order":1,"of":6,"metrics":{"MAE (PM2.5)":"10.51"},"uses_additional_data":false},{"leaderboard":"/sota/traffic-data-imputation-on-metr-la-point","task":"Traffic Data Imputation","dataset":"METR-LA Point Missing","model":"GRIN","rank_in_archive_order":1,"of":2,"metrics":{"MAE":"1.91"},"uses_additional_data":false},{"leaderboard":"/sota/traffic-data-imputation-on-pems-bay-point","task":"Traffic Data Imputation","dataset":"PEMS-BAY Point Missing","model":"GRIN","rank_in_archive_order":1,"of":2,"metrics":{"MAE":"0.67"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2108.00298","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2108.00298"}},"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/torchspatiotemporal/tsl","reach":{"status":"ok","spdx":"MIT"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/Graph-Machine-Learning-Group/grin","reach":null}],"summary":{"ran":3,"ran_draft_wrong":1,"ran_violates":1,"unverified":5},"by_repo_kind":{"official":{"samples":9,"ran":5,"repositories":1},"listed":{"samples":1,"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":9,"samples":[{"code_sha256_prefix":"2cd2a62fb23eb6ef","entry":"GCGRUCell","repo":"Graph-Machine-Learning-Group/grin","repo_kind":"official","path":"lib/nn/models/grin.py","file_url":"https://github.com/Graph-Machine-Learning-Group/grin/blob/HEAD/lib/nn/models/grin.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":"2cd2a62fb23eb6ef"}},{"code_sha256_prefix":"e608547e9d7686ef","entry":"SpatialAttention","repo":"Graph-Machine-Learning-Group/grin","repo_kind":"official","path":"lib/nn/models/grin.py","file_url":"https://github.com/Graph-Machine-Learning-Group/grin/blob/HEAD/lib/nn/models/grin.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":"e608547e9d7686ef"}},{"code_sha256_prefix":"0aecbcd1f2d6ee62","entry":"SpatialConvOrderK","repo":"Graph-Machine-Learning-Group/grin","repo_kind":"official","path":"lib/nn/models/grin.py","file_url":"https://github.com/Graph-Machine-Learning-Group/grin/blob/HEAD/lib/nn/models/grin.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":"0aecbcd1f2d6ee62"}},{"code_sha256_prefix":"fc2fc13385a90308","entry":"reverse_tensor","repo":"Graph-Machine-Learning-Group/grin","repo_kind":"official","path":"lib/nn/models/grin.py","file_url":"https://github.com/Graph-Machine-Learning-Group/grin/blob/HEAD/lib/nn/models/grin.py","link_basis":"first_harvest_node","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":null,"behaviour_fingerprint":true,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"fc2fc13385a90308"}},{"code_sha256_prefix":"d870af5de5670ebb","entry":"str_to_bool","repo":"Graph-Machine-Learning-Group/grin","repo_kind":"official","path":"lib/nn/models/grin.py","file_url":"https://github.com/Graph-Machine-Learning-Group/grin/blob/HEAD/lib/nn/models/grin.py","link_basis":"first_harvest_node","language":"python","status":"ran_violates","verification_level":1,"contract_check":"VIOLATES","metamorphic_tier":null,"behaviour_fingerprint":false,"licence":"NONE","inline_ok":false,"mcp_get_code":{"code_sha256":"d870af5de5670ebb"}},{"code_sha256_prefix":"ec127da7d15fac17","entry":"BiGRIL","repo":"Graph-Machine-Learning-Group/grin","repo_kind":"official","path":"lib/nn/models/grin.py","file_url":"https://github.com/Graph-Machine-Learning-Group/grin/blob/HEAD/lib/nn/models/grin.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":"ec127da7d15fac17"}},{"code_sha256_prefix":"3bc6f8475eb854d5","entry":"GRIL","repo":"Graph-Machine-Learning-Group/grin","repo_kind":"official","path":"lib/nn/models/grin.py","file_url":"https://github.com/Graph-Machine-Learning-Group/grin/blob/HEAD/lib/nn/models/grin.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":"3bc6f8475eb854d5"}},{"code_sha256_prefix":"9a3a5f9ab28dad09","entry":"GRINet","repo":"Graph-Machine-Learning-Group/grin","repo_kind":"official","path":"lib/nn/models/grin.py","file_url":"https://github.com/Graph-Machine-Learning-Group/grin/blob/HEAD/lib/nn/models/grin.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":"9a3a5f9ab28dad09"}},{"code_sha256_prefix":"c7749f2cbb2391ff","entry":"SpatialDecoder","repo":"Graph-Machine-Learning-Group/grin","repo_kind":"official","path":"lib/nn/models/grin.py","file_url":"https://github.com/Graph-Machine-Learning-Group/grin/blob/HEAD/lib/nn/models/grin.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":"c7749f2cbb2391ff"}},{"code_sha256_prefix":"ffa5819a47fbc416","entry":"infer_mask","repo":"torchspatiotemporal/tsl","repo_kind":"listed","path":"tsl/datasets/air_quality.py","file_url":"https://github.com/torchspatiotemporal/tsl/blob/HEAD/tsl/datasets/air_quality.py","link_basis":"harvester_set","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":"ffa5819a47fbc416"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}