我手动制作了20个模型,发现每个模型应该使用d=1
或D=1
,但是 auto_arima
从未使用差异参数(即使一个模型根本没有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
进行网格搜索,我想做什么?
答案 0 :(得分:1)
关于pmdarima
及其对auto_arima
的实现,您应该了解几件事。目前,我正在对此进行说明,以便尝试回答您的问题。
网格搜索:auto_arima
的实现使用逐步算法来识别最佳参数。它是您参数中的stepwise
,默认情况下设置为True
。 API中写道:
逐步算法比拟合所有超参数组合要快得多,并且不太可能过拟合模型。
如果要进行网格搜索,则必须将此参数设置为False
。
差分参数:尝试使用此选项(stepwise=False
)时,它将尝试除两个参数-d
和D
以外的所有组合。这是因为它们是估计值,不包含在params搜索中。在问题中列出的参数中,您有两个测试-test
和seasonal_test
。这些方法分别用于为d
和D
选择值。
我建议您阅读Understanding p, d and q上的文档。您可以更好地了解它们如何处理差分参数估计。
您也可以尝试直接测试这些方法(只需更改test的值):
from pmdarima.arima.utils import ndiffs
ndiffs(y, test='kpss')
我不知道如何在网格搜索中测试d
参数,我认为Python和R实现都执行相同或相似的估计。因此,您可以自己执行此操作,并使用手动设置的差异参数运行auto_arima
,而无需进行网格搜索。否则,它将自动为d
和D
选择值。问题是-当这些自动测试说的有些不同时,您怎么知道每个模型都应该使用d=1
和D=1
?