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

时间:2019-05-19 07:17:27

标签: python time-series pyramid-arima

我手动制作了20个模型,发现每个模型应该使用d=1D=1 ,但是 auto_arima从未使用差异参数(即使一个模型根本没有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进行网格搜索,我想做什么?

1 个答案:

答案 0 :(得分:1)

关于pmdarima及其对auto_arima的实现,您应该了解几件事。目前,我正在对此进行说明,以便尝试回答您的问题。

  1. 网格搜索auto_arima的实现使用逐步算法来识别最佳参数。它是您参数中的stepwise,默认情况下设置为TrueAPI中写道:

      

    逐步算法比拟合所有超参数组合要快得多,并且不太可能过拟合模型。

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

  2. 差分参数:尝试使用此选项(stepwise=False)时,它将尝试除两个参数-dD以外的所有组合。这是因为它们是估计值,不包含在params搜索中。在问题中列出的参数中,您有两个测试-testseasonal_test。这些方法分别用于为dD选择值。

    我建议您阅读Understanding p, d and q上的文档。您可以更好地了解它们如何处理差分参数估计。

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

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

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