Hoy aprenderemos qué es el forecasting y a realizarlos utilizando los paquetes forecast y prophet de R Studio.

Todas las personas organizamos nuestra vida de acuerdo a diversas predicciones: el tiempo que tardaré en llegar al trabajo, el dinero que me costará hacer la compra, etc. No siempre acertamos, a veces el metro tarda más de lo esperado o resulta que el precio de algún producto ha subido, pero en general nuestras estimaciones suelen ser lo suficientemente precisas para establecer rutinas en torno a ellas.

Cuando lo que queremos predecir no son eventos cotidianos, sino el comportamiento de un Stock en donde estoy pensando invertir o las ventas de mi empresa para el próximo año, no podemos dejarnos guiar por la intuición. Es aquí donde entra en juego el forecasting.

Forecasting es el proceso de hacer predicciones sobre el futuro mediante el análisis estadístico de tendencias observadas en datos históricos. Dicho de otra manera: utilizar el pasado para conocer el futuro.

Podemos encontrar técnicas de forecasting muy simples, y otras extremadamente complejas. Obviamente, cuanto más simple sea nuestro modelo, más sencillo será obtener unas predicciones precisas.

Los principales rasgos que ha de identificar un buen forecasting son:

  • Tendencias: incrementos/disminuciones a largo término en nuestros datos.
  • Estacionalidad: cómo periodos concretos -vacaciones, día de la semana- afectan a nuestros datos.
  • Puntos de inflexión: cambios acelerados en los valores de nuestros datos. Por ejemplo, puede ocurrir cuando una compañía se expande a nuevos mercados.

No entraremos aquí a exponer la teoría que hay detrás, pero en general este tipo de herramientas combinan técnicas de regresión y series temporales para encontrar los patrones que caracterizan a nuestro modelo. Las regresiones buscan deducir las relaciones entre la variable objeto del forecasting y otras variables explicatorias. Las series temporales en cambio usan los datos históricos -recogidos a intervalos regulares- de nuestra variable objeto para deducir sus futuros valores.

Como podéis imaginar, crear un modelo de forecasting no es nada sencillo. En general los estadistas solemos ser muy cautos a la hora de asegurar la precisión de nuestro forecasting.

forecasting

Como dice el chiste: ¿Cómo sabes que los estadísticos tienen sentido del humor? Porque ponen decimales en sus forecasts.

Por suerte, en R existen un par de paquetes –forecast, prophet– que permiten hasta al más simple de los mortales predecir el futuro (en un cierto intervalo de confianza).

Usaremos como ejemplo los datos AirPassengers del paquete datasets, una colección de la progresión de pasajeros mensuales de Pan Am entre 1949-1960.

 

r forecasting

Vemos que esta serie temporal tienen una clara tendencia alcista e importantes componentes estacionales.

Usaremos primero el paquete forecast, desarrollado por Rob J. Hyndman, y que es la principal referencia de los usuarios de R a la hora de adentrarse en el mundo del forecasting. Este paquete es muy completo, y os invitamos a que exploréis todas sus opciones. Para predecir series temporales estacionarias tenemos a disposición los modelos ARIMA (p,d,q). En forecast podemos emplear la función auto.arima() para determinar las (p,d,q) adecuadas.

r statistics

A continuación, usando la función forecast() podremos ver la predicción estimada por el modelo ARIMA deducido.

r statistics

 

 

 

 

 

 

 

 

 

 

 

Si visualizamos los resultados obtenemos la siguiente gráfica.

forecasting

El siguiente paquete que veremos se llama prophet. Lanzado por Facebook recientemente, basándose en un modelo propio que explican en este paperEl único requisito de prophet es que los datos tengan una columna con las fechas de las observaciones llamada ds, y la columna de los valores llamada y.

Tras esto, creamos el data.frame de base para el forecast con la función, incluida en el paquete, llamada make_future_dataframe. Y finalmente, usando la función genérica predict calculamos nuestro forecast.

r forecast

 

 

 

 

 

 

 

 

 

 

 

 

 

Con el comando plot(m, forecast) vemos el resultado de la predicción.

forecasting

También podemos usar la función del propio paquete prophet_plot_components(m, forecast) para ver las componentes del forecast.

forecast tendences

Finalmente, mostramos la comparación entre ambos métodos, junto a los puntos representando las observaciones reales. En verde la predicción realizada por prophet, y en azul la de forecast. Vemos cómo los valores deducidos por prophet son un poco más precisos, aunque el intervalo de confianza de forecast cubre casi mejor las observaciones.

forecast

Y eso es todo, como hemos podido ver, realizar forecasts razonablemente precisos hoy día es algo que puede hacer todo el mundo. Espero que os haya gustado el post y cualquier pregunta que os surja, no dudéis en comentar.

Introducción al Forecasting con R Statistics

Leave Comment

Your email address will not be published. Required fields are marked *