Los datos fueron tomado de la página dasl (https://dasl.datadescription.com/datafile/hawaii-tourism/) al interior la base de datos se encuentra la captura de información mensual sobre el turismo en Hawai, desde 2002 hasta 2006. Es de notar que la industria hawaiana depende en su gran mayoría del turismo, con un especial énfasis en los visitantes nacionales e internacional, los cuales representan una fuente importante de ingresos para la isla, dado que al ser un estado aislado con recursos limitados no hace tan viable otras posibles fuentes de ingreso, es de notar que los datos fueron tomados antes de la crisis financiera de 2008 la cual logro afectar profundamente la economía de Hawai. Incluye las siguientes columnas principales:
• Month/Mes : Fecha del mes en que se registraron los datos. • Total : Número total de visitantes nacionales a Hawái en el mes específico. • Time : Índice de tiempo secuencial que comienza en uno. • Ene - Dic : Indicadores binarios para cada mes (1 si es el mes correspondiente, 0 en caso contrario). • Nacional/domestic : Número de visitantes nacionales. • Internacional/international : Número de visitantes internacionales.
Para propositos del ejercicio, elegimos la variable total para realizar los modelos y posteriormente la predicción mas adecuada.A continuación llamaremos la base de datos.
Hawaii_turismo <- read_excel("C:/Users/ThinkPad T480/Downloads/Modelos SARIMA-20241105/Hawaii_turismo.xlsx")
Hawaii = ts(Hawaii_turismo[1:60,2], start=c(2002,1), frequency=12)
En un primer acercamiento a la base de datos, se ha graficado la serie del total de viajeros reportados entre el marco de tiempo enunciado con anterioridad, en la grafica se observa una clara estacionalidad, con picos y caídas que se repiten aproximadamente cada año. Esto sugiere que hay períodos específicos (posiblemente vinculados a estaciones o vacaciones) donde el turismo a Hawái aumenta significativamente, seguido de una disminución.Se podria decir que no es evidente una tendencia creciente o decreciente fuerte en el numero total de personas que visitaron hawaii, es decir que la serie parece oscilar alrededor de un valor medio sin una dirección clara de crecimiento o descenso a largo plazo .Cada año muestra una variabilidad similar en el número de turistas, con valores máximos y mínimos en puntos recurrentes del año, como se puede ver en la disposición de las etiquetas de los meses.
Para mayor claridad se desarrollo este grafico, el cual nos permite visualizar las variaciones estacionales mensuales a lo largo del 2002 al 2006, asi que en el eje X se encuentran los meses y en el eje y la cantidad de turistas como en el grafico anterior, Cada línea en un mes específico representa la variación de turistas a través de los años en ese mismo mes. Esto permite observar cómo cambia la cantidad de visitantes cada año en el mismo período estacional.
plot(Hawaii,col="6", ann=FALSE)
points(y=Hawaii,x=time(Hawaii),pch=as.vector(season(Hawaii)),col="4")
title(main="Serie de viajes a Hawaii", col.main="blue", font.main=2)
title(xlab="Meses", col.lab=rgb(1,0.4,1))
title(ylab="Total de personas", col.lab=rgb(1,0.4,1))
A continución se encuentra el grafico monthplot o grafico de caja flotante, en este se hace posible evidenciar con mayor claridad un comportamiento estacional, ya que algunos meses presentan valores consistentemente más altos o más bajos. Por ejemplo, parece haber un pico en el número de turistas durante los meses de verano (junio, julio y agosto), lo cual podría estar relacionado con la temporada alta de vacaciones en muchas regiones.En contraste, los meses como enero y febrero parecen tener un menor número de turistas, lo que sugiere una temporada baja.
monthplot(Hawaii, col = "midnightblue")
En este grafico de boxplots, se puede evidenciar que la mediana varía significativamente de un mes a otro, mostrando cómo ciertos meses tienen consistentemente más o menos turistas.Los meses de verano (alrededor de junio, julio y agosto) presentan medianas más altas, lo cual es típico de un aumento en el turismo durante las vacaciones.Siendo estas las cajas mas amplias, sin embargo en estos mismos meses se pueden ver puntos extremos, lo que nos podria sugerir que en ciertos años la afluencia de turistas fue inusualmente alta o baja en comparación con la mediana y el rango intercuartilico.
boxplot(Hawaii~cycle(Hawaii))
Observamos que varios de los primeros rezagos (lags) tienen correlaciones significativas, como lo indica el hecho de que las barras superan las líneas azules (que representan el intervalo de confianza). Esto sugiere que la serie tiene memoria y que valores pasados tienen una influencia significativa en los valores actuales.La presencia de estimación en rezagos cercanos a 1, 2 y 3 meses puede indicar que los datos están influenciados por valores recientes, lo cual es común en series de tiempo con un componente estacional o de tendencia.
La serie es estacionalmente estacionaria, pero no necesariamente estacionaria en términos de tendencia. Esto quiere decir que los patrones de corto plazo ya están estabilizados, y la diferenciación ordinaria podría no ser útil en este caso.
acf(Hawaii)
La función ha sido diferenciada de dos maneras: primero, se aplicó una diferenciación ordinaria (con un rezago de 1), y luego, una diferenciación estacional. (con un rezago de 12). Esto se hace para intentar estabilizar tanto la tendencia como la estacionalidad de la serie de tiempo.
Con un rezago de 1, ayuda a estabilizar la tendencia eliminando la dependencia inmediata entre valores consecutivos. La diferenciación estacional, con un rezago de 12, aborda la estacionalidad anual en los datos, reduciendo los patrones recurrentes a lo largo de los años. Como resultado, la serie diferenciada muestra menos autocorrelación significativa en los primeros rezagos, lo que sugiere una mayor cercanía a la estacionariedad.
En el gráfico de la ACF, algunos rezagos, especialmente en niveles estacionales, aún presentan picos, lo cual indica que queda alguna estructura en los datos que podría capturarse con un modelo autorregresivo o de medias móviles. Sin embargo, la disminución de autocorrelaciones significativas sugiere que la serie es más adecuada para el modelado, quizás ajustable a un modelo SARIMA como una opción viable para capturar tanto el componente estacional como no estacional restante.***
dhawaii<-diff(Hawaii,lag=1,differences=1)
dthawaii<-diff(dhawaii,lag=12,differences=1)
acf(dhawaii,lag= 40)
La desviación estándar (sd) se usa aquí para medir la variabilidad en cada versión de la serie de tiempo, después de aplicar varias transformaciones de diferenciación. Cada línea define un cálculo y almacena el resultado en una variable específica.
Resaltaremos que s00 : Calcula la desviación estándar de la serie original “Hawaii” sin ninguna diferenciación, lo que sirve como valor base para comparar la variabilidad.
En contraste s10 : Aplica una diferenciación ordinaria con un rezago de 1 (diferencias=1) y luego calcula la desviación estándar de esta serie diferenciada, reduciendo posibles tendencias. s01 : Aplica una diferenciación estacional con un rezago de 12 (diferencias=1) y calcula la desviación estándar, eliminando la estacionalidad anual. s11 : Aplica tanto una diferenciación ordinaria (rezago 1) como una diferenciación estacional (rezago 12) y luego calcula la desviación estándar de esta serie resultante. s21 : Aplica una doble diferenciación estacional con rezago 12 (diferencias=2) después de la diferenciación ordinaria, y luego calcula la desviación estándar, abordando variaciones más complejas. s20 : Aplica solo una doble diferenciación ordinaria (rezago 1, diferencias=2) y calcula la desviación estándar. Cada uno de estos valores numéricos muestra cómo cambia la variabilidad de la serie a medida que se aplican diferentes tipos de diferenciación. La reducción en la desviación estándar ayuda a evaluar la estabilidad de la serie y a decidir cuál es la mejor diferenciación para modelar la serie de tiempo.
s00=sd(Hawaii);s00
## [1] 66114.31
s10=sd(diff(Hawaii,lag=1,differences=1));s10
## [1] 68023.57
s01=sd(diff(Hawaii,lag=12,differences=1));s01
## [1] 32485.55
dloghawaii<-diff(Hawaii,lag=1,differences=1)
s11=sd(diff(dloghawaii,lag=12,differences=1));s11
## [1] 31931.52
s21=sd(diff(dloghawaii,lag=12,differences=2));s21
## [1] 57614.58
s20=sd(diff(Hawaii,lag=1,differences=2));s20
## [1] 105773.7
En este espacio procuramos determinar cual es el número óptimo de diferenciaciones que deberian aplicarse a la serie de tiempo “Hawaii”, con no otra finalidad que se vuelva estacionaria.
La función ndiffs calcula el número óptimo de diferenciaciones ordinarias (no estacionales) necesarias para lograr la estacionariedad en términos de tendencia. En este caso, el resultado es 1, lo que indica que una sola diferenciación ordinaria debería ser suficiente para eliminar cualquier tendencia en la serie.
Y con nsdiffs calculamos el número óptimo de diferenciaciones estacionales necesarias para eliminar patrones estacionales en la serie. En este caso, el resultado es también 1, lo que sugiere que una diferenciación estacional con un rezago de 12 (para capturar el ciclo anual es decir los 12 meses) es adecuada para hacer que la serie sea estacionaria en términos estacionales.
Estos resultados indican que, para hacer que la serie de tiempo “Hawaii” sea estacionaria, se necesita aplicar una diferenciación ordinaria de primer orden y una diferenciación estacional de primer orden. Esto sugiere que un modelo SARIMA con parámetros de diferenciación (1,1) podría ser adecuado para modelar esta serie de tiempo, capturando tanto la tendencia como la estacionalidad anual es decir los 12 meses.
ndiffs(Hawaii)
## [1] 1
nsdiffs(Hawaii)
## [1] 1
Los resultados muestran las pruebas de raíz unitaria Dickey-Fuller Aumentada (ADF) y Phillips-Perron (PP). Estas pruebas ayudan a verificar si la serie es estacionaria o si presenta raíz unitaria, lo cual indicaría una tendencia no estacionaria en los datos.
Prueba ADF (Augmented Dickey-Fuller Test):
El valor p de 0.01 es menor al nivel común de significancia (0.05), lo que indica que se puede rechazar la hipótesis nula de no estacionariedad. Esto sugiere que la serie es estacionaria, o al menos no tiene una raíz unitaria, según la prueba ADF.
Prueba PP (Phillips-Perron Unit Root Test):
De manera similar, el valor p es 0.01, lo cual es menor al nivel de significancia. Esto permite rechazar la hipótesis nula de no estacionariedad, apoyando la conclusión de que la serie es estacionaria según la prueba PP.
Estos resultados son relevantes porque confirman que la serie de tiempo “Hawaii” puede ser tratada como estacionaria sin necesidad de una diferenciación adicional. Esto implica que, a pesar de los patrones estacionales que podrían observarse visualmente, los datos cumplen con los requisitos de estacionariedad necesarios para ciertos modelos de series de tiempo, como los modelos ARIMA o SARIMA, sin diferenciar la tendencia. Sin embargo, dado que previamente se identificaron patrones estacionales, un modelo SARIMA con diferenciación estacional aún podría capturar los patrones estacionales anuales de la serie.
adf.test(Hawaii)
## Warning in adf.test(Hawaii): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: Hawaii
## Dickey-Fuller = -4.2349, Lag order = 3, p-value = 0.01
## alternative hypothesis: stationary
pp.test(Hawaii)
## Warning in pp.test(Hawaii): p-value smaller than printed p-value
##
## Phillips-Perron Unit Root Test
##
## data: Hawaii
## Dickey-Fuller Z(alpha) = -37.386, Truncation lag parameter = 3, p-value
## = 0.01
## alternative hypothesis: stationary
En contraste adelantamos el mismo ejercicio pero con la función diferenciada
Prueba ADF (Augmented Dickey-Fuller Test)
Al igual que en la prueba anterior, el valor p es 0.01, que es menor al nivel de significancia común de 0.05. Esto indica que podemos rechazar la hipótesis nula de no estacionariedad, sugiriendo que la serie “dhawaii” es estacionaria.
Prueba PP (Phillips-Perron Unit Root Test)
La prueba Phillips-Perron también muestra un valor p de 0.01, permitiendo rechazar la hipótesis nula de no estacionariedad y respaldando la conclusión de que la serie diferenciada es estacionaria.
Estos resultados son importantes porque confirman que, tras aplicar la diferenciación ordinaria y estacional, la serie “dhawaii” es estacionaria. Esto valida el proceso de diferenciación aplicado y sugiere que la serie “dhawaii” está lista para el modelado de series de tiempo. En este contexto, un modelo SARIMA que capture tanto la estructura estacional como la no estacional sería apropiado para esta serie, ya que ahora cumple con los requisitos de estacionariedad. Esto mejora la precisión y validez de las predicciones, al permitir que el modelo se enfoque en las fluctuaciones estacionales y la tendencia eliminada previamente.
adf.test(dthawaii)
## Warning in adf.test(dthawaii): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: dthawaii
## Dickey-Fuller = -5.2868, Lag order = 3, p-value = 0.01
## alternative hypothesis: stationary
pp.test(dthawaii)
## Warning in pp.test(dthawaii): p-value smaller than printed p-value
##
## Phillips-Perron Unit Root Test
##
## data: dthawaii
## Dickey-Fuller Z(alpha) = -64.793, Truncation lag parameter = 3, p-value
## = 0.01
## alternative hypothesis: stationary
La gráfica muestra la serie de tiempo “Hawaii” después de aplicar dos diferenciaciones: una diferenciación ordinaria con un rezago de 1 y una diferenciación estacional con un rezago de 12. Esta transformación tiene como objetivo eliminar la tendencia y la estacionalidad de la serie, haciendo que los datos sean estacionarios y listos para modelado de series de tiempo.
Variabilidad Reducida y Centro en Cero: La serie diferenciada fluctúa alrededor de un valor cercano a cero, lo cual es una señal de estacionariedad. Esto indica que la tendencia y los efectos estacionales han sido eliminados, dejando solo las fluctuaciones de corto plazo.
La mayoría de los puntos están distribuidos de manera más uniforme en torno a cero, lo cual es consistente con la eliminación de la tendencia y la estacionalidad.
Fluctuaciones en el Tiempo: Aunque la serie parece estacionaria, se observan algunas fluctuaciones grandes en ciertos periodos (por ejemplo, alrededor de 2005 y 2006), que podrían ser el resultado de eventos específicos en esos años que afectaron el turismo a Hawái. Estas variaciones pueden ser picos o caídas en la serie, pero al no tener una tendencia ni estacionalidad, pueden considerarse como ruido o eventos aislados.
Picos y Valles: Los picos positivos y negativos, aunque menos regulares, sugieren que todavía hay cierta volatilidad en los datos, pero no siguen un patrón estacional. Esto es normal en series de tiempo diferenciadas, donde solo queda la variación de corto plazo sin patrones regulares.
Relevancia en el Contexto de Modelado: - Con esta transformación, la serie es adecuada para aplicar modelos de series de tiempo como SARIMA, que capturan las relaciones de corto plazo sin necesidad de preocuparse por patrones de tendencia o estacionalidad. La serie diferenciada permitirá que el modelo se centre en las fluctuaciones que quedan, lo cual puede mejorar la precisión de las predicciones.
Esta gráfica de la serie diferenciada confirma que la transformación aplicada fue efectiva en hacer que los datos sean estacionarios, eliminando tanto la tendencia como la estacionalidad anual. Esto facilita el modelado estadístico, ya que los datos ahora cumplen con los requisitos de estacionariedad y están listos para el ajuste de modelos SARIMA o ARIMA sin preocupaciones de tendencia o estacionalidad residual.
diffHawaii<-diff(Hawaii)
diff.hawaii<-diff(diffHawaii, lag = 12)
autoplot(diff.hawaii, ts.colour = "darkorange4", ts.linetype = "dashed")
La ACF o FAC de la serie diferenciada “diff.hawaii” muestra que la
mayoría de los rezagos están dentro de las bandas de confianza, lo cual
indica que no hay autocorrelación significativa en la mayoría de ellos.
Esto sugiere que la diferenciación aplicada (ordinaria y estacional) ha
sido efectiva para eliminar patrones de autocorrelación, lo que es
característico de una serie estacionaria. Sin embargo, algunos rezagos
de corto plazo aún muestran autocorrelaciones que superan las bandas de
confianza, lo cual podría indicar una leve dependencia residual a corto
plazo.
La rápida disminución de los valores de autocorrelación después de los primeros rezagos es un indicio adicional de estacionariedad en la serie, ya que no presenta efectos de largo plazo.Además, la ausencia de patrones periódicos en rezagos como el 12 o múltiplos de 12 confirma que la estacionalidad ha sido eliminada de manera efectiva, haciendo innecesarios ajustes adicionales para tratar con estacionalidad residual.
autoplot(acf(diff.hawaii, plot = FALSE,lag=40))
la prueba Dickey-Fuller Aumentada (ADF) aplicada a la serie diferenciada
“diff.hawaii”. El valor p es menor a 0.01, lo cual significa que es muy
pequeño (menor al nivel de significancia común de 0.05).la hipótesis
nula plantea que la serie tiene una raíz unitaria, es decir, que no es
estacionaria. Un valor p bajo (menor a 0.05) indica que hay suficiente
evidencia para rechazar la hipótesis nula y aceptar la hipótesis
alternativa de que la serie es estacionaria.
adf<-adf.test(diff.hawaii)
## Warning in adf.test(diff.hawaii): p-value smaller than printed p-value
adf$p.value
## [1] 0.01
ACF o FAC (Función de Autocorrelación):
En la gráfica de la ACF o FAC, se observa que los primeros rezagos presentan autocorrelaciones significativas, mientras que después de los primeros rezagos, la autocorrelación tiende a ser más débil y se encuentra mayormente dentro de las bandas de confianza (líneas azules). La disminución rápida de la ACF indica que la serie no tiene dependencia de largo plazo y que los efectos de autocorrelación se limitan a los rezagos cercanos, lo cual es típico en series estacionarias.
PACF o FACP (Función de Autocorrelación Parcial):
En la gráfica de la PACF o FACP, se observa que el primer rezago es significativo, y después de ese, algunos rezagos cercanos también muestran cierta significancia, aunque la mayoría están dentro de las bandas de confianza. La presencia de un pico significativo en el primer rezago de la PACF sugiere que un modelo AR(1) podría capturar adecuadamente la estructura de dependencia de la serie. Sin embargo, la PACF también muestra algunos picos menores en rezagos adicionales, lo que podría indicar una estructura de corto alcance más compleja. Adionalmente se observa que el comportamiento de la FAC y la FACP abre la puerta a un modelo AR o un modelo MA.
autoplot(acf(diff.hawaii, plot = FALSE,lag=40), main = "acf")
autoplot(pacf(diff.hawaii, plot = FALSE,lag=40),main = "pacf")
Los modelos que se han probado aquí son diferentes configuraciones de modelos SARIMA para la serie de tiempo “Hawaii”. Cada modelo presenta una combinación de parámetros estacionales y no estacionales (ordinales) para capturar tanto las fluctuaciones de corto plazo como los patrones anuales de la serie.
Modelo Propuestos SARIMA1 (1,1,0)(1,1,0) SARIMA2 (0,1,1)(1,1,0) SARIMA3 (1,1,1)(0,1,1) SARIMA4 (0,0,1)(0,1,1) SARIAM5 (1,1,0),(0,1,1) autoarima (2,0,0),(1,1,0)
Este modelo tiene un término de autorregresión no estacional (AR = 1) y uno estacional (SAR = 1) con diferenciación tanto ordinaria como estacional.
Arima1<- Arima(Hawaii, order=c(1,1,0), seasonal=list(order=c(1,1,0),period=12));Arima1
## Series: Hawaii
## ARIMA(1,1,0)(1,1,0)[12]
##
## Coefficients:
## ar1 sar1
## -0.5736 -0.5802
## s.e. 0.1182 0.1169
##
## sigma^2 = 489625465: log likelihood = -538.54
## AIC=1083.08 AICc=1083.64 BIC=1088.63
Arima2 (ARIMA(0,1,1)(1,1,0)[12]):
Incluye un término de media móvil no estacional (MA = 1) y un término autorregresivo estacional (SAR = 1)
Arima2<- Arima(Hawaii, order=c(0,1,1), seasonal=list(order=c(1,1,0),period=12));Arima2
## Series: Hawaii
## ARIMA(0,1,1)(1,1,0)[12]
##
## Coefficients:
## ma1 sar1
## -0.5921 -0.5552
## s.e. 0.1004 0.1200
##
## sigma^2 = 4.96e+08: log likelihood = -538.61
## AIC=1083.23 AICc=1083.78 BIC=1088.78
Arima3 (ARIMA(1,1,1)(0,1,1)[12]):
Este modelo incluye términos de autorregresión y media móvil no estacionales, además de un término de media móvil estacional.
Arima3<- Arima(Hawaii, order=c(1,1,1), seasonal=list(order=c(0,1,1),period=12));Arima3
## Series: Hawaii
## ARIMA(1,1,1)(0,1,1)[12]
##
## Coefficients:
## ar1 ma1 sma1
## -0.2335 -0.4541 -0.9996
## s.e. 0.2636 0.2648 0.3820
##
## sigma^2 = 327382827: log likelihood = -535.67
## AIC=1079.34 AICc=1080.29 BIC=1086.74
Arima4 (ARIMA(0,0,1)(0,1,1)[12]):
Modelo simple con solo un término de media móvil no estacional y uno estacional.
Arima4<- Arima(Hawaii, order=c(0,0,1), seasonal=list(order=c(0,1,1),period=12));Arima4
## Series: Hawaii
## ARIMA(0,0,1)(0,1,1)[12]
##
## Coefficients:
## ma1 sma1
## 0.4057 -0.0619
## s.e. 0.1044 0.1542
##
## sigma^2 = 1.144e+09: log likelihood = -567.78
## AIC=1141.55 AICc=1142.1 BIC=1147.17
Arima5 (ARIMA(1,1,0)(0,1,1)[12]):
Incluye solo un término de autorregresión no estacional y un término de media móvil estacional.
Arima5<- Arima(Hawaii, order=c(1,1,0), seasonal=list(order=c(0,1,1),period=12));Arima5
## Series: Hawaii
## ARIMA(1,1,0)(0,1,1)[12]
##
## Coefficients:
## ar1 sma1
## -0.5479 -0.9981
## s.e. 0.1192 0.4499
##
## sigma^2 = 335185386: log likelihood = -536.65
## AIC=1079.3 AICc=1079.86 BIC=1084.85
Auto_arima (ARIMA(2,0,0)(1,1,0)[12]):
Para contraste se realiza también este modelo incluye dos términos de autorregresión no estacionales y uno estacional, y fue seleccionado automáticamente.
auto_arima<- Arima(Hawaii, order=c(2,0,0), seasonal=list(order=c(1,1,0),period=12));auto_arima
## Series: Hawaii
## ARIMA(2,0,0)(1,1,0)[12]
##
## Coefficients:
## ar1 ar2 sar1
## 0.3786 0.5319 -0.5676
## s.e. 0.1190 0.1213 0.1210
##
## sigma^2 = 482897952: log likelihood = -549.39
## AIC=1106.79 AICc=1107.72 BIC=1114.27
ac1 = accuracy(Arima1)
ac2 = accuracy(Arima2)
ac3 = accuracy(Arima3)
ac4 = accuracy(Arima4)
ac5 = accuracy(Arima5)
ac6 = accuracy(auto_arima)
Para facilitar la visualizacion de los resultados, a continuación se tiene una tabla con los mismos. En esta tabla se observa las métricas AIC(Criterio de Información de Akaike), BIC (Criterio de Información Bayesiano), MAPE (Error Absoluto Medio Porcentual) y RECM (Raíz del Error Cuadrático Medio) para cada modelo propuesto. Estas métricas permiten comparar el desempeño de los modelos y ayudan a identificar cuál de ellos se ajusta mejor a la serie de tiempo “Hawaii”.
AIC y BIC:
Los modelos con los valores más bajos de AIC y BIC son SARIMA 3 (1,1,1)(0,1,1) y SARIMA 5 (1,1,0)(0,1,1), con AIC de 1079.34 y 1079.3, respectivamente, y BIC de 1086.74 y 1084.85. Estos valores sugieren que ambos modelos logran un buen balance entre ajuste y parsimonia, y se consideran los más adecuados para la serie en términos de información. El modelo autoarima (2,0,0)(1,1,0), aunque fue seleccionado automáticamente, presenta valores de AIC y BIC más altos (1106.79 y 1114.27), indicando que es menos eficiente en comparación con SARIMA 3 y SARIMA 5.
MAPE (Error Absoluto Medio Porcentual):
El MAPE más bajo corresponde a SARIMA 3 con un valor de 1.85, seguido de cerca por SARIMA 5 con 1.93. Un MAPE más bajo indica que el modelo tiene un error porcentual menor en las predicciones, lo que implica una mayor precisión en comparación con los otros modelos. Autoarima tiene un MAPE más alto (2.29), lo que sugiere que este modelo tiene un error porcentual ligeramente mayor y, por lo tanto, es menos preciso.
RECM (Raíz del Error Cuadrático Medio):
El modelo SARIMA 3 presenta el menor RECM (15494.54), seguido de cerca por SARIMA 5 con un RECM de 15855.25. Un RECM más bajo indica un ajuste más preciso, ya que este valor mide la desviación promedio de las predicciones respecto a los valores observados. Los modelos SARIMA 1 y SARIMA 2 tienen valores de RECM significativamente más altos, lo que indica que su precisión es inferior en comparación con SARIMA 3 y SARIMA 5.
tabla = data.frame("AIC"= c(round(AIC(Arima1),2),round(AIC(Arima2),2),round(AIC(Arima3),2),round(AIC(Arima4),2),round(AIC(Arima5),2),round(AIC(auto_arima),2)),
"BIC"= c(round(BIC(Arima1),2),round(BIC(Arima2),2),round(BIC(Arima3),2),round(BIC(Arima4),2),round(BIC(Arima5),2),round(BIC(auto_arima),2)),
"MAPE"= c(round(ac1[,5],2),round(ac2[,5],2),round(ac3[,5],2),round(ac4[,5],2),round(ac5[,5],2),round(ac6[,5],2)),
"RECM"=c(round(ac1[,2],2),round(ac2[,2],2),round(ac3[,2],2),round(ac4[,2],2),round(ac5[,2],2),round(ac6[,2],2)))
rownames(tabla)=c("SARIMA 1 (1,1,0),(1,1,0)","SARIMA 2 (0,1,1),(1,1,0)","SARIMA 3 (1,1,1),(0,1,1)","SARIMA 4 (0,0,1),(0,1,1)","SARIMA 5 (1,1,0),(0,1,1)","autoarima (2,0,0),(1,1,0)" )
tabla
Para una mejor visualizacion de nuestra decisión se diseño esta tabla resumen del desempeño de los modelos Sarima. En lugar de mostrar los valores numéricos de cada métrica, se han colocado emojis (caritas felices) para destacar los modelos que sobresalen en cada una de las métricas, ya que logran un buen desempeño en varias métricas de ajuste y precisión.
Nuestro mejor modelo es el sarima 3
tabla1<-data.frame("AIC" = c(" "," ","😊"," ","😊"," "),
"BIC" = c(" "," "," "," ","😊"," "),
"MAPE" = c(" "," ","😊"," "," "," "),
"RECM" = c(" "," ","😊"," "," "," "))
rownames(tabla1)=c("SARIMA 1 (1,1,0),(1,1,0)","SARIMA 2 (0,1,1),(1,1,0)","SARIMA 3 (1,1,1),(0,1,1)","SARIMA 4 (0,0,1),(0,1,1)","SARIMA 5 (1,1,0),(0,1,1)","autoarima (2,0,0),(1,1,0)")
tabla1
Sarima 3 (1,1,1)(0,1,1)[12]
(1+0.2335B)(1-B)(1-B^12)X_t = (1-0,4541B)(1-0.9996B^12)A_t A_t ~ (0 , 327382827 )
En esta gráfica, se observa la serie de tiempo original “Hawaii” (en negro) junto con los valores ajustados (en rojo) por el modelo Arima3. Esta visualización permite evaluar el ajuste del modelo al comparar los valores observados con los valores que el modelo predice.
A simple vista, el modelo Arima3 parece seguir adecuadamente el patrón general de la serie original, capturando tanto la tendencia como las fluctuaciones estacionales. Esto indica que el modelo logra un buen ajuste en términos generales.
plot(Hawaii)
lines(fitted(Arima3),col=2)
### Residuales del arima 3
Este análisis de los residuales indica que el modelo ARIMA(1,1,1)(0,1,1)[12] ha capturado adecuadamente la estructura de la serie “Hawaii”. La ausencia de patrones claros y la variabilidad constante de los residuales sugieren que los errores son esencialmente ruido blanco, lo que valida el modelo como adecuado para predicciones futuras. La presencia de algunos valores atípicos podría explorarse más a fondo, pero no parece comprometer la calidad del modelo.
plot(rstandard(Arima3),ylab='Standardized residuals',type='b',main=expression(Residuals~fromtheARIMA(list(1,1,1))%*%(list(0,1,1))[12]~Model))
abline(h=0)
Este resultado muestra una prueba t de una muestra aplicada a los residuales del modelo Arima3. El objetivo de esta prueba es determinar si la media de los residuales es significativamente diferente de cero. En un modelo de series de tiempo bien ajustado, se espera que los residuales tengan una media cercana a cero, lo cual indicaría que no hay un sesgo sistemático en las predicciones.
El estadístico t es 0.63396 y el valor p asociado es 0.5286. Un valor p mayor a 0.05 (como en este caso, 0.5286) indica que no hay suficiente evidencia para rechazar la hipótesis nula que la media de los residuales es igual a cero. Esto sugiere que la media de los residuales no es significativamente diferente de cero, lo cual es una buena señal, ya que implica que el modelo no presenta un sesgo sistemático en sus predicciones.
t.test(Arima3$residuals)
##
## One Sample t-test
##
## data: Arima3$residuals
## t = 0.63396, df = 59, p-value = 0.5286
## alternative hypothesis: true mean is not equal to 0
## 95 percent confidence interval:
## -2748.266 5297.262
## sample estimates:
## mean of x
## 1274.498
En modelos de series de tiempo bien ajustados, los residuales estandarizados deberían aproximarse a una distribución normal estándar, la cual tiene una media de 0 y una desviación estándar de 1. El valor obtenido, 0.8606, es cercano a 1, lo que indica que los residuales estandarizados tienen una variabilidad que se aproxima a la esperada en una serie de residuales bien comportados.
Una desviación estándar cercana a 1 en los residuales estandarizados también respalda la homocedasticidad de los errores (variabilidad constante). Esto es importante, ya que asegura que el modelo no está generando residuales con variabilidad creciente o decreciente, lo cual cumpliría con uno de los supuestos de un buen modelo de series de tiempo.
a=sd(rstandard(Arima3));a
## [1] 0.8606492
con líneas de referencia en ±1.96 desviaciones estándar. Estas líneas de referencia representan aproximadamente el intervalo de confianza del 95% para una distribución normal estándar. Si los residuales están dentro de este rango, se considera que el modelo está capturando bien la variabilidad de la serie sin dejar patrones significativos sin modelar.
La mayoría de los residuales estandarizados se encuentran dentro del rango de ±1.96 desviaciones estándar, lo cual es una buena señal. Esto sugiere que el modelo está capturando adecuadamente la estructura de la serie de tiempo y que los errores son, en su mayoría, ruido blanco.Algunos puntos se acercan o exceden ligeramente estas líneas, pero son pocos y no muestran un patrón repetitivo. Estos puntos pueden ser variaciones aleatorias o valores atípicos, pero no indican una falla sistemática en el modelo.
No se observan patrones cíclicos o tendencias en los residuales estandarizados, lo que indica que el modelo ha capturado bien tanto la tendencia como la estacionalidad de la serie. La aleatoriedad en los residuales es una señal de que el modelo ha extraído toda la información estructural de la serie.La variabilidad de los residuales parece constante en el tiempo, lo cual es coherente con la suposición de homocedasticidad (varianza constante) en los errores. Esto es importante, ya que, de otro modo, una varianza cambiante indicaría que el modelo no se ajusta bien a ciertos periodos de tiempo.
plot(rstandard(Arima3), ylim=c(-2, 2))
abline(h = -1.96*a)
abline(h = +1.96*a)
La ACF o FAC de los residuales permite verificar si quedan correlaciones significativas en los errores después de ajustar el modelo. En un modelo bien ajustado, los residuales deberían comportarse como ruido blanco, lo cual implica que no deberían presentar autocorrelación significativa.En nuestro caso los residuales del modelo Arima3 sugiere que los residuales son esencialmente ruido blanco, ya que no presentan autocorrelaciones significativas ni patrones evidentes. Esto indica que el modelo ha capturado de manera adecuada tanto la tendencia como la estacionalidad de la serie “Hawaii”, y que no hay dependencia temporal remanente en los errores. El modelo Arima3, por tanto, es adecuado para esta serie de tiempo y puede utilizarse para predicciones con confianza.
acf(Arima3$residuals,lag.max=40)
La mayoría de los valores de la PACF están dentro de las bandas de confianza (líneas azules punteadas), lo que indica que no existen autocorrelaciones parciales significativas en los residuales para la mayoría de los rezagos. Esto sugiere que los errores no presentan dependencia temporal remanente y que el modelo ha capturado adecuadamente la estructura de la serie. Algunos rezagos individuales superan ligeramente las bandas de confianza, pero no muestran un patrón consistente, lo cual probablemente se deba a variaciones aleatorias. En conjunto, esta PACF respalda que los residuales se comportan como ruido blanco, confirmando la idoneidad del modelo Arima3 para esta serie de tiempo.
pacf(Arima3$residuals,lag.max=40)
### Prueba de Ljung-Box aplicado al modelo Arima 3
La prueba de Ljung-Box verifica si los residuales son independientes (es decir, si no presentan autocorrelación en conjunto) en los primeros 10 rezagos. En un modelo bien ajustado, se espera que los residuales no presenten autocorrelación significativa y se comporten como ruido blanco.
El valor p obtenido es 0.8122, que es mayor a 0.05. Indica que no hay suficiente evidencia para rechazar la hipótesis nula, la cual afirma que los residuales son independientes en los primeros 10 rezagos.
Box.test(residuals(Arima3),lag=10,type="Ljung" )
##
## Box-Ljung test
##
## data: residuals(Arima3)
## X-squared = 6.0366, df = 10, p-value = 0.8122
El valor p es 0.6949, que es considerablemente mayor a 0.05. Este valor alto implica que no hay suficiente evidencia para rechazar la hipótesis nula, la cual asume que los residuales son independientes en los primeros 13 rezagos.
Box.test(residuals(Arima3),lag=13,type="Ljung" )
##
## Box-Ljung test
##
## data: residuals(Arima3)
## X-squared = 9.9885, df = 13, p-value = 0.6949
El valor p es 0.2881, que es superior al nivel de significancia común de 0.05. Este valor indica que no hay suficiente evidencia para rechazar la hipótesis nula, que plantea que los residuales son independientes en los primeros 30 rezagos.
Box.test(residuals(Arima3),lag=30,type="Ljung" )
##
## Box-Ljung test
##
## data: residuals(Arima3)
## X-squared = 33.819, df = 30, p-value = 0.2881
En el grafico se observan tres secciones: residuales estandarizados, ACF de los residuales, y valores p de la prueba de Ljung-Box para varios rezagos. Cada sección permite verificar si el modelo ha capturado adecuadamente la estructura de la serie y si los residuales se comportan como ruido blanco.
La primera sección muestra los residuales estandarizados a lo largo del tiempo. Estos se distribuyen alrededor de cero sin mostrar patrones visibles, lo que sugiere que el modelo ha capturado adecuadamente la estructura de la serie.
La segunda sección presenta la Función de Autocorrelación (ACF) de los residuales. La mayoría de los valores de autocorrelación están dentro de las bandas de confianza, lo que indica que no hay autocorrelación significativa en los residuales. Esto respalda la suposición de que los residuales se comportan como ruido blanco y que el modelo ha capturado bien las dependencias temporales de la serie.
Finalmente en la tercera se muestran los valores p de la prueba Ljung-Box para varios rezagos. Los valores p se mantienen por encima del nivel de significancia común de 0.05 en la mayoría de los rezagos, lo cual sugiere que no hay autocorrelación significativa en los residuales. Esto confirma que los residuales son independientes en los diferentes rezagos.
tsdiag(Arima3,gof.lag=40)
El gráfico Q-Q (cuantil-cuantil) muestra los residuales estandarizados del modelo Arima3 comparados con una distribución normal teórica. La mayoría de los puntos siguen de cerca la línea de referencia, lo que indica que los residuales son aproximadamente normales. Sin embargo, en los extremos (colas), algunos puntos se desvían de la línea, lo que sugiere ligeras desviaciones de normalidad en los residuales extremos. En general, este comportamiento es común en series de tiempo y no necesariamente indica un problema grave. La cercanía de la mayoría de los puntos a la línea sugiere que el supuesto de normalidad es razonablemente válido para los residuales de este modelo, lo cual respalda la idoneidad del modelo para predicciones y análisis.
qqnorm(rstandard(Arima3))
qqline(rstandard(Arima3))
Con no otra finalidad que confirmar lo visto en la grafica anterior se realizo la prueba de normalidad de Shapiro-Wilk aplicada a los residuales estandarizados del modelo Arima3. La prueba de Shapiro-Wilk evalúa si los datos provienen de una distribución normal.
El valor p es 0.06418, que es mayor al nivel de significancia común de 0.05. Esto significa que no hay suficiente evidencia para rechazar la hipótesis nula, que afirma que los residuales siguen una distribución normal.La normalidad no se rechaza, lo cual es consistente con el análisis visual del gráfico Q-Q anterior. La aproximación a la normalidad en los residuales indica que el modelo es adecuado y cumple con uno de los supuestos clave para el análisis y predicción en series de tiempo.
shapiro.test(rstandard(Arima3))
##
## Shapiro-Wilk normality test
##
## data: rstandard(Arima3)
## W = 0.96275, p-value = 0.06418
El histograma de los residuales estandarizados del modelo Arima3 muestra una distribución aproximadamente simétrica alrededor de cero, con una forma que se asemeja a una distribución normal. La mayor parte de los valores se concentran cerca del centro (entre -1 y 1), y las frecuencias disminuyen en ambos extremos. Aunque no es una distribución perfectamente normal, esta forma general es consistente con los supuestos de normalidad, lo cual respalda la idoneidad del modelo. En conjunto con los resultados de la prueba de Shapiro-Wilk y el gráfico Q-Q, este histograma sugiere que los residuales siguen aproximadamente una distribución normal, validando el uso del modelo para análisis y predicción.
hist(rstandard(Arima3))
La línea azul punteada representa el ajuste del modelo Arima3 a los datos históricos de la serie de tiempo, que van desde 2002 hasta aproximadamente 2006. Esta línea sigue bien las fluctuaciones estacionales y la tendencia general de la serie, lo cual indica un buen ajuste.
La línea roja muestra el pronóstico para los 12 meses siguientes, a partir de octubre de 2006. El pronóstico sigue la tendencia de la serie y refleja patrones estacionales similares a los observados en los datos históricos.La sombra gris alrededor de la línea de pronóstico representa el intervalo de confianza del 95%, lo que indica el rango en el que se espera que los valores reales caigan con un 95% de probabilidad. Este intervalo se amplía conforme avanzan los periodos, reflejando una mayor incertidumbre en las predicciones a medida que se alejan de los datos históricos.
Pronostico <- Arima3 %>% forecast(h=12)
p31<-forecast(Arima3, level = c(95), h = 8)
start_date_ajuste <- as.Date("2002-01-01") # Cambia esta fecha de inicio si es necesario
start_date_pronostico <- as.Date("2006-10-01") # Cambia esta fecha de inicio si es necesario
# Crear secuencias de fechas para los datos
fechas_ajuste <- seq.Date(start_date_ajuste, by = "month", length.out = length(fitted(Arima3)))
fechas_pronostico <- seq.Date(start_date_pronostico, by = "month", length.out = length(p31$mean))
# Convertir el pronóstico y el ajuste a data frames con fechas
pronostico_df <- data.frame(
Fecha = fechas_pronostico,
Pronostico = as.numeric(p31$mean),
Lower = as.numeric(p31$lower[,1]),
Upper = as.numeric(p31$upper[,1])
)
ajuste_df <- data.frame(
Fecha = fechas_ajuste,
Ajuste = as.numeric(fitted(Arima3))
)
# Graficar utilizando ggplot2 con data frames
ggplot() +
geom_line(data = ajuste_df, aes(x = Fecha, y = Ajuste), color = "blue", size = 1, linetype = "dashed") +
geom_line(data = pronostico_df, aes(x = Fecha, y = Pronostico), color = "red", size = 1) +
geom_ribbon(data = pronostico_df, aes(x = Fecha, ymin = Lower, ymax = Upper), fill = "gray", alpha = 0.3) +
labs(title = "Pronóstico con Ajuste",
x = "Fecha",
y = "Ingresos") +
theme_minimal()
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
final<-forecast(Arima3, h=40)
plot(final,col = "black")
lines( Hawaii, col="red")
legend("topleft",legend = c("test","pronostico"), col=c("red","blue"),lty=1)
El modelo Arima3 fue efectivo para capturar la tendencia y estacionalidad de la serie de tiempo “Hawaii”. Las pruebas realizadas, incluidas la ACF y PACF de los residuales, el gráfico Q-Q, el histograma, y las pruebas de Ljung-Box y Shapiro-Wilk, muestran que los residuales se comportan como ruido blanco y son aproximadamente normales, sin patrones remanentes. Esto indica que el modelo es adecuado y cumple con los supuestos necesarios para realizar predicciones confiables. Frente al pronóstico generado para los siguientes 12 periodos se muestra una tendencia que sigue el comportamiento estacional y general en la serie. El intervalo de confianza alrededor del pronóstico refleja adecuadamente la incertidumbre, ampliándose en los periodos más lejanos. Esto proporciona una herramienta útil para anticipar el comportamiento futuro de la serie y tomar decisiones informadas basadas en los valores esperados. La validación de los residuales mediante diversas pruebas confirma que el modelo ha capturado bien la dinámica de la serie. Los residuales son independientes, aproximadamente normales y con varianza constante, lo cual asegura que no quedan estructuras no modeladas y que el modelo representa bien la serie subyacente.