Contexto

La base de datos Air Passengers contiene el número mensual de pasajeros aéreos internacionales entre 1940 y 1960 (144 observaciones mensuales). Esta base de datos es ampliamente utilizada para el análisis de series de tiempo, reflejando el crecimiento de la industria de la aviación comercial después de la Segunda Guerra Mundial

Instalar paquetes y llamar librerías

#install.packages("ggplot2") #Para generar gráficas con mejor diseño
library(ggplot2)
#install.packages("forecast") #Para revisar tendencias 
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo

Importar base de datos

df <- as.data.frame(AirPassengers)
serie_de_tiempo <- AirPassengers

Identificar patrones o tendencias

Los 4 componentes de las series de tiempo son:

  • Tendencia: Ej. Ventas de una tienda en línea debido al crecimiento del comercio electrónico.
  • Ciclo Ej. Las fluctuaciones en las ventas de automóviles a lo largo de los ciclos ecnonómicos(expansión y recesión)
  • Patrón Estacional Ej. Aumento en las ventyas de juguetes durante la anvidad.
  • Aleatorio Ej. Caída de las ventas por un desastre natural.

ggplot(df, aes(x=time(serie_de_tiempo), y = 
  serie_de_tiempo)) +
  geom_line(color = "purple") + 
  labs(title ="Número de Pasajeros Aéreos Internacionales", x = "Año", y = "Número")
## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.
## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.

Podemos concluir que de la gráfica anterior, que la base de datos tiene tendencia creciente y patrón estacional.

# Generar pronósticos

#Ajuste del moedelo
modelo <- auto.arima(serie_de_tiempo)

#Realizar prnóstico a 12 meses
pronostico <- forecast(modelo, h=12)

#Graficar datos históricos y el pronóstico
autoplot(pronostico) + 
  labs(title ="Número de Pasajeros Aéreos Internacionales", x = "Año", y = "Número")

#Generar predicción para un mes en específico
df_prediccion <- data.frame(Fecha= time(pronostico$mean), Prediccion = as.numeric(pronostico$mean))

df_prediccion[df_prediccion$Fecha == 1961.0,] #Enero 1961
##   Fecha Prediccion
## 1  1961   445.6349
LS0tCnRpdGxlOiAiQWlycGFzc2VuZ2VycyIKYXV0aG9yOiAiSmFuZXRoIFJhbWlyZXogQTAwODM2NzczIgpkYXRlOiAiMjAyNC0wOS0xMiIKb3V0cHV0OgogIGh0bWxfZG9jdW1lbnQ6CiAgICB0b2M6IFRSVUUKICAgIHRvY19mbG9hdDogVFJVRQogICAgY29kZV9kb3dubG9hZDogVFJVRSAKICAgIHRoZW1lOiBsdW1lbgotLS0KCiFbXSgvVXNlcnMvYWRtaW5pc3RyYXRvci9Eb2N1bWVudHMvU2VtZXN0cmUgNS9BVklPTiBQQVNBSkVST1MuanBlZykKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBwdXJwbGUiPkNvbnRleHRvPC9zcGFuPgpMYSBiYXNlIGRlIGRhdG9zICpBaXIgUGFzc2VuZ2VycyogY29udGllbmUgZWwgbsO6bWVybyBtZW5zdWFsIGRlIHBhc2FqZXJvcyBhw6lyZW9zIGludGVybmFjaW9uYWxlcyBlbnRyZSAxOTQwIHkgMTk2MCAoMTQ0IG9ic2VydmFjaW9uZXMgbWVuc3VhbGVzKS4gCkVzdGEgYmFzZSBkZSBkYXRvcyBlcyBhbXBsaWFtZW50ZSB1dGlsaXphZGEgcGFyYSBlbCBhbsOhbGlzaXMgZGUgc2VyaWVzIGRlIHRpZW1wbywgcmVmbGVqYW5kbyBlbCBjcmVjaW1pZW50byBkZSBsYSBpbmR1c3RyaWEgZGUgbGEgYXZpYWNpw7NuIGNvbWVyY2lhbCBkZXNwdcOpcyBkZSBsYSAqKlNlZ3VuZGEgR3VlcnJhIE11bmRpYWwqKgoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IHB1cnBsZSI+SW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlicmVyw61hczwvc3Bhbj4KYGBge3J9CiNpbnN0YWxsLnBhY2thZ2VzKCJnZ3Bsb3QyIikgI1BhcmEgZ2VuZXJhciBncsOhZmljYXMgY29uIG1lam9yIGRpc2XDsW8KbGlicmFyeShnZ3Bsb3QyKQojaW5zdGFsbC5wYWNrYWdlcygiZm9yZWNhc3QiKSAjUGFyYSByZXZpc2FyIHRlbmRlbmNpYXMgCmxpYnJhcnkoZm9yZWNhc3QpCmBgYAogCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBwdXJwbGUiPkltcG9ydGFyIGJhc2UgZGUgZGF0b3M8L3NwYW4+CmBgYHtyfQpkZiA8LSBhcy5kYXRhLmZyYW1lKEFpclBhc3NlbmdlcnMpCnNlcmllX2RlX3RpZW1wbyA8LSBBaXJQYXNzZW5nZXJzCmBgYAogCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBwdXJwbGUiPklkZW50aWZpY2FyIHBhdHJvbmVzIG8gdGVuZGVuY2lhczwvc3Bhbj4KTG9zIDQgY29tcG9uZW50ZXMgZGUgbGFzIHNlcmllcyBkZSB0aWVtcG8gc29uOiAKCiogKipUZW5kZW5jaWE6KiogRWouIFZlbnRhcyBkZSB1bmEgdGllbmRhIGVuIGzDrW5lYSBkZWJpZG8gYWwgY3JlY2ltaWVudG8gZGVsIGNvbWVyY2lvIGVsZWN0csOzbmljby4KKiAqKkNpY2xvKiogRWouIExhcyBmbHVjdHVhY2lvbmVzIGVuIGxhcyB2ZW50YXMgZGUgYXV0b23Ds3ZpbGVzIGEgbG8gbGFyZ28gZGUgbG9zIGNpY2xvcyBlY25vbsOzbWljb3MoZXhwYW5zacOzbiB5IHJlY2VzacOzbikKKiAqKlBhdHLDs24gRXN0YWNpb25hbCoqIEVqLiBBdW1lbnRvIGVuIGxhcyB2ZW50eWFzIGRlIGp1Z3VldGVzIGR1cmFudGUgbGEgYW52aWRhZC4KKiAqKkFsZWF0b3JpbyoqIEVqLiBDYcOtZGEgZGUgbGFzIHZlbnRhcyBwb3IgdW4gZGVzYXN0cmUgbmF0dXJhbC4KCiFbXSgvVXNlcnMvYWRtaW5pc3RyYXRvci9Eb2N1bWVudHMvU2VtZXN0cmUgNS9Db21wb2VudGVzLmpwZykKCmBgYHtyfQpnZ3Bsb3QoZGYsIGFlcyh4PXRpbWUoc2VyaWVfZGVfdGllbXBvKSwgeSA9IAogIHNlcmllX2RlX3RpZW1wbykpICsKICBnZW9tX2xpbmUoY29sb3IgPSAicHVycGxlIikgKyAKICBsYWJzKHRpdGxlID0iTsO6bWVybyBkZSBQYXNhamVyb3MgQcOpcmVvcyBJbnRlcm5hY2lvbmFsZXMiLCB4ID0gIkHDsW8iLCB5ID0gIk7Dum1lcm8iKQpgYGAKUG9kZW1vcyBjb25jbHVpciBxdWUgZGUgbGEgZ3LDoWZpY2EgYW50ZXJpb3IsIHF1ZSBsYSBiYXNlIGRlIGRhdG9zIHRpZW5lICoqdGVuZGVuY2lhIGNyZWNpZW50ZSoqIHkgKipwYXRyw7NuIGVzdGFjaW9uYWwqKi4KCiAjIDxzcGFuIHN0eWxlPSJjb2xvcjogcHVycGxlIj5HZW5lcmFyIHByb27Ds3N0aWNvczwvc3Bhbj4KYGBge3J9CiNBanVzdGUgZGVsIG1vZWRlbG8KbW9kZWxvIDwtIGF1dG8uYXJpbWEoc2VyaWVfZGVfdGllbXBvKQoKI1JlYWxpemFyIHBybsOzc3RpY28gYSAxMiBtZXNlcwpwcm9ub3N0aWNvIDwtIGZvcmVjYXN0KG1vZGVsbywgaD0xMikKCiNHcmFmaWNhciBkYXRvcyBoaXN0w7NyaWNvcyB5IGVsIHByb27Ds3N0aWNvCmF1dG9wbG90KHByb25vc3RpY28pICsgCiAgbGFicyh0aXRsZSA9Ik7Dum1lcm8gZGUgUGFzYWplcm9zIEHDqXJlb3MgSW50ZXJuYWNpb25hbGVzIiwgeCA9ICJBw7FvIiwgeSA9ICJOw7ptZXJvIikKCiNHZW5lcmFyIHByZWRpY2Npw7NuIHBhcmEgdW4gbWVzIGVuIGVzcGVjw61maWNvCmRmX3ByZWRpY2Npb24gPC0gZGF0YS5mcmFtZShGZWNoYT0gdGltZShwcm9ub3N0aWNvJG1lYW4pLCBQcmVkaWNjaW9uID0gYXMubnVtZXJpYyhwcm9ub3N0aWNvJG1lYW4pKQoKZGZfcHJlZGljY2lvbltkZl9wcmVkaWNjaW9uJEZlY2hhID09IDE5NjEuMCxdICNFbmVybyAxOTYxCmBgYCAKIAo=