Saltar al contenido

Previsión de series de tiempo usando R

El desempleo es una cuestión socioeconómica y política importante para cualquier país y, por lo tanto, su gestión es una tarea principal para cualquier gobierno. En esta guía, intentaremos pronosticar los niveles de desempleo para un período de doce meses. Los datos utilizados en esta guía fueron producidos a partir de datos de series de tiempo económico de los EE.UU. disponibles en los Datos Económicos de la Reserva Federal. Los datos contienen 574 filas y 6 variables, como se describe a continuación:

  1. fecha – representa la primera fecha de cada mes a partir de enero de 1968.
  2. psavert – tasa de ahorro personal.
  3. pce – gastos de consumo personal, en miles de millones de dólares.
  4. uempmed – duración media del desempleo, en semanas.
  5. población – población total, en miles.
  6. Desempleo – número de desempleados en miles (variable dependiente).

Aunque tenemos seis variables, el enfoque será en las columnas de «fecha» y «desempleo», ya que el enfoque es en la predicción de series de tiempo univariadas.

Previsión de series de tiempo usando R
Previsión de series de tiempo usando R

Cargando las bibliotecas requeridas

123456library(readr)library(ggplot2)library(forecast)library(fpp2)library(TTR)library(dplyr)

{r}

Leyendo los datos

La primera línea de código que figura a continuación se lee en los datos, mientras que la segunda línea imprime el resumen de los datos.

12dat <- read_csv("timeseriesdata.csv")glimpse(dat)

{r}

Salida:

123456789Observaciones: 564Variables: 7$ fecha <chr ); "01-01-1968", "01-02-1968", "01-03-1968", "01-04-1968...$ pce <dbl ]; 531.5, 534.2, 544.9, 544.6, 550. 4, 556,8, 563,8, 567....$ pce <int> 199808, 199920, 200056, 200208, 200361, 200536, 20070...$ psavert <dbl ]; 11,7, 12,2, 11. 6, 12.2, 12.0, 11.6, 10.6, 10.4, 10.4,...$ uempmed <dbl> 5.1, 4.5, 4.1, 4.6, 4.4, 4.4, 4.5, 4.2, 4.6, 4.8, 4.4... $ unemploy...; 2878, 3001, 2877, 2709, 2740, 2938, 2883, 2768, 2686,...$ Clase...

Partición de datos

Crearemos el entrenamiento y los conjuntos de datos de prueba para la validación del modelo. El primer par de líneas de código a continuación realizan esta tarea utilizando la variable $0027Class$0027 que ya tiene etiquetas de Train y Test.

La tercera línea de código imprime el número de filas en el entrenamiento y los datos de la prueba. Tengan en cuenta que el conjunto de datos de la prueba tiene 12 filas porque construiremos el modelo para predecirlo para los próximos 12 meses.

1234dat_train = subconjunto(dat, Clase == $0027Tren$0027)dat_test = subconjunto(dat, Clase == $0027Prueba$0027) nrow(dat_train); nrow(dat_test)

{r}

Salida:

12[1] 552[1] 12

Preparando el objeto de la serie de tiempo

Para ejecutar los modelos de previsión en $0027R$0027, necesitamos convertir los datos en un objeto de serie temporal, lo que se hace en la primera línea de código abajo. Los argumentos "start" y "end" especifican el tiempo de la primera y la última observación, respectivamente. El argumento $0027frecuencia$0027 especifica el número de observaciones por unidad de tiempo.

También crearemos una función de utilidad para el cálculo del porcentaje de error medio absoluto (o MAPE), que se utilizará para evaluar el rendimiento de los modelos de previsión. Cuanto más bajo sea el valor de MAPE, mejor será el modelo de previsión. Esto se hace en las segunda a cuarta líneas de código .

1234567dat_ts <- ts(dat_train[, 6], inicio = c(1968, 1), fin = c(2013, 12), frecuencia = 12) #líneas 2 a 4mape <- función(actual,pred){ mape <- media(abs((actual - pred)/real))*100 retorno (mape)}

{r}

Con los datos y la función de mapeo preparados, pasamos a las técnicas de predicción en las secciones siguientes.