(python)pmdarima.auto_arima(pyramid.auto_arima) 不会自动使用 d 和 D 参数



我手动制作了20款型号,并发现应该为每种模型使用d=1D=1,但 auto_arima永远不要使用差异Args (甚至一种模型根本没有dD,所有试验都像(1,0,1(x(0、0、1、52(。我通过设置trace=True进行了检查。

我希望auto_arima进行参数网格搜索 pdq=(0~3, 0~1, 0~3)PDQs=(0~3, 0~1, 0~3, 52)

我将参数设置如下:

    start_p=0,
    start_q=0,
    max_p=3,
    max_d=1,
    max_q=3,
    start_P=0,
    D=None,
    start_Q=0,
    max_P=2,
    max_D=1,
    max_Q=2,
    max_order=10,
    m=52,
    seasonal=True,
    stationary=False,
    information_criterion='aic',
    alpha=0.05,
    test='kpss',
    seasonal_test='ocsb',
    stepwise=True,
    n_jobs=-1,
    start_params=None,
    trend=None,
    method=None,
    transparams=True,
    maxiter=None,
    n_fits=100,
    with_intercept=True,

如何使auto_arima网格搜索我想做什么?

有关pmdarima及其实现auto_arima,您应该知道几件事。目前我正在玩一些,所以我会尝试回答您的问题。

  1. 网格搜索auto_arima的实现使用逐步算法来识别最佳参数。在您的参数上方是stepwise,默认情况下将其设置为True。在API中,有:

    逐步算法可以比拟合所有高参数组合的速度要快得多,并且过度拟合模型的可能性较小。

    如果要进行网格搜索,则必须将此参数设置为False

  2. 差异参数:尝试此选项(stepwise=False(时,它应该尝试所有组合,但两个参数 - dD。那是因为它们是估计的,而不包括在参数搜索中。在您的问题中列出的参数中,您有两个测试-testseasonal_test。这些方法分别用于选择dD的值。

    我建议您阅读有关理解P,D和Q的文档。您可以更好地了解他们如何处理差异参数估计。

    您也可以尝试直接测试这些方法(只需更改测试的值(:

from pmdarima.arima.utils import ndiffs
ndiffs(y, test='kpss')

我不知道如何在网格搜索中测试d参数,我认为Python和R实现都执行相同或相似的估计。因此,您可以自己执行此操作,并运行使用手动设置差异参数的auto_arima,并在网格搜索上休息。否则,它将自动选择dD的值。问题是 - 当这些自动测试说的内容不同时,您如何知道每种型号应使用d=1D=1

最新更新