Advertisement
kukis03

Untitled

Jan 16th, 2025
10
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.27 KB | None | 0 0
  1. ---
  2. title: "Lección práctica"
  3. author: "Jorge Moreno"
  4. date: "2025-01-16"
  5. output: pdf_document
  6. ---
  7.  
  8. ```{r setup, include=FALSE}
  9. knitr::opts_chunk$set(echo = TRUE)
  10. ```
  11.  
  12. # Descripción de los datos
  13.  
  14. Son datos de la cantidad de millas viajadas por aerolíneas comerciales en los Estados Unidos por cada año desde 1937 a 1960.
  15.  
  16. ```{r}
  17. library(forecast)
  18. library(tseries)
  19. library(astsa)
  20. library(nortest)
  21.  
  22. air=datasets::airmiles
  23. air
  24. ```
  25. Hay un total de 24 datos en la serie de tiempo.
  26.  
  27. ```{r}
  28. airts=ts(air,start=1937,end=1960)
  29. ```
  30.  
  31.  
  32. # Análisis de la serie de datos
  33.  
  34. ```{r}
  35. plot(airts)
  36. ```
  37.  
  38. Puede verse que se trata con una serie con una clara tendencia creciente. Parece haber una varianza constante a lo largo de ella, no hay indicios de estacionalidad, no hay un aparente nivel estacionario. La serie no parece presentar explosividad.
  39.  
  40. Haciendo tests formales:
  41.  
  42. ```{r}
  43. adf=adf.test(airts)
  44. adf$p.value
  45. ```
  46.  
  47. No se puede que rechazar que la serie no es estacionaria.
  48.  
  49. ```{r}
  50. adf=adf.test(airts,alternative = "explosive")
  51. adf$p.value
  52. ```
  53. No se puede rechazar que la serie no sea explosiva.
  54.  
  55. ```{r}
  56. kpss=kpss.test(airts,null="Level")
  57. kpss$p.value
  58. ```
  59. Se rechaza que haya nivel estacionario.
  60.  
  61. ```{r}
  62. kpss=kpss.test(airts,null="Trend")
  63. kpss$p.value
  64. ```
  65. Se rechaza que haya tendencia estacionaria.
  66.  
  67. ```{r}
  68. pp.test(airts)
  69. ```
  70. No se rechaza que la serie no sea estacionaria.
  71.  
  72. # Ajuste de un modelo de series de tiempo
  73.  
  74. Debido a que la serie presenta tendencia, y no se evidencia que haya estacionalidad, se aplicará un modelo ARIMA, que busque mitigar el efecto que tenga la tendencia sobre los datos.
  75.  
  76. Consideraremos una diferenciación inicial de $d=1$ y se verificará si los problemas persisten.
  77.  
  78. ```{r}
  79. dairts=diff(airts,difference=1)
  80. plot(dairts,main="Diferenciación d=1")
  81. ```
  82.  
  83. El problema de la tendencia para persistir ligeramente. Usaremos $d=2$:
  84.  
  85. ```{r}
  86. dairts=diff(airts,difference=2)
  87. plot(dairts,main="Diferenciación d=2")
  88. ```
  89.  
  90. La tendencia ha sido completamente corregida. Parece haber un poco de explosividad, y ahora parece tener un nivel estacionario.
  91.  
  92. ```{r}
  93. adf=adf.test(dairts)
  94. adf
  95. ```
  96. Se rechaza que no haya nivel estacionario.
  97.  
  98. ```{r}
  99. adf.test(dairts,alternative = "explosive")
  100. ```
  101. No se puede rechazar que la serie no sea explosiva.
  102.  
  103. ```{r}
  104. kpss=kpss.test(dairts,null="Trend")
  105. kpss$p.value
  106. ```
  107.  
  108. No se rechaza que haya tendencia estacionaria.
  109.  
  110. ```{r}
  111. kpss=kpss.test(dairts,null="Level")
  112. kpss
  113. ```
  114. No se rechaza que haya nivel estacionario.
  115.  
  116. ```{r}
  117. pp.test(dairts)
  118. ```
  119. Se rechaza que no sea estacionaria.
  120.  
  121. Con las pruebas formales, los problemas parecen haber mejorado. Continuaremos definiendo los parámetros $p$ y $q$ del modelo.
  122.  
  123. ```{r}
  124. par(mfrow=c(2,1))
  125. acf(diff(airts,difference=2),lag=20)
  126. pacf(diff(airts,difference=2),lag=20)
  127. ```
  128.  
  129. Con base en los gráficos, un $p=0$ y $q=1$ parece ser un buen punto inicial.
  130.  
  131. ```{r}
  132. auto.arima(airts)
  133. ```
  134.  
  135. Nuestra propuesta inicial coincide con la de autoarima.
  136.  
  137. ```{r}
  138. mod=arima(airts,order=c(0,2,1),method="ML")
  139. summary(mod)
  140. BIC(mod)
  141. tsdiag(mod)
  142. ```
  143.  
  144. Según los gráficos de diagnósticos, los residuos tienen ocasionalmente algunos errores bastante grandes. El gráfico para los valores p del estadístico de Ljung-Box son un poco bajos al inicio, pero parecen mejorar con el tiempo. Aun así, no decaen del umbral del 0.05.
  145.  
  146. ```{r}
  147. shapiro.test(mod$residuals)
  148. ```
  149.  
  150. Según el test de Shapiro-Wilk, no s epuede rechazar la normalidad.
  151.  
  152. ```{r}
  153. par(mfrow=c(1,1))
  154. qqnorm(mod$residuals)
  155. qqline(mod$residuals,distribution=qnorm,probs = c(0.25, 0.75), col = 2)
  156. ```
  157.  
  158. Vemos que hay ciertas colas pesadas en los residuos, sin embargo, no se desvía mucho de la distribución normal.
  159.  
  160. ```{r}
  161. Box.test(mod$residuals,lag=9,type="Box-Pierce",fitdf=1)
  162. Box.test(mod$residuals,lag=9,type="Ljung-Box",fitdf=1)
  163. ```
  164.  
  165. Las pruebas de independencia no rechazan que los errores sean independientes.
  166.  
  167. ```{r}
  168. plot(forecast(mod,6))
  169. ```
  170.  
  171. ```{r}
  172. plot(forecast(mod,10),xlab="Time",ylab="Miles",main="Passenger miles")
  173. lines(fitted(mod),col="red")
  174. legend("topleft",legend=c("Miles","ARIMA(0,2,1)","Forecast"),bty="n",col=c("black","red","blue"),lty=c(1,1))
  175. ```
  176.  
  177. # Propuesta de solución
  178.  
  179. En general, los pronósticos se ajustan a lo que se esperaba del modelo dada la tendencia que presentaban. No se presentan cambios notorios, aunque están en concordancia con la serie presentada, tomando en cuenta que no tenía un gran cantidad de cambios tampoco.
  180.  
  181. La serie se ajusta bien a los datos ya existente, y logra replicar los cambios pequeños que tiene. Probando con distintos modelos, los pronósticos no mejoran de forma notable, permaneciendo en la misma tendencia sin presentar cambios. Por ello, para tener simplicidad en el modelo, se prefiere un ARIMA(0,2,1).
  182.  
  183. El modelo no presenta graves violaciones de los supuestos, cumpliendo todo lo requerido. Hay un par de aspectos que mencionar, como algunos valores inusualmente grandes de los errores, o algunas ligeras asperezas en los test gráficos de Ljung-Box.
  184.  
  185. Por ello, se considera que el modelo escogido es adecuado para los datos presentados, especialmente debido a la tendencia, que era la parte que más influía sobre los datos originales.
  186.  
  187. # Código en R
  188.  
  189. Presentado a lo largo del documento. Se adjunta una copia en:
  190.  
  191.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement