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

pmdarima.auto_arima未自动用d/D参数,如何指定自定义网格搜索?

解决auto_arima未按预期执行自定义网格搜索的问题

你手动建模时发现差分参数(d/D)是关键,但auto_arima的默认逐步搜索策略没覆盖到你需要的参数范围。咱们可以通过调整几个核心参数,强制它执行你想要的全网格搜索:

关键参数调整点

  • 关闭逐步搜索,启用全网格搜索:把stepwise=True改成stepwise=False,这样算法会遍历所有指定范围内的参数组合,而不是用高效但可能遗漏关键组合的逐步优化策略。
  • 扩展季节性P/Q的最大值:你需要PDQs范围是0~3,但当前max_P=2、max_Q=2限制了上限,调整为max_P=3、max_Q=3才能覆盖目标范围。
  • 确保差分参数的搜索范围:保留max_d=1、max_D=1的设置,同时显式指定start_D=0(确保算法会搜索D=0和D=1的情况);stationary=False的设置已经正确,让算法考虑非平稳序列的差分需求。
  • 调整拟合次数上限:把n_fits=100改为n_fits=None(或设置一个足够大的数值,比如1500),因为全网格搜索的参数组合数((4×2×4)×(4×2×4)=1024种)远超过100,避免因拟合次数限制提前终止搜索。

调整后的完整参数配置

from pmdarima import auto_arima

model = auto_arima(
    # 传入你的时间序列数据
    start_p=0, start_q=0,
    max_p=3, max_d=1, max_q=3,  # 覆盖pdq(0~3,0~1,0~3)
    start_P=0, start_D=0, start_Q=0,
    max_P=3, max_D=1, max_Q=3,  # 覆盖PDQs(0~3,0~1,0~3)
    m=52, seasonal=True,
    stationary=False,
    information_criterion='aic',
    alpha=0.05,
    test='kpss', seasonal_test='ocsb',
    stepwise=False,  # 启用全网格搜索
    n_jobs=-1,
    start_params=None,
    trend=None,
    method=None,
    transparams=True,
    maxiter=None,
    n_fits=None,  # 不限制拟合次数,确保遍历所有组合
    with_intercept=True
)

为什么之前auto_arima没启用差分?

逐步搜索算法(stepwise=True)会优先尝试计算成本更低的无差分模型(d=0,D=0),如果这类模型的AIC足够低,就会直接跳过差分组合。再加上你之前的季节性P/Q上限被限制在2,进一步缩小了搜索范围。切换到全网格搜索后,算法会遍历你指定的所有pdq和PDQs组合,自然会包含d=1和D=1的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:39:09