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

Python统计时间序列预测:月度频率错误及FVA结果为空问题排查

问题排查与解决方案

一、预测结果月度频率不正确

  • 检查时间序列索引的频率设置:确保原始数据集的时间列转换为datetime类型时指定正确的月度频率,示例代码:
    df['date'] = pd.to_datetime(df['date'], format='%Y-%m')
    df = df.set_index('date').asfreq('MS')  # 'MS'代表月初,'M'代表月末,按需选择
    
  • 验证模型预测的索引:生成预测时手动指定索引的月度频率,以ARIMA为例:
    forecast_index = pd.date_range(start=df.index[-1], periods=forecast_steps+1, freq='MS')[1:]
    forecast_values = model.forecast(steps=forecast_steps)
    forecast_df = pd.DataFrame({'forecast': forecast_values}, index=forecast_index)
    
  • 排查数据缺失:用df.isnull().sum()检查缺失值,通过df.fillna(method='ffill')或插值法补全,避免缺失值打乱频率逻辑。

二、FVA(Forecast Value Added)结果为空

  • 确认误差计算逻辑:FVA核心公式为FVA = (基准误差 - 目标误差) / 基准误差,先验证两个模型的误差指标是否有效,示例代码:
    from sklearn.metrics import mean_absolute_error
    
    # 计算朴素基准模型误差
    naive_forecast = df['actual'].shift(1).dropna()
    naive_mae = mean_absolute_error(df['actual'][1:], naive_forecast)
    
    # 计算目标模型误差
    model_mae = mean_absolute_error(test_data['actual'], test_forecast)
    
    # 计算FVA(避免除以零)
    fva = (naive_mae - model_mae) / naive_mae if naive_mae != 0 else None
    
  • 检查测试集与预测结果匹配性:确保测试集非空,且预测结果长度与测试集一致,空测试集或失败的预测会导致FVA无输出。
  • 排查空值过滤逻辑:通过print(naive_mae, model_mae)查看误差值是否为有效数值,避免代码中的空值过滤误删有效数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:31:50