我手动制作了20款型号,并发现应该为每种模型使用d=1
或D=1
,但 auto_arima
永远不要使用差异Args (甚至一种模型根本没有d
或D
,所有试验都像(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
,您应该知道几件事。目前我正在玩一些,所以我会尝试回答您的问题。
-
网格搜索:
auto_arima
的实现使用逐步算法来识别最佳参数。在您的参数上方是stepwise
,默认情况下将其设置为True
。在API中,有:逐步算法可以比拟合所有高参数组合的速度要快得多,并且过度拟合模型的可能性较小。
如果要进行网格搜索,则必须将此参数设置为
False
。 -
差异参数:尝试此选项(
stepwise=False
(时,它应该尝试所有组合,但两个参数 -d
和D
。那是因为它们是估计的,而不包括在参数搜索中。在您的问题中列出的参数中,您有两个测试-test
和seasonal_test
。这些方法分别用于选择d
和D
的值。我建议您阅读有关理解P,D和Q的文档。您可以更好地了解他们如何处理差异参数估计。
您也可以尝试直接测试这些方法(只需更改测试的值(:
from pmdarima.arima.utils import ndiffs
ndiffs(y, test='kpss')
我不知道如何在网格搜索中测试d
参数,我认为Python和R实现都执行相同或相似的估计。因此,您可以自己执行此操作,并运行使用手动设置差异参数的auto_arima
,并在网格搜索上休息。否则,它将自动选择d
和D
的值。问题是 - 当这些自动测试说的内容不同时,您如何知道每种型号应使用d=1
和D=1
?