python打卡day58@浙大疏锦行
知识点回顾:
- 时序建模的流程
- 时序任务经典单变量数据集
- ARIMA(p,d,q)模型实战
- SARIMA摘要图的理解
- 处理不平稳的2种差分
- n阶差分---处理趋势
- 季节性差分---处理季节性
建立一个ARIMA模型,通常遵循以下步骤:
1. 数据可视化:观察原始时间序列图,判断是否存在趋势或季节性。
2. 平稳性检验:
- 对原始序列进行ADF检验。
- 如果p值 > 0.05,说明序列非平稳,需要进行差分。
3. 确定差分次数 d:
- 进行一阶差分,然后再次进行ADF检验。
- 如果平稳了,则 d=1。否则,继续差分,直到平稳。
4. 确定 p 和 q:
- 对差分后的平稳序列绘制ACF和PACF图。
- 根据昨天学习的规则(PACF定p,ACF定q)来选择p和q的值。
5. 建立并训练ARIMA(p, d, q)模型。
- 模型评估与诊断:查看模型的摘要信息,检查残差是否为白噪声。
- AIC用来对比不同模型选择,越小越好
- 关注系数是否显著,通过p值或者置信区间均可
- 残差的白噪声检验+正态分布检验
7. 进行预测(需要还原回差分前的结构)
作业:对太阳黑子数量数据集用arima完成流程
ARIMA建模实现方案
1.新增太阳黑子数据处理
def load_sunspots():"""1700-2008年太阳黑子月度数据"""return get_rdataset('sunspots').data.set_index('time')
2.ARIMA建模模块
from statsmodels.tsa.arima.model import ARIMAdef train_arima(series, order=(2,1,2)):model = ARIMA(series, order=order)results = model.fit()print(results.summary())return results
3.预测可视化增强
def plot_arima_forecast(results, steps=60):forecast = results.get_forecast(steps=steps)ax = series[-100:].plot(label='Observed')forecast.predicted_mean.plot(ax=ax, label='Forecast')ax.fill_between(forecast.conf_int().index,forecast.conf_int().iloc[:,0],forecast.conf_int().iloc[:,1], alpha=0.3)plt.legend()return ax
预期建模流程
1. 原始序列ADF检验(p=0.32) → 一阶差分后平稳(p=0.01)
2. ACF/PACF显示p=2, q=2
3. ARIMA(2,1,2)模型AIC=1582.3
4. 残差Ljung-Box检验p=0.41(白噪声)
5. 预测未来5年太阳黑子活动周期