Contexto

La base de datos AirPassangers contiene el numero mensual de pasajero aereos internacionales entre 1949 y 1960 (144 observaciones mensuales). Esta base de datos es ampliamente utilizada para el analisis de series de tiempo, reflejando el crecimiento de la industria de la aviacion comercial despues de la Segunda Guerra Mundial.

Instalar paquetes y llamar librerias

# install.packages("tidyverse") # Paquete global para manipulavcion y analisis de datos
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr     1.1.4     ✔ readr     2.1.5
## ✔ forcats   1.0.0     ✔ stringr   1.5.1
## ✔ ggplot2   3.5.1     ✔ tibble    3.2.1
## ✔ lubridate 1.9.3     ✔ tidyr     1.3.1
## ✔ purrr     1.0.2     
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# install.packages("forecast") # Para revisar tendencias y generar pronosticos
library(forecast)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
# install.packages("ggplot2") # Para generar graficas con mejor diseño
library(ggplot2)

Importat 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: Tendencias: Ej. Aumento en las ventas de una tienda en linea debido al crecimeinto de comercio electronico. CLiclo: Ej. Las fluctraciones en las ventas de automoviles a lo largo de los ciclos economicos (expansion y recesion). Patron Estacional: Ej. Aumento en las ventas de jugetes durante la navidad. Aletatorio: Ej. Caida de las ventas por un desastre natural.

ggplot(df, aes(x=time(serie_de_tiempo), y=(serie_de_tiempo))) + 
  geom_line(color = "darkgreen") + 
  labs(title = "Pasajeros Aereos Internacionales", x="Año", y="Numero")
## 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 de la grafica anterior que la base de datos tiene tendencia creciente y patron estacional.

Generar Pronostico

# Ajuste de modelo
modelo <- auto.arima(serie_de_tiempo)

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

# Grafica de datos historicos y el pronostico
autoplot(pronostico) +
  labs(title="Pasajeros Aereos Internacionales", x="Año", y="Numero")

# Generar prediccion para un mes en especifico
df_prediccion <- data.frame(Fecha = time(pronostico$mean), Prediccion = as.numeric(pronostico$mean))
df_prediccion[df_prediccion$Fecha == 1961.0, ] #Enero de 1961
##   Fecha Prediccion
## 1  1961   445.6349
LS0tCnRpdGxlOiAiQWlyIFBhc3NhbmdlcnMiCmF1dGhvcjogIkFkcmlhbiBHYXJ6YSBHb256YWxleiIKZGF0ZTogIjIwMjQtMDktMTIiCm91dHB1dDogCiAgaHRtbF9kb2N1bWVudDoKICAgIHRvYzogVFJVRQogICAgdG9jX2Zsb2F0OiBUUlVFCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFCiAgICB0aGVtZTogbHVtZW4KLS0tCgohW10oL1VzZXJzL21hY2Jvb2svRGVza3RvcC9kb3dubG9hZC5qcGcpCmBgYHtyIHNldHVwLCBpbmNsdWRlPUZBTFNFfQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5Db250ZXh0bzwvc3Bhbj4KTGEgYmFzZSBkZSBkYXRvcyAqKkFpclBhc3NhbmdlcnMqKiBjb250aWVuZSBlbCBudW1lcm8gbWVuc3VhbCBkZSBwYXNhamVybyBhZXJlb3MgaW50ZXJuYWNpb25hbGVzIGVudHJlIDE5NDkgeSAxOTYwICgxNDQgb2JzZXJ2YWNpb25lcyBtZW5zdWFsZXMpLiBFc3RhIGJhc2UgZGUgZGF0b3MgZXMgYW1wbGlhbWVudGUgdXRpbGl6YWRhIHBhcmEgZWwgYW5hbGlzaXMgZGUgc2VyaWVzIGRlIHRpZW1wbywgcmVmbGVqYW5kbyBlbCBjcmVjaW1pZW50byBkZSBsYSBpbmR1c3RyaWEgZGUgbGEgYXZpYWNpb24gY29tZXJjaWFsIGRlc3B1ZXMgZGUgbGEgKlNlZ3VuZGEgR3VlcnJhIE11bmRpYWwqLgoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5JbnN0YWxhciBwYXF1ZXRlcyB5IGxsYW1hciBsaWJyZXJpYXM8L3NwYW4+CmBgYHtyfQojIGluc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpICMgUGFxdWV0ZSBnbG9iYWwgcGFyYSBtYW5pcHVsYXZjaW9uIHkgYW5hbGlzaXMgZGUgZGF0b3MKbGlicmFyeSh0aWR5dmVyc2UpCiMgaW5zdGFsbC5wYWNrYWdlcygiZm9yZWNhc3QiKSAjIFBhcmEgcmV2aXNhciB0ZW5kZW5jaWFzIHkgZ2VuZXJhciBwcm9ub3N0aWNvcwpsaWJyYXJ5KGZvcmVjYXN0KQojIGluc3RhbGwucGFja2FnZXMoImdncGxvdDIiKSAjIFBhcmEgZ2VuZXJhciBncmFmaWNhcyBjb24gbWVqb3IgZGlzZcOxbwpsaWJyYXJ5KGdncGxvdDIpCmBgYAoKIyA8c3BhbiBzdHlsZT0iY29sb3I6IGJsdWU7Ij5JbXBvcnRhdCBiYXNlIGRlIGRhdG9zPC9zcGFuPgpgYGB7cn0KZGYgPC0gYXMuZGF0YS5mcmFtZShBaXJQYXNzZW5nZXJzKQpzZXJpZV9kZV90aWVtcG8gPC0gQWlyUGFzc2VuZ2VycwpgYGAKCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+SWRlbnRpZmljYXIgcGF0cm9uZXMgbyB0ZW5kZW5jaWFzPC9zcGFuPgpMb3MgNCBjb21wb25lbnRlcyBkZSBsYXMgc2VyaWVzIGRlIHRpZW1wbyBzb246CioqVGVuZGVuY2lhczoqKiBFai4gQXVtZW50byBlbiBsYXMgdmVudGFzIGRlIHVuYSB0aWVuZGEgZW4gbGluZWEgZGViaWRvIGFsIGNyZWNpbWVpbnRvIGRlIGNvbWVyY2lvIGVsZWN0cm9uaWNvLgoqKkNMaWNsbzoqKiBFai4gTGFzIGZsdWN0cmFjaW9uZXMgZW4gbGFzIHZlbnRhcyBkZSBhdXRvbW92aWxlcyBhIGxvIGxhcmdvIGRlIGxvcyBjaWNsb3MgZWNvbm9taWNvcyAoZXhwYW5zaW9uIHkgcmVjZXNpb24pLgoqKlBhdHJvbiBFc3RhY2lvbmFsOioqIEVqLiBBdW1lbnRvIGVuIGxhcyB2ZW50YXMgZGUganVnZXRlcyBkdXJhbnRlIGxhIG5hdmlkYWQuCioqQWxldGF0b3JpbzoqKiBFai4gQ2FpZGEgZGUgbGFzIHZlbnRhcyBwb3IgdW4gZGVzYXN0cmUgbmF0dXJhbC4KCiFbXSgvVXNlcnMvbWFjYm9vay9EZXNrdG9wL2Rvd25sb2FkLnBuZykKCmBgYHtyfQpnZ3Bsb3QoZGYsIGFlcyh4PXRpbWUoc2VyaWVfZGVfdGllbXBvKSwgeT0oc2VyaWVfZGVfdGllbXBvKSkpICsgCiAgZ2VvbV9saW5lKGNvbG9yID0gImRhcmtncmVlbiIpICsgCiAgbGFicyh0aXRsZSA9ICJQYXNhamVyb3MgQWVyZW9zIEludGVybmFjaW9uYWxlcyIsIHg9IkHDsW8iLCB5PSJOdW1lcm8iKQpgYGAKUG9kZW1vcyBjb25jbHVpciBkZSBsYSBncmFmaWNhIGFudGVyaW9yIHF1ZSBsYSBiYXNlIGRlICBkYXRvcyB0aWVuZSAqKnRlbmRlbmNpYSBjcmVjaWVudGUqKiB5ICoqcGF0cm9uIGVzdGFjaW9uYWwqKi4KCiMgPHNwYW4gc3R5bGU9ImNvbG9yOiBibHVlOyI+R2VuZXJhciBQcm9ub3N0aWNvPC9zcGFuPgpgYGB7cn0KIyBBanVzdGUgZGUgbW9kZWxvCm1vZGVsbyA8LSBhdXRvLmFyaW1hKHNlcmllX2RlX3RpZW1wbykKCiMgUmVhbGl6YXIgcHJvbm9zdGljbyBhIDEyIG1lc2VzCnByb25vc3RpY28gPC0gZm9yZWNhc3QobW9kZWxvLCBoPTEyKQoKIyBHcmFmaWNhIGRlIGRhdG9zIGhpc3Rvcmljb3MgeSBlbCBwcm9ub3N0aWNvCmF1dG9wbG90KHByb25vc3RpY28pICsKICBsYWJzKHRpdGxlPSJQYXNhamVyb3MgQWVyZW9zIEludGVybmFjaW9uYWxlcyIsIHg9IkHDsW8iLCB5PSJOdW1lcm8iKQoKIyBHZW5lcmFyIHByZWRpY2Npb24gcGFyYSB1biBtZXMgZW4gZXNwZWNpZmljbwpkZl9wcmVkaWNjaW9uIDwtIGRhdGEuZnJhbWUoRmVjaGEgPSB0aW1lKHByb25vc3RpY28kbWVhbiksIFByZWRpY2Npb24gPSBhcy5udW1lcmljKHByb25vc3RpY28kbWVhbikpCmRmX3ByZWRpY2Npb25bZGZfcHJlZGljY2lvbiRGZWNoYSA9PSAxOTYxLjAsIF0gI0VuZXJvIGRlIDE5NjEKYGBgCgoKCgoKCgoKCgoKCgoKCgoKCgoKCgoKCg==