ARIMA是一种非常流行的时间序列预测统计方法,它是自回归综合移动平均(Auto-Regressive Integrated Moving Averages)的首字母缩写。ARIMA模型建立在以下假设的基础上: 数据序列是平稳的,这意味着均值和方差不应随时间而变化。 通过对数变换或差分可以使序列平稳。
一、数据的平稳性
二、差分法(让数据变得更平稳)
让数据变得更平稳。
- 一阶差分:在原数据上做一次差分;
- 二阶差分:在一阶差分数据上再做一次差分;
三、自回归模型(AR)
四、移动平均模型(MA)
五、自回归移动平均模型(ARMA)
六、ARIMA模型参数
p:自回归模型阶数;
q:移动平均模型阶数;
d:做差分的次数(一般做一阶差分);
七、自相关函数ACF(用于选择合适的p、q值)
八、ARIMA模型的确定
通过ACF、PACF函数画图来确定p、q参数的取值;
AR模型看PACF的第几阶能落到置信区间,则p就取值该阶数;
MA模型看ACF的第几阶能落到置信区间,则a就取值该阶数;
- 算法详解:时间序列预测之ARIMA
- 实现(GluonTS)
from gluonts.model.r_forecast import RForecastPredictor
# build model
arima_estimator = RForecastPredictor(freq='1D', prediction_length=args.horizon, method_name="arima")
# Predicting
forecast_df = pd.DataFrame(columns=['id', 'target_start_date', 'point_fcst_value']) # df_pred
for entry_, forecast_ in tqdm(zip(training_data, estimator.predict(training_data))):
id = entry_["id"]
forecast_df = forecast_df.append(
pd.DataFrame({"id": id,
"target_start_date": forecast_.index.map(lambda s: s.strftime('%Y%m%d')),
"point_fcst_value": forecast_.median}))