Urielledezma/Time-Series

GitHub: Urielledezma/Time-Series

一套基于R语言的实用时间序列实战课程与代码库,结合fable与forecast双生态,专注于真实的业务预测、时序验证与决策分析。

Stars: 0 | Forks: 0

# R 中的时间序列 — 实用预测、验证与决策(混合:fable + forecast) [![R](https://img.shields.io/badge/R-%3E%3D%204.2-blue)](#) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Status](https://img.shields.io/badge/status-active-brightgreen)](#) 一个基于 **R** 的实用**时间序列**仓库,旨在实现以下两个目标: - 一个**面向工业界的作品集**(整洁、可复现、评估优先的工作流),以及 - 一个面向大众的**公共参考资料**,适合任何对时间序列有疑问的人——即使你是 R 新手。 本仓库有意采用了**混合生态系统**: - **Tidy 时间序列**工具(`tsibble`、`fable`、`feasts`),用于现代、模块化的工作流,以及 - **经典**工具(`forecast`),因为它们仍被广泛使用并常见于实际团队中。 ## 学习路线图(推荐路径) | 模块 | 你将学到什么 | 查阅位置 | |---|---|---| | 00 — 设置与基础 | 如何运行项目、项目结构、时间序列的“陷阱” | `notes/` + `notebooks/00_*` | | 01 — EDA 与基线模型 | 季节性模式、朴素/季节性朴素模型、合理性检查 | `notebooks/01_*` | | 02 — 分解 | STL、趋势/季节性、残差思维 | `notes/decomposition*` + `notebooks/02_*` | | 03 — 特征工程 | 滞后项、滚动窗口、日历效应 | `notebooks/03_*` + `scripts/feature_*` | | 04 — ETS | 指数平滑、诊断、稳定性 | `notebooks/04_*` | | 05 — ARIMA/SARIMA | 模型识别、诊断、SARIMA 季节性 | `notebooks/05_*` | | 06 — 回溯测试 | 滚动向前/滚动原点、无泄漏验证 | `notebooks/06_*` + `scripts/backtest_*` | | 07 — 异常 | 基于残差的检测、阈值、告警思维 | `notebooks/07_*` | | 08 — 案例研究 | 需求预测、KPI 监控、事件复盘 | `notebooks/08_*` | ## 你将在这里找到什么 ### 核心主题(实用) - 分解(包括 **STL**) - 使用 **ETS** 和 **ARIMA/SARIMA** 进行预测 - 时间数据的特征工程(滞后项、滚动窗口、日历特征) - 具备时间意识的验证:滚动向前 / 滚动原点回溯测试 - 预测评估:MAE、RMSE、MAPE/sMAPE(及其权衡) - 异常检测(基于残差 + 业务阈值) - 可复现的工作流(整洁的脚本、以 Notebook 优先的解释) ### 本仓库不是什么 - 不是纯理论的合集 - 不局限于单一数据集 - 不针对排行榜式的“单次划分”性能进行优化 ## 适合人群 - 负责预测需求、收入、产品指标、运营、财务、能源等的**分析师 / 数据科学家 / 机器学习工程师**。 - 希望通过可运行代码进行实践学习的**学生**。 - 在遇到时间序列概念时需要参考资料的**任何人**。 刚接触 R?你依然可以跟上进度——从**快速开始**看起。 ## 仓库结构 ``` . ├── slides/ # Slides (html/pdf) ├── notes/ # Topic notes (Markdown) ├── notebooks/ # Quarto/Rmd notebooks (reproducible) ├── scripts/ # Reusable R code (functions, pipelines) ├── data/ │ ├── raw/ # Immutable source data │ └── processed/ # Modeling-ready datasets ├── assignments/ # Exercises + rubrics (optional) ├── outputs/ # Figures, reports, saved models ├── LICENSE └── README.md ``` ## 快速开始(方便复制粘贴) ### 1) 环境要求 * **R >= 4.2** * 推荐:**RStudio** * 可选但强烈推荐用于 Notebook:**Quarto** ### 2) 克隆 ``` git clone https://github.com/Urielledezma/Time-Series.git cd Time-Series ``` ### 3) 安装依赖 #### 选项 A(推荐):使用 `renv` 保证可复现性 ``` install.packages("renv") renv::init() # typically done by repo owner once renv::restore() # restores exact versions once a lockfile exists ``` #### 选项 B:快速安装(常用包) ``` install.packages(c( "tidyverse", "lubridate", "tsibble", "fable", "fabletools", "feasts", "forecast", "yardstick" )) ``` ### 4) 运行 Notebook 在 RStudio 中打开 `notebooks/` 中的任意文件,然后点击 **Render** / **Run**。 ## 评估理念(工业界思维) 预测首先是一个评估问题: * 选择**具备时间意识**的验证策略(避免数据泄漏) * 与强大的**基线模型**(朴素 / 季节性朴素)进行对比 * 使用反映成本的指标(MAE vs RMSE vs sMAPE 等) * 追踪**随时间变化的稳定性**,而不仅仅是单次划分的结果 * 诊断失败原因(残差模式、状态转变、假日效应) ## 混合生态系统:为什么同时使用 `fable` 和 `forecast`? * `tsibble`/`fable`/`feasts` 支持现代、整洁的工作流和模块化建模。 * `forecast` 在生产代码库和面试中仍然很常见,了解“经典”工具是很有用的。 在可能的情况下,Notebook 会将以下内容并排展示: * 一种 **tidy** 方法(tsibble/fable),以及 * 一种**经典**方法(forecast), 以便你能在两者之间自如转换。 ## 数据策略 * 小型数据集可以存放在 `data/raw/` 中。 * 大型或受限数据集不应提交至仓库: * 添加一个下载脚本(例如 `scripts/01_download_data.R`) * 记录数据来源 + 许可证 * 确保 `data/processed/` 可以从原始数据复现 如果你添加了第三方数据,请在相关的笔记/Notebook 中包含归属说明(来源 + 许可证)。 ## 代码规范 * 对象和函数使用 `snake_case` 命名 * 脚本按流水线阶段编号(示例): * `scripts/01_ingest.R` * `scripts/02_clean.R` * `scripts/03_features.R` * `scripts/04_train.R` * `scripts/05_backtest.R` * `scripts/06_report.R` 可选(随着仓库规模扩大): * 使用 `styler` 进行自动格式化 * 使用 `lintr` 进行代码静态检查 * 使用 `testthat` 编写单元测试(针对核心工具函数) ## 路线图 * [ ] 创建完整的文件夹结构(`slides/`、`notes/`、`notebooks/`、`data/`、`scripts/`) * [ ] Notebook:EDA + 基线模型(朴素/季节性朴素) * [ ] Notebook:STL + 特征工程 * [ ] Notebook:ETS + 诊断 * [ ] Notebook:ARIMA/SARIMA + 滚动向前回溯测试 * [ ] Notebook:异常检测 + 告警阈值 * [ ] 案例研究:需求预测 + KPI 异常监控 * [ ] 增加可复现性:提交 `renv.lock` * [ ] 添加 CI 徽章(R CMD check / lint / render) ## 许可证 MIT — 详见 [`LICENSE`](LICENSE)。 ## 引用 ``` @misc{time_series_urielledezma, author = {Urielledezma}, title = {Time-Series in R: Practical Forecasting, Validation \& Decision-Making (Mixed fable + forecast)}, year = {2026}, publisher = {GitHub}, howpublished = {\url{https://github.com/Urielledezma/Time-Series}}, note = {MIT License} } ``` ``` ::contentReference[oaicite:0]{index=0} ```
标签:Apex, ARIMA, DNS解析, ETS, fable, feasts, forecast, KPI监控, R脚本, R语言, SARIMA, STL分解, Tidyverse, tsibble, 代码示例, 可复现工作流, 商业决策, 回测, 开源项目, 异常检测, 指数平滑, 教学课程, 数据分析, 数据科学, 数据科学教程, 时间序列分析, 时间序列分解, 时间序列预测, 时间感知验证, 机器学习, 滚动验证, 特征工程, 现实案例, 统计学习, 资源验证, 金融分析, 需求预测, 预测建模, 预测模型