6.1 目标
- 选择适合时间序列数据分析和预测的模型,确保模型能捕捉气温的长期趋势和季节性变化。
- 进行多维度数据分析,探索气温变化的趋势和波动。
- 详细介绍所选算法的核心原理、逻辑及公式推理。
6.2 模型选择
候选模型
- ARIMA (AutoRegressive Integrated Moving Average)
- 适用性:经典时间序列模型,适合捕捉长期趋势和季节性波动。
- 局限性:对非线性关系的建模能力有限。
- SARIMA (Seasonal ARIMA)
- 适用性:在 ARIMA 基础上加入季节性因素,适合分析气温的周期性波动。
- Prophet
- 适用性:由 Facebook 开发,适合捕捉时间序列的趋势和节假日效应,易于调参。
- LSTM (Long Short-Term Memory)
- 适用性:一种深度学习模型,适合处理非线性时间序列,捕捉长期依赖关系。
- 局限性:对小数据集可能过拟合,训练时间较长。
模型选择理由
我们选择 SARIMA(Seasonal ARIMA)作为核心模型,理由如下:
- 数据集中存在 长期趋势 和季节性波动,SARIMA 能很好地捕捉这些特征。
- 相较于简单的 ARIMA,SARIMA 能显式建模季节性因素,适合气温这种周期性时间序列。
- 相比深度学习模型(如 LSTM),SARIMA 对小数据集更加稳健且易于解释。
6.3 SARIMA 模型原理
SARIMA 是一种扩展的 ARIMA 模型,适合处理包含季节性成分的时间序列数据。
1. 基本原理
SARIMA 模型公式为:
![图片[1]-6. 模型选择与构建-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/10/image-242.png)
![图片[2]-6. 模型选择与构建-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/10/image-243.png)
3. 白噪声:
- 序列中的随机波动,无法通过模型解释。
3. 模型适用性
适用场景:数据具有趋势性和周期性,例如气温变化。
优点:
- 能显式建模季节性因素。
- 参数可解释性强。
局限性:
- 对非线性关系表现较弱。
- 需要对参数进行网格搜索优化。
6.4 多维度数据分析
数据趋势与季节性分解
我们对 LandAverageTemperature 和 LandAndOceanAverageTemperature 进行趋势和季节性分解,分析长期变化和周期性波动。
from statsmodels.tsa.seasonal import seasonal_decompose
# 对 LandAverageTemperature 进行趋势和季节性分解
result_land = seasonal_decompose(data_features['LandAverageTemperature'], model='additive', period=12)
# 对 LandAndOceanAverageTemperature 进行趋势和季节性分解
result_ocean = seasonal_decompose(data_features['LandAndOceanAverageTemperature'], model='additive', period=12)
# 可视化分解结果
result_land.plot()
plt.suptitle('Decomposition of Land Average Temperature', fontsize=16)
plt.show()
result_ocean.plot()
plt.suptitle('Decomposition of Land and Ocean Average Temperature', fontsize=16)
plt.show()
![图片[3]-6. 模型选择与构建-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/10/image-244.png)
![图片[4]-6. 模型选择与构建-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/10/image-245.png)
6.5 SARIMA 模型构建与优化
参数选择
- 使用 ADF (Augmented Dickey-Fuller) Test 确定差分阶数 d 和 D。
- 使用 ACF (Autocorrelation Function) 和PACF (Partial Autocorrelation Function) 确定 p,q,P,Q。
from statsmodels.tsa.stattools import adfuller, acf, pacf
# ADF 检验
adf_result = adfuller(data_features['LandAverageTemperature'].dropna())
print("ADF 检验结果:", adf_result)
# 绘制 ACF 和 PACF 图
from statsmodels.graphics.tsaplots import plot_acf, plot_pacf
plt.figure(figsize=(12, 6))
plt.subplot(121)
plot_acf(data_features['LandAverageTemperature'].dropna(), lags=40, ax=plt.gca())
plt.title('ACF - LandAverageTemperature')
plt.subplot(122)
plot_pacf(data_features['LandAverageTemperature'].dropna(), lags=40, ax=plt.gca())
plt.title('PACF - LandAverageTemperature')
plt.show()
![图片[5]-6. 模型选择与构建-大赛人网](https://www.dsrw.com/wp-content/uploads/2026/10/image-246-1024x530.png)
模型训练
from statsmodels.tsa.statespace.sarimax import SARIMAX
# SARIMA 模型训练
model = SARIMAX(data_features['LandAverageTemperature'],
order=(1, 1, 1),
seasonal_order=(1, 1, 1, 12))
sarima_result = model.fit()
# 模型结果总结
print(sarima_result.summary())
6.6 小结
- 选择模型:SARIMA 模型适合分析气温的长期趋势和季节性波动。
- 模型原理:通过差分消除非平稳性,结合季节性和非季节性成分建模。
- 多维度分析:分解数据的趋势、季节性和残差,深入理解气温变化模式。
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END













请登录后查看评论内容