Urielledezma/Time-Series
GitHub: Urielledezma/Time-Series
一套基于R语言的实用时间序列实战课程与代码库,结合fable与forecast双生态,专注于真实的业务预测、时序验证与决策分析。
Stars: 0 | Forks: 0
# R 中的时间序列 — 实用预测、验证与决策(混合:fable + forecast)
[](#)
[](LICENSE)
[](#)
一个基于 **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, 代码示例, 可复现工作流, 商业决策, 回测, 开源项目, 异常检测, 指数平滑, 教学课程, 数据分析, 数据科学, 数据科学教程, 时间序列分析, 时间序列分解, 时间序列预测, 时间感知验证, 机器学习, 滚动验证, 特征工程, 现实案例, 统计学习, 资源验证, 金融分析, 需求预测, 预测建模, 预测模型