【问题标题】:Finding model with lowest AIC in python[return statement]在python中寻找具有最低AIC的模型[return statement]
【发布时间】:2020-01-28 05:13:27
【问题描述】:

我正在尝试寻找具有最低 AIC 的模型。我无法制作具有最低 AIC 的函数返回模型。下面的代码演示了我卡在哪里。

p = d = q = range(0,2)
pdq = list(itertools.product(p,d,q))
seasonal_pdq = [(x[0],x[1],x[2],12) for x in list(itertools.product(p,d,q))]
parameters = []
for param in pdq:
     for param_seasonal in seasonal_pdq:
       try:  
          model=sm.tsa.statespace.SARIMAX(y_hat,method='css',order=param,
           seasonal_order = param_seasonal,enforce_stationarity=False
            enforce_invertibility=False)  

             results = model.fit()
            print('ARIMA{}x{}12 - AIC: 
            {}'.format(param,param_seasonal,results.aic))
        except:
            continue
        aic = results.aic
        parameters.append([param,param_seasonal,aic])

result_table = pd.DataFrame(parameters)
result_table.columns = ['parameters','parameters_seasonal','aic']
result_table = result_table.sort_values(by='aic',ascending = True).reset_index(drop = True)

【问题讨论】:

  • 您能否添加任何其他信息,说明您到目前为止所尝试的内容,以及您可能怀疑在此代码块中发生错误的位置?

标签: python return-value arima


【解决方案1】:

试试下面的这些代码。我希望他们会为你工作!

干杯!

parameters = []
for param in pdq:
    for param_seasonal in seasonal_pdq:
        try:
            mod = sm.tsa.statespace.SARIMAX(df_final,
                                            order=param,
                                            seasonal_order=param_seasonal,
                                            enforce_stationarity=False,
                                            enforce_invertibility=False)

            results = mod.fit()

            print('ARIMA{}x{}12 - AIC:{}'.format(param, param_seasonal, results.aic))
        except:
            continue
        aic = results.aic
        parameters.append([param,param_seasonal,aic])

result_table = pd.DataFrame(parameters)
result_table.columns = ['parameters',     'parameters_seasonal','aic']
result_table = result_table.sort_values(by='aic',ascending = True).reset_index(drop = True)
minimum = result_table['aic'].min()
a = result_table.loc[result_table['aic'] == minimum]
print(' The best combination that gives the lowest AIC is:')
print(a)

【讨论】:

    猜你喜欢
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 2016-05-28
    • 2019-06-13
    • 2011-07-16
    • 2016-02-17
    • 2012-12-22
    • 1970-01-01
    相关资源
    最近更新 更多