4

我手动制作了 20 个模型,发现每个模型都应该使用d=1orD=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网格搜索我想做的事情?

4

1 回答 1

3

您应该了解几件事pmdarima及其实现auto_arima。我现在正在玩这个,所以我会尝试回答你的问题。

  1. 网格搜索auto_arima使用逐步算法来识别最优参数的实现。它stepwise在您上面的参数中True,默认设置为。在API中有写:

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

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

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

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

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

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

我不知道如何d在网格搜索中测试参数,我认为 Python 和 R 实现都做了相同或相似的估计。因此,您可以自己执行此操作并auto_arima使用手动设置的差分参数运行,并在网格搜索上留下休息。d否则,它将D自动为两者选择值。问题是 - 你怎么知道每个模型应该使用d=1,以及D=1这些自动测试什么时候说不同的东西?

于 2019-07-16T07:55:21.880 回答