我注意到在为不同类型的算法( AutoETS和AutoARIMA )指定预测间隔时存在不一致之处。我不确定这是一个bug还是一个特性。
from matplotlib import pyplot as plt
from sktime.datasets import load_airline
from sktime.forecasting.model_selection import temporal_train_test_split
from sktime.forecasting.base import ForecastingHorizon
y = load_airline()
y_train,y_test = temporal_train_test_split(y)
fh = ForecastingHorizon(y_test.index, is_relative=False)
from sktime.forecasting.ets import AutoETS
model = AutoETS(trend='add',seasonal='mul',sp=12)
model.fit(y_train,fh=y_test.index)
preds_ets_05 = model.predict(fh,return_pred_int=True,alpha=0.05)
preds_ets_95 = model.predict(fh,return_pred_int=True,alpha=0.95)
from sktime.forecasting.arima import AutoARIMA
model = AutoARIMA(tsp=12)
model.fit(y_train,fh=y_test.index)
preds_arima_05 = model.predict(fh,return_pred_int=True,alpha=0.05)
preds_arima_95 = model.predict(fh,return_pred_int=True,alpha=0.95)如果我们绘制预测图,我们得到:
figs, (ax1,ax2) = plt.subplots(2,sharey=True)
ax1.fill_between(preds_ets_05[0].index.to_timestamp('M'),
preds_ets_05[1]['lower'],
preds_ets_05[1]['upper'],
alpha=0.25,
color='green',
label = 'ets')
ax1.fill_between(preds_arima_05[0].index.to_timestamp('M'),
preds_arima_05[1]['lower'],
preds_arima_05[1]['upper'],
alpha=0.25,
color='red',
label ='arima')
ax1.tick_params(rotation=45)
ax1.set_title('alpha=0.05')
ax1.legend()
ax2.fill_between(preds_ets_95[0].index.to_timestamp('M'),
preds_ets_95[1]['lower'],
preds_ets_95[1]['upper'],
alpha=0.25,
color='green',
label = 'ets')
ax2.fill_between(preds_arima_95[0].index.to_timestamp('M'),
preds_arima_95[1]['lower'],
preds_arima_95[1]['upper'],
alpha=0.25,
color='red',
label = 'arima')
ax2.tick_params(rotation=45)
ax2.set_title('alpha=0.95')
ax2.legend()
plt.tight_layout()
plt.show()

看起来阿尔法的定义对于其中一种阿尔戈斯来说是颠倒的。
发布于 2022-03-31 16:41:37
版本0.10.X中已知的错误(随着覆盖范围的扩大,间隔应该变得更宽),应该在0.11.0中修复,请参见https://github.com/alan-turing-institute/sktime/discussions/2334
https://stackoverflow.com/questions/71545912
复制相似问题