Прогнозирование многомерного временного ряда с набором данных за 3 месяца

12

У меня есть данные за 3 месяца (каждая строка, соответствующая каждому дню), и я хочу выполнить многомерный анализ временных рядов для того же:

Доступны следующие столбцы:

Date    Capacity_booked Total_Bookings  Total_Searches  %Variation

Каждая Дата имеет 1 запись в наборе данных и имеет данные за 3 месяца, и я хочу приспособить многомерную модель временных рядов для прогнозирования и других переменных.

Пока что это была моя попытка, и я пытался добиться того же, читая статьи.

Я сделал то же самое -

df['Date'] = pd.to_datetime(Date , format = '%d/%m/%Y')

data = df.drop(['Date'], axis=1)

data.index = df.Date

from statsmodels.tsa.vector_ar.vecm import coint_johansen
johan_test_temp = data
coint_johansen(johan_test_temp,-1,1).eig



#creating the train and validation set
train = data[:int(0.8*(len(data)))]
valid = data[int(0.8*(len(data))):]

freq=train.index.inferred_freq

from statsmodels.tsa.vector_ar.var_model import VAR

model = VAR(endog=train,freq=train.index.inferred_freq)
model_fit = model.fit()


# make prediction on validation
prediction = model_fit.forecast(model_fit.data, steps=len(valid))

cols = data.columns

pred = pd.DataFrame(index=range(0,len(prediction)),columns=[cols])
    for j in range(0,4):
        for i in range(0, len(prediction)):
           pred.iloc[i][j] = prediction[i][j]

У меня есть набор проверки и прогнозирования. Однако прогнозы намного хуже, чем ожидалось.

Графики набора данных - 1.% вариации введите описание изображения здесь

  1. Capacity_Booked введите описание изображения здесь

  2. Всего заказов и поисков введите описание изображения здесь

Вывод, который я получаю, -

Прогнозный фрейм данных -

введите описание изображения здесь

Фрейм данных валидации -

введите описание изображения здесь

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

РЕДАКТИРОВАТЬ

Ссылка на набор данных - Набор данных

Спасибо

dper
источник
можете ли вы опубликовать стандарт уроков
Swarathesh Addanki
@SwaratheshAddanki Я добавил ссылку на набор данных в вопросе ... вы можете посмотреть.
19
Вы можете попробовать использовать классический алгоритм машинного обучения, используя «домашние» функции. Например, вы можете попробовать обучить персептрон, SVM или случайный лес в течение одного дня, используя последние 7 дней (сделайте одну строку с функциями 4 * 7). Вы также можете принять во внимание тот же день прошлой недели (среду, если вы хотите прогнозировать среду) и среднее значение каждой среды прошлого месяца. Также используйте перекрестную проверку, чтобы иметь более реалистичное измерение производительности
politinsa
@politinsa Не могли бы вы поделиться примером для того же?
dper
1
Я полагаю, что у вас недостаточно данных, чтобы уместиться в хорошую модель: основной особенностью, по-видимому, являются нисходящие скачки в конце этого месяца. Мы можем видеть только два из этих скачков в наборе данных, и только из двух наблюдений будет невозможно узнать многое о том, как выглядит типичный скачок. Аналогичным образом, рост в течение месяцев выглядит достаточно равномерным, чтобы модель могла попытаться описать форму этих кривых, но мало информации о том, насколько значения будут расти в течение типичного месяца. Учитывая это, «следующий месяц равен предыдущему месяцу» может быть достаточно хорошей моделью?
Йохен

Ответы:

1

Одним из способов повышения точности является поиск автокорреляции каждой переменной, как это предлагается на странице документации VAR:

https://www.statsmodels.org/dev/vector_ar.html

Чем больше значение автокорреляции для определенного запаздывания, тем полезнее это запаздывание для процесса.

Еще одна хорошая идея - обратиться к критерию AIC и критерию BIC для проверки вашей точности (та же ссылка выше имеет пример использования). Меньшие значения указывают на большую вероятность того, что вы нашли истинную оценку.

Таким образом, вы можете изменить порядок вашей авторегрессионной модели и увидеть ту, которая обеспечивает самый низкий AIC и BIC, которые анализируются вместе. Если AIC указывает, что лучшая модель имеет задержку 3, а BIC указывает, что лучшая модель имеет задержку 5, вам следует проанализировать значения 3,4 и 5, чтобы увидеть модель с наилучшими результатами.

Лучшим сценарием было бы иметь больше данных (так как 3 месяца - это немного), но вы можете попробовать эти подходы, чтобы увидеть, поможет ли это.

Данило Нуньес
источник