0Pricing
Learn AI with Python · 课时

时间序列的组成与平稳性

趋势、季节性、噪声、用于检验平稳性的 ADF,以及通过差分实现平稳。

时间序列的组成与平稳性 是 CoddyKit 上的免费 Learn AI with Python 课时。 这是第 1 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Learn AI with Python 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Learn AI with Python 课程共包含 4 节课。

什么是时间序列

时间序列是按照时间顺序建立索引的数据,例如每日销售额或每小时温度。由于观测值具有顺序性且通常彼此相关,因此需要使用特殊技术;您不能像处理普通表格数据那样随意打乱各行。

三个组成部分

经典观点会将一个序列分解为:

  • 趋势:长期向上或向下的变化。
  • 季节性:以固定周期重复出现的模式(每周、每年)。
  • 残差:移除趋势和季节性后剩余的随机噪声。

加法模型与乘法模型

在加法模型中:y = trend + seasonality + residual,适用于季节性波动幅度基本不变的情况。

在乘法模型中:y = trend * seasonality * residual,适用于季节性波动会随趋势增长的情况。

seasonal_decompose

statsmodels 可以自动将序列拆分为各个组成部分。

from statsmodels.tsa.seasonal import seasonal_decompose

result = seasonal_decompose(series, model="additive", period=12)
result.trend
result.seasonal
result.resid

可视化分解结果

绘制结果会将各个组成部分依次显示,使趋势和季节性一目了然,并帮助您选择预测方法。

import matplotlib.pyplot as plt

result.plot()
plt.tight_layout()
plt.show()

什么是平稳性

当一个序列的统计特性(均值、方差、自相关)随时间保持不变时,它就是平稳的。许多经典模型(例如 ARIMA)都假设序列平稳,因此检查并确保平稳性是关键的第一步。

平稳性为何重要

如果均值随时间漂移或方差不断增大,那么在早期数据上拟合的模型就无法推广到后续数据。移除趋势并稳定方差,可以让序列以一致的方式变得可预测。

ADF 检验

增强 Dickey-Fuller(ADF)检验用于检查平稳性。原假设是“非平稳(存在单位根)”。当 p 值低于 0.05 时,您可以拒绝原假设,并将该序列视为平稳序列。

from statsmodels.tsa.stattools import adfuller

stat, pvalue, *_ = adfuller(series)
print("p-value:", pvalue)
# pvalue < 0.05  -> stationary

通过差分实现平稳

差分会用当前值减去前一个值,从而移除趋势。一次差分通常可以处理线性趋势;如有需要,可以再次进行差分。

diff1 = series.diff().dropna()      # first difference
diff2 = series.diff().diff().dropna()  # second difference

差分后的确认

请在差分后的序列上重新运行 ADF 检验。当 p 值降至 0.05 以下时,说明序列已经平稳,同时您也确定了差分阶数 d,它会直接用于 ARIMA。

stat, pvalue, *_ = adfuller(series.diff().dropna())
print("p-value after differencing:", pvalue)

其他稳定化变换

如果方差随时间增长,可以在差分前使用对数或 Box-Cox 变换来稳定方差。将对数变换与差分结合,可以处理许多现实中的乘法增长型序列。

import numpy as np

log_series = np.log(series)
stationary = log_series.diff().dropna()

快速检查

请检验您对平稳性的理解。

回顾

您使用 seasonal_decompose 将序列分解为趋势、季节性和残差,学习了加法模型与乘法模型,使用ADF 检验测试了平稳性,并通过差分(阶数 d)使序列达到平稳。下一步:ARIMA 和 SARIMA。

常见问题解答

「时间序列的组成与平稳性」课时是免费的吗?

是的 — 「时间序列的组成与平稳性」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Learn AI with Python 课程的其余内容,请升级到 CoddyKit PRO。 Learn AI with Python 课程共包含 4 节课。

「时间序列的组成与平稳性」这节课中我会学到什么?

趋势、季节性、噪声、用于检验平稳性的 ADF,以及通过差分实现平稳。 你通过在浏览器中直接运行的动手代码来练习 Learn AI with Python,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Learn AI with Python 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Learn AI with Python 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 1 节课,共 4 节。

「时间序列的组成与平稳性」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Learn AI with Python 课中编写并运行代码吗?

能。每节 Learn AI with Python 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 时间序列的组成与平稳性
  2. ARIMA 与 SARIMA 模型
  3. 使用 Prophet 自动预测
  4. 使用 LSTM 进行时间序列预测
← 返回 Learn AI with Python