У меня есть данные за 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.% вариации
Вывод, который я получаю, -
Прогнозный фрейм данных -
Фрейм данных валидации -
Как вы можете видеть, что прогнозы далеко от того, что ожидается. Может кто-нибудь посоветовать способ повышения точности. Кроме того, если я подгоняю модель к целым данным и затем печатаю прогнозы, это не учитывает начало нового месяца и, следовательно, позволяет прогнозировать как таковой. Как это может быть включено здесь. любая помощь приветствуется.
РЕДАКТИРОВАТЬ
Ссылка на набор данных - Набор данных
Спасибо
Ответы:
Одним из способов повышения точности является поиск автокорреляции каждой переменной, как это предлагается на странице документации VAR:
https://www.statsmodels.org/dev/vector_ar.html
Чем больше значение автокорреляции для определенного запаздывания, тем полезнее это запаздывание для процесса.
Еще одна хорошая идея - обратиться к критерию AIC и критерию BIC для проверки вашей точности (та же ссылка выше имеет пример использования). Меньшие значения указывают на большую вероятность того, что вы нашли истинную оценку.
Таким образом, вы можете изменить порядок вашей авторегрессионной модели и увидеть ту, которая обеспечивает самый низкий AIC и BIC, которые анализируются вместе. Если AIC указывает, что лучшая модель имеет задержку 3, а BIC указывает, что лучшая модель имеет задержку 5, вам следует проанализировать значения 3,4 и 5, чтобы увидеть модель с наилучшими результатами.
Лучшим сценарием было бы иметь больше данных (так как 3 месяца - это немного), но вы можете попробовать эти подходы, чтобы увидеть, поможет ли это.
источник