Predicción de series temporales multivariadas con un conjunto de datos de 3 meses

12

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 ingrese la descripción de la imagen aquí

  1. Capacidad_Booked ingrese la descripción de la imagen aquí

  2. Total de reservas y búsquedas ingrese la descripción de la imagen aquí

Los resultados que estoy recibiendo son:

Marco de datos de predicción -

ingrese la descripción de la imagen aquí

Marco de datos de validación -

ingrese la descripción de la imagen aquí

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

dper
fuente
puedes publicar el
estándar
@SwaratheshAddanki Agregué el enlace al conjunto de datos en la pregunta ... puedes echar un vistazo.
dper
Podría intentar utilizar un algoritmo clásico de aprendizaje automático utilizando características "hechas en casa". Por ejemplo, podría intentar entrenar un perceptrón o un SVM o un bosque aleatorio durante un solo día usando los últimos 7 días (haga una fila con las características 4 * 7). También puede tener en cuenta el mismo día de la última semana (miércoles si desea predecir para el miércoles) y un promedio de cada miércoles del mes pasado. También use la validación cruzada para tener una medición de rendimiento más realista
politinsa
@politinsa ¿Podría compartir un ejemplo para lo mismo?
Dper
1
Creo que no tienes suficientes datos para un buen modelo: la característica principal parece ser los saltos a la baja al final de este mes. Solo podemos ver dos de estos saltos en el conjunto de datos, y de solo dos observaciones no será posible aprender mucho sobre cómo se ve un salto típico. Del mismo modo, el crecimiento durante los meses parece lo suficientemente regular como para que el modelo pueda tratar de describir la forma de estas curvas, pero hay poca información sobre cuánto crecerán los valores en un mes típico. Dado esto, ¿"el mes próximo es igual al mes anterior" podría ser un modelo suficientemente bueno?
jochen

Respuestas:

1

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.

Danilo Nunes
fuente