You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ARIMA模型plot_predict与fitted_values结果异常问题求助

ARIMA模型拟合RMSE异常极小的排查与解决方法
  • 区分样本内拟合与样本外预测
    你当前计算RMSE用的arima_fit.fitted_values或默认predict()结果,都是模型对训练数据的拟合值,而非对未见过数据的预测值。样本内拟合误差极小是ARIMA模型的正常表现,但这不能代表模型的预测能力。正确做法是划分训练集和测试集:

    1. 拆分数据:train = df['y'][:-10](示例取前N-10条为训练集,最后10条为测试集)
    2. 训练模型:arima_fit = ARIMA(train, order=(p,d,q)).fit()
    3. 生成样本外预测:forecast = arima_fit.predict(start=len(train), end=len(df['y'])-1, typ='levels')
    4. 用测试集实际值和预测值计算RMSE:
      from sklearn.metrics import mean_squared_error
      rmse = mean_squared_error(df['y'][-10:], forecast, squared=False)
      
  • 检查数据尺度
    如果你的数据经过了归一化/标准化处理(比如缩放到0-1区间),RMSE的数值自然会很小。可以通过df['y'].describe()查看数据取值范围:

    • 若数据是缩放后的,要么还原到原始尺度再计算误差,要么直接使用原始数据重新建模。
  • 排查模型过拟合
    样本内误差极小可能是模型参数过于复杂(比如p、q值设置过大)导致的过拟合,此时样本外预测误差会显著上升。你可以:

    • 对比模型的AIC/BIC值,优先选择数值更小的简约模型;
    • 采用滚动窗口验证法,多次拆分训练集和测试集,验证模型稳定性。
  • 确认predict()参数正确性
    若手动设置了predict()的start和end参数,需确保start值大于训练集长度,否则输出的仍是样本内拟合值。比如训练集长度为100,start应设为100或更大,才能得到真正的预测结果。

内容的提问来源于stack exchange,提问作者Amirgiano

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.14 23:31:03