{"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/robuststl-a-robust-seasonal-trend","title":"RobustSTL: A Robust Seasonal-Trend Decomposition Algorithm for Long Time Series","arxiv_id":"1812.01767","date":"2018-12-05","proceeding":null,"authors":["Qingsong Wen","Jingkun Gao","Xiaomin Song","Liang Sun","Huan Xu","Shenghuo Zhu"],"abstract":"Decomposing complex time series into trend, seasonality, and remainder\ncomponents is an important task to facilitate time series anomaly detection and\nforecasting. Although numerous methods have been proposed, there are still many\ntime series characteristics exhibiting in real-world data which are not\naddressed properly, including 1) ability to handle seasonality fluctuation and\nshift, and abrupt change in trend and reminder; 2) robustness on data with\nanomalies; 3) applicability on time series with long seasonality period. In the\npaper, we propose a novel and generic time series decomposition algorithm to\naddress these challenges. Specifically, we extract the trend component robustly\nby solving a regression problem using the least absolute deviations loss with\nsparse regularization. Based on the extracted trend, we apply the the non-local\nseasonal filtering to extract the seasonality component. This process is\nrepeated until accurate decomposition is obtained. Experiments on different\nsynthetic and real-world time series datasets demonstrate that our method\noutperforms existing solutions.","url_abs":"http://arxiv.org/abs/1812.01767v1","url_pdf":"http://arxiv.org/pdf/1812.01767v1.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":"robuststl-a-robust-seasonal-trend","repo_url":"https://github.com/LeeDoYup/RobustSTL","is_official":0,"mentioned_in_paper":0,"mentioned_in_github":1,"framework":"none","reach":{"status":"ok","spdx":"MIT"}}],"tasks":[{"task_slug":"anomaly-detection","task_name":"Anomaly Detection"},{"task_slug":"time-series-1","task_name":"Time Series"},{"task_slug":"time-series","task_name":"Time Series Analysis"},{"task_slug":"time-series-anomaly-detection","task_name":"Time Series Anomaly Detection"}],"methods":[],"datasets_introduced":[],"methods_introduced":[],"results":[],"syntology":{"syntology_url":"https://syntology.ai/paper/1812.01767","atlas_url":"https://app.syntology.ai/?focus=1812.01767","mcp":{"get_harvested_code_for_paper":{"arxiv_id":"1812.01767"}},"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/LeeDoYup/RobustSTL","reach":{"status":"ok","spdx":"MIT"}}],"summary":{"unverified":8},"by_repo_kind":{"listed":{"samples":8,"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":0,"samples":[{"code_sha256_prefix":"b3d624ec2c2d7371","entry":"bilateral_filter","repo":"LeeDoYup/RobustSTL","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/LeeDoYup/RobustSTL/blob/HEAD/utils.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":"b3d624ec2c2d7371"}},{"code_sha256_prefix":"1be04c0d1d9eb219","entry":"denoise_step","repo":"LeeDoYup/RobustSTL","repo_kind":"listed","path":"RobustSTL.py","file_url":"https://github.com/LeeDoYup/RobustSTL/blob/HEAD/RobustSTL.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":"1be04c0d1d9eb219"}},{"code_sha256_prefix":"8148c7c6db7d901e","entry":"get_change","repo":"LeeDoYup/RobustSTL","repo_kind":"listed","path":"sample_generator.py","file_url":"https://github.com/LeeDoYup/RobustSTL/blob/HEAD/sample_generator.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":"8148c7c6db7d901e"}},{"code_sha256_prefix":"5940122227cceb3b","entry":"get_neighbor_idx","repo":"LeeDoYup/RobustSTL","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/LeeDoYup/RobustSTL/blob/HEAD/utils.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":"5940122227cceb3b"}},{"code_sha256_prefix":"b4158afb58f74edc","entry":"get_neighbor_range","repo":"LeeDoYup/RobustSTL","repo_kind":"listed","path":"utils.py","file_url":"https://github.com/LeeDoYup/RobustSTL/blob/HEAD/utils.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":"b4158afb58f74edc"}},{"code_sha256_prefix":"467966fd7d290218","entry":"get_random_choice","repo":"LeeDoYup/RobustSTL","repo_kind":"listed","path":"sample_generator.py","file_url":"https://github.com/LeeDoYup/RobustSTL/blob/HEAD/sample_generator.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":"467966fd7d290218"}},{"code_sha256_prefix":"abb42801da1b9efc","entry":"get_season","repo":"LeeDoYup/RobustSTL","repo_kind":"listed","path":"sample_generator.py","file_url":"https://github.com/LeeDoYup/RobustSTL/blob/HEAD/sample_generator.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":"abb42801da1b9efc"}},{"code_sha256_prefix":"6d2c9799a87a0f6f","entry":"seasonality_extraction","repo":"LeeDoYup/RobustSTL","repo_kind":"listed","path":"RobustSTL.py","file_url":"https://github.com/LeeDoYup/RobustSTL/blob/HEAD/RobustSTL.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":"6d2c9799a87a0f6f"}}]},"arxiv_metadata":null,"syntology_extracted_results":null}