基于ARIMA的月度时间序列预测流程合规性与正确性咨询
时间序列ARIMA建模流程正确性验证
数据背景
拥有2018-2021年共48个月度数据,存储于DataFrame df中:
Amount 2018-01 125.6 ... ... 2020-12 145.2 2021-01 148.4 ... ... 2021-12 198.8
训练与测试流程验证
采用前36个月(2018-2020年)数据训练模型,最后12个月(2021年)数据测试,代码如下:
df_train = df[:36] df_test = df[36:] arima = pm.auto_arima(df_train, error_action='ignore', trace=True, suppress_warnings=True, maxiter=50, seasonal=True, m=12, random_state=1) # Best model: ARIMA(1,1,1)(0,1,0)[12] predictions, conf_int = arima.predict(n_periods=12, return_conf_int=True) df_predictions = pd.DataFrame(predictions, index=df_test.index) df_predictions.columns = ['Predicted amount']
随后计算R²得分:
r2_score(df_test['Amount'], df_predictions['Predicted amount'])
得到约0.92的得分,该流程整体是标准且正确的:
- 遵循时间序列建模的核心逻辑:用历史数据训练、未参与训练的近期数据做测试,避免了数据泄露,验证方式合理。
pm.auto_arima的参数设置适配场景:seasonal=True和m=12匹配月度数据的季节性周期,random_state=1保证结果可复现,其余参数避免了非关键性报错中断流程。- 预测结果与测试集索引对齐,便于指标计算,R²得分0.92也说明模型对测试集的拟合效果良好。
2022年预测步骤验证
更新模型并预测2022年数据的代码如下:
arima.update(df_test) df_forecasts = pd.DataFrame(arima.predict(n_periods=12), index=pd.date_range(start='2022-01-01', end='2022-12-01', freq='MS')) df_forecasts.columns = ['Forecasted amount']
这一步同样正确且符合行业标准:
arima.update(df_test)将测试集的真实数据融入已训练模型,更新参数以学习最新的时序模式,比直接用原模型预测更贴合实际趋势。- 生成的日期索引
pd.date_range(..., freq='MS')与月度数据的频率完全匹配,保证了预测结果的索引逻辑正确。
内容的提问来源于stack exchange,提问作者LJG
相关产品推荐
相关产品推荐

