网格搜索在 python statsmodels 中自动选择 SARIMAX 订单模型

Kis*_*ani 6 python time-series statsmodels

我目前正在编写一个函数来对 SARIMAX 模型的阶数进行网格搜索:(p,q,d)X(P,Q,D,s)。但是,在拟合时,使用 statsmodels.tsa.SARIMAX() 的默认设置,我经常会遇到以下类型的错误:

ValueError: Non-stationary starting autoregressive parameters found with `enforce_stationarity` set to True.
Run Code Online (Sandbox Code Playgroud)

或者

ValueError: non-invertible starting MA parameters found with `enforce_invertibility` set to True.
Run Code Online (Sandbox Code Playgroud)

我可以停止强制执行平稳性和可逆性来停止出现这些错误,但是,据我所知,我不希望模型参数创建不可逆的模型。

是否可以放松enforce_stationarity和enforce_invertibility参数,或者这会导致糟糕的模型吗?

dar*_*der 5

这就是我在for执行网格搜索的循环中所做的:

for ...:
    try:
        model = smt.SARIMAX(...)
        result = model.fit()
        ...
    except:
        continue
Run Code Online (Sandbox Code Playgroud)

这样,您将跳过非平稳或不可逆模型。