
Contexto
La base de datos AirPassengers contiene el número
mensual de pasajero aéreos intenracionales entre 1949 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("tidyverse") #Paquete global para manipulación y análisis 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 pronósticos
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
#install.packages("ggplot2") #Para generar gráficas con mejor diseño
library(ggplot2)
Importar base de datos
df <- as.data.frame(AirPassengers)
serie_de_tiempo <- AirPassengers
Identifcar patrones o
tendencias
Los 4 componentes de las series de tiempo son:
Tendencia: Ej. Aumento en las 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 económicos (expansión y recesión).
Patrón Estacional: Ej. Aumento en las ventas de
juguetes durante la navidad. 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 = "darkgreen") +
labs(title= "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 de la gráfica anterior que la base de datos tiene
tendencia creciente y patrón
estacional.
Generar pronósticos
#Ajuste de modelo
modelo <- auto.arima(serie_de_tiempo)
#Realizar pronóstico a 12 meses
pronostico <- forecast(modelo, h=12)
#Graficar datos históricos y el pronóstico
autoplot(pronostico) +
labs(title="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 de 1961
## Fecha Prediccion
## 1 1961 445.6349
LS0tDQp0aXRsZTogIkFpclBhc3NlbmdlcnMiDQphdXRob3I6ICJTZXJ2YW5kb0JEX0EwMDgzNDY0NyINCmRhdGU6ICIyMDI0LTA5LTEyIg0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDoNCiAgICB0b2M6IFRSVUUNCiAgICB0b2NfZmxvYXQ6IFRSVUUNCiAgICBjb2RlX2Rvd25sb2FkOiBUUlVFDQogICAgdGhlbWU6IGx1bWVuDQotLS0NCg0KIVtdKEM6XFxVc2Vyc1xcc2VydmFcXERvd25sb2Fkc1xcQXRsYXN0aV8yMi4wIDJcXGFwLmpwZykNCg0KYGBge3Igc2V0dXAsIGluY2x1ZGU9RkFMU0V9DQprbml0cjo6b3B0c19jaHVuayRzZXQoZWNobyA9IFRSVUUpDQpgYGANCg0KIyA8c3BhbiBzdHlsZT0iY29sb3I6Ymx1ZTsiPkNvbnRleHRvPC9zcGFuPg0KTGEgYmFzZSBkZSBkYXRvcyAqKkFpclBhc3NlbmdlcnMqKiBjb250aWVuZSBlbCBuw7ptZXJvIG1lbnN1YWwgZGUgcGFzYWplcm8gYcOpcmVvcyBpbnRlbnJhY2lvbmFsZXMgZW50cmUgMTk0OSB5IDE5NjAgKDE0NCBvYnNlcnZhY2lvbmVzIG1lbnN1YWxlcykuDQpFc3RhIGJhc2UgZGUgZGF0b3MgZXMgYW1wbGlhbWVudGUgdXRpbGl6YWRhIHBhcmEgZWwgYW7DoWxpc2lzIGRlIHNlcmllcyBkZSB0aWVtcG8sIHJlZmxlamFuZG8gZWwgY3JlY2ltaWVudG8gZGUgbGEgaW5kdXN0cmlhIGRlIGxhIGF2aWFjacOzbiBjb21lcmNpYWwgZGVzcHXDqXMgZGUgbGEgKlNlZ3VuZGEgR3VlcnJhIE11bmRpYWwqLg0KDQojIDxzcGFuIHN0eWxlPSJjb2xvcjpibHVlOyI+SW5zdGFsYXIgcGFxdWV0ZXMgeSBsbGFtYXIgbGlicmVyw61hczwvc3Bhbj4NCmBgYHtyfQ0KI2luc3RhbGwucGFja2FnZXMoInRpZHl2ZXJzZSIpICNQYXF1ZXRlIGdsb2JhbCBwYXJhIG1hbmlwdWxhY2nDs24geSBhbsOhbGlzaXMgZGUgZGF0b3MNCmxpYnJhcnkodGlkeXZlcnNlKQ0KDQojaW5zdGFsbC5wYWNrYWdlcygiZm9yZWNhc3QiKSAjUGFyYSByZXZpc2FyIHRlbmRlbmNpYXMgeSBnZW5lcmFyIHByb27Ds3N0aWNvcw0KbGlicmFyeShmb3JlY2FzdCkNCg0KI2luc3RhbGwucGFja2FnZXMoImdncGxvdDIiKSAjUGFyYSBnZW5lcmFyIGdyw6FmaWNhcyBjb24gbWVqb3IgZGlzZcOxbw0KbGlicmFyeShnZ3Bsb3QyKQ0KYGBgDQoNCiMgPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWU7Ij5JbXBvcnRhciBiYXNlIGRlIGRhdG9zPC9zcGFuPg0KYGBge3J9DQpkZiA8LSBhcy5kYXRhLmZyYW1lKEFpclBhc3NlbmdlcnMpDQpzZXJpZV9kZV90aWVtcG8gPC0gQWlyUGFzc2VuZ2Vycw0KYGBgDQoNCiMgPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWU7Ij5JZGVudGlmY2FyIHBhdHJvbmVzIG8gdGVuZGVuY2lhczwvc3Bhbj4NCkxvcyA0IGNvbXBvbmVudGVzIGRlIGxhcyBzZXJpZXMgZGUgdGllbXBvIHNvbjoNCg0KKipUZW5kZW5jaWE6KiogRWouIEF1bWVudG8gZW4gbGFzIHZlbnRhcyBkZSB1bmEgdGllbmRhIGVuIGzDrW5lYSBkZWJpZG8gYWwgY3JlY2ltaWVudG8gZGVsIGNvbWVyY2lvIGVsZWN0csOzbmljby4NCioqQ2ljbG86KiogRWouIExhcyBmbHVjdHVhY2lvbmVzIGVuIGxhcyB2ZW50YXMgZGUgYXV0b23Ds3ZpbGVzIGEgbG8gbGFyZ28gZGUgbG9zIGNpY2xvcyBlY29uw7NtaWNvcyAoZXhwYW5zacOzbiB5IHJlY2VzacOzbikuDQoqKlBhdHLDs24gRXN0YWNpb25hbDoqKiBFai4gQXVtZW50byBlbiBsYXMgdmVudGFzIGRlIGp1Z3VldGVzIGR1cmFudGUgbGEgbmF2aWRhZC4NCioqQWxlYXRvcmlvOioqIEVqLiBDYcOtZGEgZGUgbGFzIHZlbnRhcyBwb3IgdW4gZGVzYXN0cmUgbmF0dXJhbC4NCg0KIVtdKEM6XFxVc2Vyc1xcc2VydmFcXERvd25sb2Fkc1xcdGltZS1zZXJpZXMtY29tcG9uZW50cy1yYW5kb20tZ3JhcGgtdHJlbmQtc2Vhc29uYWwtY3ljbGUtZ3JhcGhfNTE4MDE4LTIzMTguYXZpZikNCiFbXShDOlxcVXNlcnNcXHNlcnZhXFxEb3dubG9hZHNcXDFfS1ExendmNERNX3FleXBMLW4tbTNldy5qcGcpDQoNCmBgYHtyfQ0KZ2dwbG90KGRmLCBhZXMoeD10aW1lKHNlcmllX2RlX3RpZW1wbyksIHkgPSBzZXJpZV9kZV90aWVtcG8pKSsNCiAgZ2VvbV9saW5lKGNvbG9yID0gImRhcmtncmVlbiIpICsNCiAgbGFicyh0aXRsZT0gIlBhc2FqZXJvcyBBw6lyZW9zIEludGVybmFjaW9uYWxlcyIsIHg9IkHDsW8iLCB5PSJOw7ptZXJvIikNCmBgYA0KUG9kZW1vcyBjb25jbHVpciBkZSBsYSBncsOhZmljYSBhbnRlcmlvciBxdWUgbGEgYmFzZSBkZSBkYXRvcyB0aWVuZSAqKnRlbmRlbmNpYSBjcmVjaWVudGUqKiB5ICoqcGF0csOzbiBlc3RhY2lvbmFsKiouDQoNCiMgPHNwYW4gc3R5bGU9ImNvbG9yOmJsdWU7Ij5HZW5lcmFyIHByb27Ds3N0aWNvczwvc3Bhbj4NCmBgYHtyfQ0KI0FqdXN0ZSBkZSBtb2RlbG8NCm1vZGVsbyA8LSBhdXRvLmFyaW1hKHNlcmllX2RlX3RpZW1wbykNCg0KI1JlYWxpemFyIHByb27Ds3N0aWNvIGEgMTIgbWVzZXMNCnByb25vc3RpY28gPC0gZm9yZWNhc3QobW9kZWxvLCBoPTEyKQ0KDQojR3JhZmljYXIgZGF0b3MgaGlzdMOzcmljb3MgeSBlbCBwcm9uw7NzdGljbw0KYXV0b3Bsb3QocHJvbm9zdGljbykgKw0KICBsYWJzKHRpdGxlPSJQYXNhamVyb3MgQcOpcmVvcyBJbnRlcm5hY2lvbmFsZXMiLCB4PSJBw7FvIiwgeT0iTsO6bWVybyIpDQoNCiNHZW5lcmFyIHByZWRpY2Npw7NuIHBhcmEgdW4gbWVzIGVuIGVzcGVjw61maWNvDQpkZl9wcmVkaWNjaW9uIDwtIGRhdGEuZnJhbWUoRmVjaGEgPSB0aW1lKHByb25vc3RpY28kbWVhbiksIFByZWRpY2Npb24gPSBhcy5udW1lcmljKHByb25vc3RpY28kbWVhbikpDQpkZl9wcmVkaWNjaW9uW2RmX3ByZWRpY2Npb24kRmVjaGEgPT0gMTk2MS4wLCBdICNFbmVybyBkZSAxOTYxDQpgYGA=