用途
时间序列分析用于检查按时间顺序采集的数据点,识别其中的模式、趋势与季节性,从而进行预测并理解时间动态。它适合以下场景:基于历史趋势预测未来值;检测数据中的季节性与周期性模式;分析销售、股价或网站流量随时间的变化趋势;理解自相关与时间依赖关系;进行带置信区间的时间预测;将数据分解为趋势、季节与残差分量。
核心概念
- 趋势(Trend):长期方向性运动。
- 季节性(Seasonality):固定间隔上的重复模式。
- 周期性(Cyclicity):长期振荡(周期不固定)。
- 平稳性(Stationarity):均值、方差随时间保持恒定。
- 自相关(Autocorrelation):与过去值的相关性。
主要技术
- 分解(Decomposition):分离趋势、季节、残差分量。
- 差分(Differencing):使数据平稳化。
- ARIMA:自回归积分滑动平均模型。
- 指数平滑(Exponential Smoothing):过去值的加权平均。
- SARIMA:带季节项的 ARIMA 模型。
使用方式(Python 实现)
该技能提供完整的 Python 代码示例,依赖 pandas、numpy、matplotlib 与 statsmodels。主要步骤包括:
- 创建或载入时间序列数据,并可视化原始序列。
- 使用 seasonal_decompose 进行加性分解,绘制趋势、季节与残差分量。
- 使用 adfuller 进行增广迪基-福勒(ADF)平稳性检验;若 p 值大于 0.05 则说明非平稳,需进行差分。
- 对差分后序列再次进行 ADF 检验。
- 使用 plot_acf 与 plot_pacf 绘制自相关与偏自相关图。
- 拟合 ARIMA 模型(示例 order=(1,1,1)),输出摘要。
- 使用 get_forecast 进行多步预测,并绘制带置信区间的预测图。
- 使用 ExponentialSmoothing 拟合指数平滑模型,并绘制诊断图。
- 计算不同窗口(如 7、30、90)的移动平均并绘图。
- 绘制季节子序列图。
- 使用 grangercausalitytests 进行格兰杰因果检验(多序列场景)。
- 计算 ACF/PACF 数值。
- 计算季节强度(seasonal_strength)。
- 绘制多步前瞻预测。
- 输出模型比较摘要,包括趋势强度与季节强度。
关键代码片段(保留原样):
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from statsmodels.tsa.seasonal import seasonal_decompose
from statsmodels.tsa.stattools import adfuller, acf, pacf
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.holtwinters import ExponentialSmoothing
result = adfuller(ts)
print(f"ADF Test Statistic: {result[0]:.6f}")
print(f"P-value: {result[1]:.6f}")
print(f"Critical Values: {result[4]}")
arima_model = ARIMA(ts, order=(1, 1, 1))
arima_result = arima_model.fit()
print(arima_result.summary())
exp_smooth = ExponentialSmoothing(
ts, seasonal_periods=30, trend='add', seasonal='add', initialization_method='estimated'
)
exp_result = exp_smooth.fit()
def calculate_forecast_metrics(actual, predicted):
mae = np.mean(np.abs(actual - predicted))
rmse = np.sqrt(np.mean((actual - predicted) ** 2))
mape = np.mean(np.abs((actual - predicted) / actual)) * 100
return {'MAE': mae, 'RMSE': rmse, 'MAPE': mape}
平稳性
- 平稳:均值、方差、自相关随时间恒定。
- 非平稳:存在趋势或季节模式。
- 解决方案:差分、对数变换或去趋势。
模型选择
- ARIMA:适合单变量预测。
- SARIMA:包含季节分量。
- 指数平滑:更简单,适合趋势。
- Prophet:可处理节假日与变化点。
评估指标
- MAE:平均绝对误差。
- RMSE:均方根误差。
- MAPE:平均绝对百分比误差。
交付物
- 分解分析图表
- 平稳性检验结果
- ACF/PACF 图
- 带诊断信息的拟合模型
- 带置信区间的预测
- 精度指标比较
适用场景
适用于销售预测、股价分析、网站流量趋势分析等随时间变化的数据场景,帮助理解时间依赖关系并做出带置信区间的预测。
限制
资料未提供关于收费、价格、平台支持范围、具体使用步骤之外的额外限制说明,暂未提供。