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

时间序列预测:回归模型结合ARIMA残差的超参数调优求助

优化回归+ARIMA残差模型的超参数搜索与改进方案

针对你当前回归+ARIMA残差模型预测效果不佳的问题,以下是具体的超参数搜索实现方法,以及可提升效果的替代方案:

一、ARIMA最优p、d、q超参数搜索

默认的order=(1,0,0)通常不是最优解,推荐通过遍历参数组合,基于**AIC(赤池信息准则)**筛选最优模型(AIC越小,模型拟合效率越高)。

实现代码(替换原Step5及后续相关部分):

# Step 5: 遍历ARIMA参数寻找最优组合
residuals = reg_model.resid

# 定义参数搜索范围(根据数据规模调整,一般p/q取0-3,d取0-2)
p_candidates = range(0, 4)
d_candidates = range(0, 3)
q_candidates = range(0, 4)

best_aic = float('inf')
best_order = None
best_arima_model = None

for p in p_candidates:
    for d in d_candidates:
        for q in q_candidates:
            try:
                arima_model = ARIMA(residuals, order=(p, d, q))
                fitted_model = arima_model.fit()
                if fitted_model.aic < best_aic:
                    best_aic = fitted_model.aic
                    best_order = (p, d, q)
                    best_arima_model = fitted_model
            except:
                continue  # 跳过无法拟合的参数组合

print(f"最优ARIMA参数: {best_order}, 对应AIC值: {best_aic}")

# Step 6: 结合回归与最优ARIMA的预测
X_test = test_data[predictors]
X_test = sm.add_constant(X_test)
y_pred_regression = reg_model.predict(X_test)

# 生成残差预测并与回归结果合并
y_pred_arima = best_arima_model.predict(start=len(train_data), end=len(train_data)+len(test_data)-2)
y_pred_combined = y_pred_regression.reset_index(drop=True) + y_pred_arima.reset_index(drop=True)

# 后续评估代码保持不变...

二、预测效果优化的替代方案

1. 改用SARIMAX模型

你的数据包含周、月时间特征,存在明显季节性,SARIMAX(带外部回归因子的季节性ARIMA)可以同时建模季节性残差和外部变量,比普通ARIMA更适配场景:

from statsmodels.tsa.statespace.sarimax import SARIMAX

# 直接用SARIMAX整合外部变量与季节性
# seasonal_order=(P,D,Q,S),S取52对应年度周季节性
sarimax_model = SARIMAX(y_train, exog=X_train, order=best_order, seasonal_order=(1,1,1,52))
fitted_sarimax = sarimax_model.fit()
y_pred_combined = fitted_sarimax.predict(start=len(train_data), end=len(train_data)+len(test_data)-1, exog=X_test)

2. 非线性回归+残差建模

若OLS线性回归无法捕捉变量间的非线性关系,可改用XGBoost、LightGBM等树模型做回归,再用ARIMA拟合残差;也可直接使用这些模型的时间序列专用API,更好地处理时序依赖。

3. 特征工程升级

  • 周期性编码:将sweek、smonth转换为正弦/余弦特征,避免模型误将周数1和52视为线性递增关系
  • 滞后特征:加入前1-4周的visits、cost数据作为输入特征
  • 聚合特征:新增月度平均成本、周度累计成本等统计特征

4. 使用Prophet模型

Prophet专为时间序列预测设计,自带趋势、季节性、节假日处理模块,支持添加外部回归因子(如cost),实现简单且效果稳定。

三、参考资料

  • Statsmodels官方文档:ARIMA、SARIMAX模块的参数说明与实战示例
  • 《时间序列分析:预测与控制》(Box-Jenkins经典著作,涵盖ARIMA类模型的核心理论)
  • 时间序列建模实战指南:重点关注残差分析、季节性建模、混合模型设计

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 13:54:56