Tengo 3 meses de datos (cada fila correspondiente a cada día) generados y quiero realizar un análisis de series de tiempo multivariadas para el mismo:
las columnas que están disponibles son:
Date Capacity_booked Total_Bookings Total_Searches %Variation
Cada fecha tiene 1 entrada en el conjunto de datos y tiene 3 meses de datos y quiero ajustar un modelo de serie temporal multivariante para pronosticar también otras variables.
Hasta ahora, este fue mi intento e intenté lograr lo mismo leyendo artículos.
Yo hice lo mismo -
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]
Tengo un conjunto de validación y un conjunto de predicciones. Sin embargo, las predicciones son mucho peores de lo esperado.
Las gráficas del conjunto de datos son: 1.% de variación
Los resultados que estoy recibiendo son:
Marco de datos de predicción -
Marco de datos de validación -
Como puede ver, las predicciones están muy lejos de lo esperado. ¿Alguien puede aconsejar una forma de mejorar la precisión? Además, si ajusto el modelo en datos completos y luego imprimo los pronósticos, no tiene en cuenta que el nuevo mes ha comenzado y, por lo tanto, predice como tal. ¿Cómo se puede incorporar eso aquí? Cualquier ayuda es apreciada.
EDITAR
Enlace al conjunto de datos - Conjunto de datos
Gracias
Respuestas:
Una manera de mejorar su precisión es buscar la autocorrelación de cada variable, como se sugiere en la página de documentación de VAR:
https://www.statsmodels.org/dev/vector_ar.html
Cuanto mayor sea el valor de autocorrelación para un retraso específico, más útil será este retraso para el proceso.
Otra buena idea es mirar el criterio AIC y el criterio BIC para verificar su precisión (el mismo enlace de arriba tiene un ejemplo de uso). Los valores más pequeños indican que existe una mayor probabilidad de que haya encontrado el estimador verdadero.
De esta manera, puede variar el orden de su modelo autorregresivo y ver el que proporciona el AIC y BIC más bajos, ambos analizados juntos. Si AIC indica que el mejor modelo tiene un retraso de 3 y el BIC indica que el mejor modelo tiene un retraso de 5, debe analizar los valores de 3,4 y 5 para ver el que tenga mejores resultados.
El mejor escenario sería tener más datos (ya que 3 meses no es mucho), pero puede probar estos enfoques para ver si ayuda.
fuente