如何从最好的 auto_arima 模型中提取变量来拟合它?

How to extract variables from the best auto_arima model to fit it?

我有一个包含多个城市的数据集,我正在尝试为每个城市构建一个 ARIMA 模型,因此在我的代码中,我使用 for 循环拆分数据并在将这些参数发送到之前找到最佳模型最后的装修。我的问题是如何使流程自动化?有什么方法可以从 ARIMACheck 函数返回的最佳模型中提取 p、d、q 值吗?

def ARIMACheck(data):
    from pmdarima import auto_arima  

    fit = auto_arima(data[20], trace=True)
    return fit

def ARIMA(data, p, d, q):    
    from statsmodels.tsa.arima.model import ARIMA
    
    x_train = data.iloc[:-200]
    x_test = data.iloc[-200:]
    y_test = x_test.loc[:, 20]
    model = ARIMA(x_train[20], order=(p,d,q))
    model = model.fit()
        
def Split(data):
    for i in range(7):
        data[i].replace(0, np.nan, inplace=True)
    
    for i in range(7):
        datatemp = data.copy()
        datatemp = datatemp.dropna(subset=[i])
        datamap = datatemp.copy()
        datamap = datamap.loc[:, 20]
        datamap.plot(figsize=(50,10))
        fit = ARIMACheck(datatemp)
        print(fit)
        ARIMA(datatemp, 1, 1, 2)

Split(data)

首先,auto_arima 函数 returns 是一个在 statsmodels 上运行的 ARIMA 对象,因此您可以使用方法 ARIMACheck(data) 中的 fit

如果您想使用 statsmodels class 创建一个新模型,那么您可以使用以下命令从 auto_arima 拟合中提取顺序,并使用它来训练您的新模型ARIMA方法:

def ARIMA(data, fit):
    
    model = ARIMA(endog=x_train[20], order=fit.get_params().get("order")).fit()

并通过以下方式调用方法: ARIMA(datatemp, fit)

fit.get_params().get("order") returns 像 (p, d, q) 这样的元组,因此您可以通过 fit.get_params().get("order")[<index>].

访问每个元素