加上强机关网站建设管理的通知,建湖人才网官网登录,网站备案后换空间,wordpress联系页面一、学习内容
1. 模型选择的标准与方法#xff08;如 AIC、BIC#xff09;
在时间序列建模中#xff0c;模型的选择是非常重要的#xff0c;常用的模型选择标准包括 AIC (Akaike Information Criterion) 和 BIC (Bayesian Information Criterion)。 AIC (Akaike Informat…一、学习内容
1. 模型选择的标准与方法如 AIC、BIC
在时间序列建模中模型的选择是非常重要的常用的模型选择标准包括 AIC (Akaike Information Criterion) 和 BIC (Bayesian Information Criterion)。 AIC (Akaike Information Criterion) AIC 衡量模型的拟合优度和复杂度之间的权衡。其公式为 其中 是模型的似然函数 是模型参数的个数。AIC 值越小模型越优。 BIC (Bayesian Information Criterion) BIC 是基于贝叶斯信息准则的模型选择标准公式为 其中 是样本量。BIC 比 AIC 更加倾向于选择简单模型。
2. 时间序列模型的组合预测方法
组合预测 是通过将多个不同模型的预测结果进行加权组合期望能提高预测准确性。组合预测可以减轻单一模型的局限性平滑不同模型的偏差。
常用的组合预测方法有
简单平均法不同模型的预测结果取平均值。加权平均法根据模型的表现给予不同模型不同的权重。
3. 基于不同模型的加权组合预测
通过使用不同时间序列模型如 ARIMA、SARIMA、ETS 模型等可以进行加权组合预测。我们可以使用 AIC 或 BIC 值来决定各模型的权重权重越低的模型被赋予更大的权重。
二、实战案例
使用不同时间序列模型进行组合预测在这个案例中我们将使用 ARIMA、SARIMA 和 Holt-Winters 三种不同的时间序列模型进行组合预测并比较组合预测与单一模型的效果。
1. 生成模拟时间序列
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from statsmodels.tsa.arima.model import ARIMA
from statsmodels.tsa.holtwinters import ExponentialSmoothing
from statsmodels.tsa.statespace.sarimax import SARIMAX# 生成模拟的时间序列数据
np.random.seed(42)
n_obs 150
time pd.date_range(start2000-01-01, periodsn_obs, freqM)
trend 0.1 * np.arange(n_obs)
seasonal 10 * np.sin(2 * np.pi * time.month / 12)
noise np.random.normal(0, 1, n_obs)
data trend seasonal noise# 创建数据框
ts_data pd.DataFrame({Date: time, Value: data})
ts_data.set_index(Date, inplaceTrue)# 绘制时间序列
plt.figure(figsize(10, 6))
plt.plot(ts_data[Value], labelOriginal Data)
plt.title(Simulated Time Series Data)
plt.legend()
plt.show()
代码解释
我们生成了一个含有趋势、季节性和噪声的模拟时间序列。
结果输出 代码解释
2. 模型拟合与预测
# 构建并拟合 ARIMA 模型
arima_model ARIMA(ts_data[Value], order(1, 1, 1)).fit()
arima_forecast arima_model.forecast(steps12)
arima_aic arima_model.aic# 构建并拟合 SARIMA 模型
sarima_model SARIMAX(ts_data[Value], order(1, 1, 1), seasonal_order(1, 1, 1, 12)).fit()
sarima_forecast sarima_model.forecast(steps12)
sarima_aic sarima_model.aic# 构建并拟合 Holt-Winters 模型
hw_model ExponentialSmoothing(ts_data[Value], trendadd, seasonaladd, seasonal_periods12).fit()
hw_forecast hw_model.forecast(steps12)
hw_aic hw_model.aic# 绘制各模型的预测结果
plt.figure(figsize(10, 6))
plt.plot(ts_data.index, ts_data[Value], labelOriginal Data)
plt.plot(pd.date_range(startts_data.index[-1], periods12, freqM), arima_forecast, labelARIMA Forecast)
plt.plot(pd.date_range(startts_data.index[-1], periods12, freqM), sarima_forecast, labelSARIMA Forecast)
plt.plot(pd.date_range(startts_data.index[-1], periods12, freqM), hw_forecast, labelHolt-Winters Forecast)
plt.title(Forecasts of Different Models)
plt.legend()
plt.show()
代码解释
使用 ARIMA、SARIMA 和 Holt-Winters 三种模型对时间序列数据进行拟合并对未来 12 个月进行预测。获取每个模型的 AIC 值作为模型优劣的评估指标。
结果输出 3. 加权组合预测
# 加权组合预测权重根据 AIC 值反比计算
total_aic 1/arima_aic 1/sarima_aic 1/hw_aic
arima_weight (1/arima_aic) / total_aic
sarima_weight (1/sarima_aic) / total_aic
hw_weight (1/hw_aic) / total_aiccombined_forecast arima_weight * arima_forecast sarima_weight * sarima_forecast hw_weight * hw_forecast代码解释
根据每个模型的 AIC 值计算各自的权重。AIC 越小模型越优因此权重根据 AIC 值的倒数计算。使用加权组合方法对三个模型的预测结果进行组合得到最终的组合预测。
4. 结果可视化
# 绘制组合预测结果
plt.figure(figsize(10, 6))
plt.plot(ts_data.index, ts_data[Value], labelOriginal Data)
plt.plot(pd.date_range(startts_data.index[-1], periods12, freqM), combined_forecast, labelCombined Forecast, linestyle--)
plt.title(Combined Forecast Using ARIMA, SARIMA, and Holt-Winters)
plt.legend()
plt.show()# 打印各模型的AIC值和权重
print(fARIMA AIC: {arima_aic}, Weight: {arima_weight})
print(fSARIMA AIC: {sarima_aic}, Weight: {sarima_weight})
print(fHolt-Winters AIC: {hw_aic}, Weight: {hw_weight})
代码解释
绘制各个模型的单独预测结果并绘制加权组合后的预测结果。
结果输出 ARIMA AIC: 736.542904871795, Weight: 0.00031402143071579
SARIMA AIC: 417.8555476646313, Weight: 0.0005535172574926239
Holt-Winters AIC: 0.23149108424296116, Weight: 0.9991324613117917 三、结果分析
AIC 值比较每个模型的 AIC 值用于评估模型的优劣。AIC 越小模型的拟合效果越好。单一模型预测我们分别绘制了 ARIMA、SARIMA 和 Holt-Winters 模型的预测结果。加权组合预测最终的组合预测曲线结合了各个模型的优势提供了更加稳健的预测结果。
四、总结
在本案例中我们通过 AIC 值选择了最佳的模型并通过加权组合预测方法结合了 ARIMA、SARIMA 和 Holt-Winters 模型的预测结果。组合预测能够减轻单一模型可能带来的偏差通常能提高预测准确性。