Tenho 3 meses de dados (cada linha correspondente a cada dia) gerados e desejo realizar uma análise multivariada de séries temporais para o mesmo:
as colunas que estão disponíveis são -
Date Capacity_booked Total_Bookings Total_Searches %Variation
Cada Data tem 1 entrada no conjunto de dados e 3 meses de dados e eu quero ajustar um modelo de série temporal multivariada para prever outras variáveis também.
Até agora, essa foi minha tentativa e tentei fazer o mesmo lendo artigos.
Eu fiz o mesmo -
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]
Eu tenho um conjunto de validação e conjunto de previsão. No entanto, as previsões são muito piores que o esperado.
Os gráficos do conjunto de dados são - variação de 1.%
A saída que estou recebendo são -
Dataframe de previsão -
Dataframe de validação -
Como você pode ver, as previsões estão longe do esperado. Alguém pode aconselhar uma maneira de melhorar a precisão. Além disso, se eu ajustar o modelo a dados completos e depois imprimir as previsões, ele não levará em consideração que o novo mês começou e, portanto, prever como tal. Como isso pode ser incorporado aqui. qualquer ajuda é apreciada.
EDITAR
Link para o conjunto de dados - Conjunto de dados
obrigado
Respostas:
Uma maneira de melhorar sua precisão é procurar a autocorrelação de cada variável, conforme sugerido na página de documentação do VAR:
https://www.statsmodels.org/dev/vector_ar.html
Quanto maior o valor de autocorrelação para um atraso específico, mais útil esse atraso será para o processo.
Outra boa idéia é consultar o critério AIC e o critério BIC para verificar sua precisão (o mesmo link acima tem um exemplo de uso). Valores menores indicam que há uma maior probabilidade de você encontrar o verdadeiro estimador.
Dessa forma, você pode variar a ordem do seu modelo autoregressivo e ver o que fornece o menor AIC e BIC, ambos analisados juntos. Se o AIC indicar que o melhor modelo está com atraso de 3 e o BIC indicar que o melhor modelo tem um atraso de 5, você deve analisar os valores de 3,4 e 5 para ver o que tem melhores resultados.
O melhor cenário seria ter mais dados (já que três meses não são muitos), mas você pode tentar essas abordagens para ver se isso ajuda.
fonte