时间序列的组成与平稳性
趋势、季节性、噪声、用于检验平稳性的 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 反馈 — 无需本地设置。