Я использую модель SARIMA для прогнозирования таймера ie, поэтому мне нужно определить диапазон параметров модели и найти лучшую комбинацию параметров модели для моего случая, сравнив AI C. Диапазоны следующие:
ps = range(0, 3)
d=1
qs = range(0, 1)
Ps = range(0, 3)
D=1
Qs = range(0, 3)
, а код следующий:
def best_results(ts,Col_name):
results = []
best_aic = float("inf")
warnings.filterwarnings('ignore')
for param in parameters_list:
#try except is needed because some parameter combinations are not valid
try:
model=sm.tsa.statespace.SARIMAX(ts[Col_name], order=(param[0], d, param[1]), seasonal_order=(param[2], D, param[3], 12)).fit(disp=-1)
except ValueError:
print('wrong parameters:', param)
continue
aic = model.aic
# save best model, it's AIC and params
if aic < best_aic:
best_model = model
best_aic = aic
best_param = param
results.append([param, model.aic])
warnings.filterwarnings('default')
result_table = pd.DataFrame(results)
result_table.columns = ['parameters', 'aic']
print(result_table.sort_values(by = 'aic', ascending=True).head())
return results,best_model
Моему компьютеру требуется много времени, чтобы найти best_model, если я расширю диапазоны.
Интересно, является ли AI C хорошим показателем c для рассмотрения в качестве критерия для сравнения производительности комбинации параметров? и как я могу определить правильный основной диапазон?
PS: Я использую ноутбук Jupiter (Anaconda)