Оценка роликовых окон моделей временных рядов SARIMAX и Holt-Winters: - PullRequest
0 голосов
/ 12 сентября 2018

Я пытаюсь создать в Python функцию скользящих окон, чтобы протестировать мои модели временных рядов SARIMAX и Holt-Winters на более длительной продолжительности. Я прогнозирую день вперед LMP на почасовой основе. Хотя я могу запускать модели вручную в течение одного дня, но когда я пытаюсь проверить их надежность в течение более длительного периода времени, я получаю следующие ошибки:

Holt-Winters

def rolling_windows_evaluation(x):
    X_train, X_test = emild_ts[3816:4344], emild_ts[4344:4368]
    MAPE = []
    t  = 4368
    for t in range(4368,5088):
        # fit model
        model = HoltWinters(X_train, slen = 24, 
            alpha = alpha_final, 
            beta = beta_final, 
            gamma = gamma_final, 
            n_preds = 24, scaling_factor = 3)
        model.triple_exponential_smoothing()
        MAPE_score = mean_absolute_percentage_error(X_test.LMP,model.result[-24:])
        MAPE.append(MAPE_score)
        X_train = X_train.iloc[24:]
        X_train = X_train.append(X_test)
        X_test = X_test.append(emild_ts[t:t+24])
        X_test = X_test.iloc[24:]

    return(MAPE)
return(np.mean(np.array(MAPE)))

вызов функции :

emlid_ts_val = emild_ts[3816:5088]
mape, mape_avg = rolling_windows_evaluation(emlid_ts_val)

ошибка :

неподдерживаемые типы операндов для +: 'int' и 'str'

SARIMAX :

def rolling_windows_evaluation(x):

X_train, X_test = emild_ts[3816:4344], emild_ts[4344:4368]
MAPE = []
t = 4368
for t in range(4368,5088):
# fit model
    model = sm.tsa.statespace.SARIMAX(X_train.LMP, order=(1,1,2), 
                                    seasonal_order=(1, 1, 1, 24)).fit(disp=-1)
    forecast_24 = model.predict(start = X_train.shape[0], end = X_train.shape[0]+24)
    MAPE_score = mean_absolute_percentage_error(X_test.LMP,forecast_24)
    MAPE.append(MAPE_score)
    X_train = X_train.iloc[24:]
    X_train = X_train.append(X_test)
    X_test = X_test.append(emild_ts[t:t+24])
    X_test = X_test.iloc[24:]

return(MAPE)
return(np.mean(np.array(MAPE)))

вызов функции :

emlid_ts_val = emild_ts[3816:5088]
mape, mape_avg = rolling_windows_evaluation(emlid_ts_val)

ошибка

неподдерживаемые типы операндов для *: 'int' и 'NoneType'

Эти две модели уже были обучены и оценены. Я предполагаю, что ошибки в основном связаны с индексацией. Любая помощь для отладки ошибок будет принята с благодарностью.

...