{"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/graph-neural-rough-differential-equations-for","title":"Graph Neural Rough Differential Equations for Traffic Forecasting","arxiv_id":"2303.10909","date":"2023-03-20","proceeding":null,"authors":["Jeongwhan Choi","Noseong Park"],"abstract":"Traffic forecasting is one of the most popular spatio-temporal tasks in the field of machine learning. A prevalent approach in the field is to combine graph convolutional networks and recurrent neural networks for the spatio-temporal processing. There has been fierce competition and many novel methods have been proposed. In this paper, we present the method of spatio-temporal graph neural rough differential equation (STG-NRDE). Neural rough differential equations (NRDEs) are a breakthrough concept for processing time-series data. Their main concept is to use the log-signature transform to convert a time-series sample into a relatively shorter series of feature vectors. We extend the concept and design two NRDEs: one for the temporal processing and the other for the spatial processing. After that, we combine them into a single framework. We conduct experiments with 6 benchmark datasets and 27 baselines. STG-NRDE shows the best accuracy in all cases, outperforming all those 27 baselines by non-trivial margins.","url_abs":"https://arxiv.org/abs/2303.10909v2","url_pdf":"https://arxiv.org/pdf/2303.10909v2.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":"graph-neural-rough-differential-equations-for","repo_url":"https://github.com/jeongwhanchoi/STG-NCDE","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok","spdx":"MIT"}},{"paper_slug":"graph-neural-rough-differential-equations-for","repo_url":"https://github.com/jeongwhanchoi/stg-nrde","is_official":1,"mentioned_in_paper":1,"mentioned_in_github":0,"framework":"pytorch","reach":{"status":"ok"}}],"tasks":[{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"traffic-prediction","task_name":"Traffic Prediction"}],"methods":[{"method_slug":"fierce","method_name":"FIERCE"}],"datasets_introduced":[],"methods_introduced":[],"results":[{"leaderboard":"/sota/traffic-prediction-on-pemsd3","task":"Traffic Prediction","dataset":"PeMSD3","model":"STG-NRDE","rank_in_archive_order":5,"of":6,"metrics":{"12 steps MAE":"15.50","12 steps MAPE":"14.9","12 steps RMSE":"27.06"},"uses_additional_data":false},{"leaderboard":"/sota/traffic-prediction-on-pemsd4","task":"Traffic Prediction","dataset":"PeMSD4","model":"STG-NRDE","rank_in_archive_order":12,"of":13,"metrics":{"12 steps MAE":"19.13","12 steps MAPE":"12.68","12 steps RMSE":"30.94"},"uses_additional_data":false},{"leaderboard":"/sota/traffic-prediction-on-pemsd7","task":"Traffic Prediction","dataset":"PeMSD7","model":"STG-NRDE","rank_in_archive_order":7,"of":8,"metrics":{"12 steps MAE":"20.45","12 steps MAPE":"8.65","12 steps RMSE":"33.73"},"uses_additional_data":false},{"leaderboard":"/sota/traffic-prediction-on-pemsd7-l","task":"Traffic Prediction","dataset":"PeMSD7(L)","model":"STG-NRDE","rank_in_archive_order":5,"of":6,"metrics":{"12 steps MAE":"2.85","12 steps MAPE":"7.14","12 steps RMSE":"5.76"},"uses_additional_data":false},{"leaderboard":"/sota/traffic-prediction-on-pemsd7-m","task":"Traffic Prediction","dataset":"PeMSD7(M)","model":"STG-NRDE","rank_in_archive_order":5,"of":7,"metrics":{"12 steps MAE":"2.66","12 steps MAPE":"6.68","12 steps RMSE":"5.31"},"uses_additional_data":false},{"leaderboard":"/sota/traffic-prediction-on-pemsd8","task":"Traffic Prediction","dataset":"PeMSD8","model":"STG-NRDE","rank_in_archive_order":12,"of":13,"metrics":{"12 steps MAE":"15.32","12 steps MAPE":"8.9","12 steps RMSE":"24.72"},"uses_additional_data":false}],"syntology":{"atlas_url":"https://app.syntology.ai/?focus=2303.10909","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"2303.10909"}},"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/jeongwhanchoi/stg-nrde","reach":{"status":"ok"}},{"provenance":"external:paperswithcode_snapshot_2025-07-28","url":"https://github.com/jeongwhanchoi/STG-NCDE","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"ran":5,"ran_draft_wrong":1,"unverified":11},"by_repo_kind":{"official":{"samples":17,"ran":6,"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":"bb1134c39c66c490","entry":"MSE_torch","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/metrics.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/metrics.py","link_basis":"harvester_set","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":"bb1134c39c66c490"}},{"code_sha256_prefix":"a4dafc84cbeb2bb5","entry":"cdeint","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"controldiffeq/cdeint_module.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/controldiffeq/cdeint_module.py","link_basis":"harvester_set","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":"a4dafc84cbeb2bb5"}},{"code_sha256_prefix":"996764623af1eab9","entry":"get_logger","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/logger.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/logger.py","link_basis":"harvester_set","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":"996764623af1eab9"}},{"code_sha256_prefix":"e246ed362e86604f","entry":"init_lr_scheduler","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/TrainInits.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/TrainInits.py","link_basis":"harvester_set","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":"e246ed362e86604f"}},{"code_sha256_prefix":"ffe6b5e6a255061f","entry":"init_optim","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/TrainInits.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/TrainInits.py","link_basis":"harvester_set","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":"ffe6b5e6a255061f"}},{"code_sha256_prefix":"f06b9dde37d1edca","entry":"split_data_by_ratio","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/dataloader.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/dataloader.py","link_basis":"harvester_set","language":"python","status":"ran_draft_wrong","verification_level":1,"contract_check":"MISDECLARED","metamorphic_tier":"deterministic","behaviour_fingerprint":true,"licence":"MIT","inline_ok":true,"mcp_get_code":{"code_sha256":"f06b9dde37d1edca"}},{"code_sha256_prefix":"be27678f7901f1dc","entry":"Add_Window_Horizon","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/add_window.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/add_window.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":"be27678f7901f1dc"}},{"code_sha256_prefix":"2d4043d05780769f","entry":"MAE_torch","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/metrics.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/metrics.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":"2d4043d05780769f"}},{"code_sha256_prefix":"dadeb499af3778ba","entry":"RMSE_torch","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/metrics.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/metrics.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":"dadeb499af3778ba"}},{"code_sha256_prefix":"d11447048d8aee41","entry":"cdeint_gde","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"controldiffeq/cdeint_module.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/controldiffeq/cdeint_module.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":"d11447048d8aee41"}},{"code_sha256_prefix":"f79327f4cedd197d","entry":"cdeint_gde_dev","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"controldiffeq/cdeint_module.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/controldiffeq/cdeint_module.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":"f79327f4cedd197d"}},{"code_sha256_prefix":"d7187fc207b2d503","entry":"init_device","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/TrainInits.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/TrainInits.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":"d7187fc207b2d503"}},{"code_sha256_prefix":"691381e2874098e4","entry":"load_st_dataset","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/load_dataset.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/load_dataset.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":"691381e2874098e4"}},{"code_sha256_prefix":"7747ed35840050f5","entry":"make_model","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"model/Make_model.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/model/Make_model.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":"7747ed35840050f5"}},{"code_sha256_prefix":"0ef827883d7bf3e6","entry":"minmax_by_column","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/normalization.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/normalization.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":"0ef827883d7bf3e6"}},{"code_sha256_prefix":"132385707ec527a2","entry":"one_hot_by_column","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/normalization.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/normalization.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":"132385707ec527a2"}},{"code_sha256_prefix":"8266f31f7ee7c353","entry":"split_data_by_days","repo":"jeongwhanchoi/STG-NCDE","repo_kind":"official","path":"lib/dataloader.py","file_url":"https://github.com/jeongwhanchoi/STG-NCDE/blob/HEAD/lib/dataloader.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":"8266f31f7ee7c353"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}