Teoria

2.1 Autocorrelación

En sus palabras responda:

¿Qué es la función de autocorrelación?

Función que nos permite encontrar patrones repetitivo en una serie de tiempo.

¿CuÔl es la diferencia entre la función de autocorrelación y la función de autocorrelación parcial?

La diferencia entre PACF y ACF es la inclusión o exclusión the las correlaciones indirectas en el cÔlculo (ACF incluye todo).

¿Para qué se utilizan estas funciones?

para encontrar d y q para el modelado de las arimas. Se usa ACF para la cantidad de diferenciaciones (d) y PACF se usa para encontrar la cantidad the errores de rezago del pronóstico para la ecuación.

¿Conoce pruebas estadísticas que puedan ayudar a validar o complementar el anÔlisis realizado con estas funciones?

Pruebas de Breusch y Godfrey, Durbin-Watson & Box y Pearce.

2.2 Descomposición

Explique lo que es la descomposición de una serie de tiempo y los distintos componentes que puede llegar a tener.

La descomposición consiste en separar la serie de tiempo por sus componentes. Los componentes son: Tendencia, estacionalidad y Residuos.

¿En qué casos cree usted que sea útil realizar un pronóstico a partir de una descomposición?

Cuando estas estƔn presentes, ya que cuando estƔn, se puede pronosticar a travƩs de Ʃstas.

En general cuando se desean producir pronósticos, ¿cuÔndo cree usted que debería trabajar sobre datos desestacionalizados y cuÔndo con la serie original? ¿Qué diferencias prÔcticas o en la interpretación de los resultados pudiera llegar a observar al hacerlo de una u otra forma?

Cuando quieres ver el cambio real entre los datos de un periodo y otro, ya que estacionalidad es un factor exógeno.

Algunos tipos de descomposición, como la STL, permiten realizar ajustes al comportamiento de cada componente. ¿En qué se debería fijar para decidir los valores de los parÔmetros?

Según el modelo a utlizar (aditivo o multiplicativo) ya que según ésto y la influencia por si sola de cada componente, es que decidimos los parÔmetros.

2.3 Residuos

¿CuÔl es la afectación en un modelo o sus pronósticos, cuando los residuos no se distribuyen de manera normal?

Si hay relación ente los residuos, significa que aun se puede ajustar mÔs el modelo, ya que parte de esos residuos aun pueden explicar el modelo.

Si los residuos parecen estar autocorrelacionados, ¿qué alternativas tiene para intentar mejorar el modelo? Describa lo que podría intentar con cada uno de los modelos que conoce para pronóstico (si haría lo mismo para mÔs de uno, lo puede indicar así).

Cualquier modelo autoregresivo, modelar los residuos e integrar esta información al pronsotico final que se quiere obtener.

2.4 Modelos

Se ha discutido que usualmente el mejor modelo para activos financieros (índices, acciones, divisas, commodities, etc.) es el modelo Naïve. ¿Por qué es esto así?, ¿qué se debe cumplir para que sea verdad esto?, describa el proceso que deberían seguir esas series.

Dado que el modelo naive utliza el último dato de la serie de tiempo como pronóstico, este es que se debe acercar mÔs al siguiente dato (que desconocemos), ya que los activos finaicieros se comportan como caminantes aleatorias y no tienen muchas características que nos ayuden a generar predicciones acertadas con base a la información histórica.

¿En qué casos pudiera hacer mÔs sentido pronosticar una serie a partir del método de la media?, ¿lo utilizarían ustedes en la prÔctica?

Cuando la estacionalidad u oscilaciones entre lƭmites superiores e inferiores en la seria de tiempo tienden a ser inexiostentes, ya que la serie asƭ es mƔs constante, por lo tanto se apega mƔs a un calculo de la media. Tambƭen ayuda si la tendencia es mƭnima, independietemente si es alsista o bajista.

Hay muchas personas que afirman que los modelos ARIMA son mÔs generales que los de suavización exponencial. ¿Existen modelos de suavización exponencial que se puedan expresar como ARIMA? En caso afirmativo, ¿todos los modelos ETS se podrían expresar como modelos ARIMA?

Si, hay algunos casos, pero no todos, depende de como se configuren.

2.5 Bondad de ajuste, precisión de los pronósticos

¿CuÔles métricas de bondad de ajuste conoce?

Criterio de Información de Akaike, MÔxima verosimilitud, coeficiente de correlación de Pearson (JI).

¿CuÔndo se pueden utilizar los criterios de información para comparar entre modelos y por qué no se puede en todos los casos?

Cuando ambos datos a comparar no hayan sufrido alguna transformación.

Brevemente enliste posibles ventajas/desventajas de las mƩtricas de error RMSE, MAE, MAPE, MASE.

-RMSE

Ventajas: Medida de incertidumbre en el cÔlculo de los pronósticos.

Desventajas: Influenciada por valores extremos/atĆ­picos.

-MAE

Ventajas: No es influenciada por valores atĆ­picos.

Desventajas: Es una medida absoluta.

-MAPE

Ventajas: Manera intuitiva y fƔcil de juzgar el alcance de los errores del modelo.

Desventajas: Puede ser influenicsdo por valores atĆ­picos.

-MASE

Ventajas: Resiliencia a valores extremos, no hay forma de que haya división por cero (salvo que todos lo valores sean el mismo) y sus valores tienen una interpretación intuitiva.

Desventajas: Difƭcil medirlo ante otros tipos de errores/mƩtricas.

Si estuviera ante un caso en el cual la bondad de ajuste, las métricas de error del pronóstico de un proceso de back-testing apuntaran a distintos modelos, ¿qué haría para decidir cuÔl modelo utilizar?

Utilizaría una permutación de combinaciones, probaría los datos y utlizaría el modelo con el menor error.

## Warning: package 'tidyr' was built under R version 4.1.3
## Warning: package 'dplyr' was built under R version 4.1.3
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
## Warning: package 'tidyverse' was built under R version 4.1.3
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5     v purrr   0.3.4
## v tibble  3.1.6     v stringr 1.4.0
## v readr   2.1.2     v forcats 0.5.1
## Warning: package 'readr' was built under R version 4.1.3
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag()    masks stats::lag()
## Warning: package 'easypackages' was built under R version 4.1.3
## 
## Attaching package: 'lubridate'
## The following objects are masked from 'package:base':
## 
##     date, intersect, setdiff, union
## Warning: package 'gapminder' was built under R version 4.1.3
## Warning: package 'fpp3' was built under R version 4.1.3
## -- Attaching packages -------------------------------------------- fpp3 0.4.0 --
## v tsibble     1.1.1     v feasts      0.2.2
## v tsibbledata 0.4.0     v fable       0.3.1
## Warning: package 'tsibble' was built under R version 4.1.3
## Warning: package 'tsibbledata' was built under R version 4.1.3
## Warning: package 'feasts' was built under R version 4.1.3
## Warning: package 'fabletools' was built under R version 4.1.3
## Warning: package 'fable' was built under R version 4.1.3
## -- Conflicts ------------------------------------------------- fpp3_conflicts --
## x lubridate::date()    masks base::date()
## x dplyr::filter()      masks stats::filter()
## x tsibble::intersect() masks base::intersect()
## x tsibble::interval()  masks lubridate::interval()
## x dplyr::lag()         masks stats::lag()
## x tsibble::setdiff()   masks base::setdiff()
## x tsibble::union()     masks base::union()
## 
## Attaching package: 'plotly'
## The following object is masked from 'package:ggplot2':
## 
##     last_plot
## The following object is masked from 'package:stats':
## 
##     filter
## The following object is masked from 'package:graphics':
## 
##     layout
## Warning: package 'anomalize' was built under R version 4.1.3
## == Use anomalize to improve your Forecasts by 50%! =============================
## Business Science offers a 1-hour course - Lab #18: Time Series Anomaly Detection!
## </> Learn more at: https://university.business-science.io/p/learning-labs-pro </>
## Warning: package 'seasonal' was built under R version 4.1.3
## 
## Attaching package: 'seasonal'
## The following object is masked from 'package:tibble':
## 
##     view
## Loading required package: xts
## Warning: package 'xts' was built under R version 4.1.3
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following object is masked from 'package:tsibble':
## 
##     index
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## 
## Attaching package: 'xts'
## The following objects are masked from 'package:dplyr':
## 
##     first, last
## Loading required package: TTR
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## Warning: package 'fpp2' was built under R version 4.1.3
## -- Attaching packages ---------------------------------------------- fpp2 2.4 --
## v forecast  8.16     v expsmooth 2.3 
## v fma       2.4
## Warning: package 'fma' was built under R version 4.1.3
## Warning: package 'expsmooth' was built under R version 4.1.3
## 
## 
## Attaching package: 'fpp2'
## The following object is masked from 'package:fpp3':
## 
##     insurance
## Loading required package: PerformanceAnalytics
## 
## Attaching package: 'PerformanceAnalytics'
## The following object is masked from 'package:fpp3':
## 
##     prices
## The following object is masked from 'package:graphics':
## 
##     legend
## == Need to Learn tidyquant? ====================================================
## Business Science offers a 1-hour course - Learning Lab #9: Performance Analysis & Portfolio Optimization with tidyquant!
## </> Learn more at: https://university.business-science.io/p/learning-labs-pro </>
## 
## Attaching package: 'tidyquant'
## The following object is masked from 'package:fable':
## 
##     VAR

Intención:

por el tipo de serie que se va a analizar, se cree que a través de un arima, se conseguirÔ el mejor resultado. De igual manera se harÔ un anÔlisis con otros modelos con la intención de que se encuentra el modleo optimo tomando encuanta la simplicidad de este, solo por debajo del resultado.

Descarga de Datos:

## # A tibble: 146 x 3
##    symbol          date             price
##    <chr>           <date>           <dbl>
##  1 XTEXVA01MXM667N 2010-01-01 19189889000
##  2 XTEXVA01MXM667N 2010-02-01 21302600000
##  3 XTEXVA01MXM667N 2010-03-01 26104127000
##  4 XTEXVA01MXM667N 2010-04-01 24844517000
##  5 XTEXVA01MXM667N 2010-05-01 24796461000
##  6 XTEXVA01MXM667N 2010-06-01 25000453000
##  7 XTEXVA01MXM667N 2010-07-01 23334155000
##  8 XTEXVA01MXM667N 2010-08-01 26917226000
##  9 XTEXVA01MXM667N 2010-09-01 25338436000
## 10 XTEXVA01MXM667N 2010-10-01 26530071000
## # ... with 136 more rows

GrƔfica de la serie de tiempo:

Como podemos observar, debido a la pandemia, se generan unos datos que discrepan con la aparente tendencia alcista de la serie. A estos datos de la serie, se les va a dar un trato como valores atĆ­picos.

Trato de atĆ­picos

## $index
## [1] 124 125 145
## 
## $replacements
## [1] 36556085000 34801914000 46969420500
## Don't know how to automatically pick scale for object of type ts. Defaulting to continuous.

Como podemos observar, los valores que estaban empezando 2020 se suavisaron.

AnƔlisis de la serie de tiempo:

Descomposición

Podemos ver una clara estacionalidad y una tendencia alsista con algunas bajas.

Heteroscedasticidad

Autocorrelación y Autocorrelación Parcial

En la Autocorrelación podemos observar una correlación muy significativa con los rezagos, aunque va decresiendo poco a poco y en la autocorrelación parcial, el rezago significativo mÔs lejano es el doceavo (lógico al ser una seria mensual).

#Generación y Comparación de los modelos

## Warning: `yearmonth()` may yield unexpected results.
## i Please use arg `format` to supply formats.

En el grƔfico, el modelo que parece acomodarse mejor es el seasonal naive, aunque el del menor MAPE (7.21%) es el naive.

## Warning: The future dataset is incomplete, incomplete out-of-sample data will be treated as missing. 
## 1 observation is missing at 2022 Mar
## # A tibble: 4 x 10
##   .model         .type         ME   RMSE    MAE     MPE  MAPE  MASE RMSSE   ACF1
##   <chr>          <chr>      <dbl>  <dbl>  <dbl>   <dbl> <dbl> <dbl> <dbl>  <dbl>
## 1 Drift          Test     -1.12e8 2.95e9 2.40e9 -0.785   7.26 0.948 0.892 -0.375
## 2 Mean           Test      4.25e9 5.39e9 4.50e9 11.5    12.4  1.77  1.63   0.581
## 3 NAIVE          Test      1.45e8 2.93e9 2.40e9  0.0146  7.21 0.945 0.884 -0.378
## 4 Seasonal_Naive Test      1.64e9 3.31e9 2.54e9  4.52    7.26 1     1      0.661
## # A fable: 36 x 3 [1M]
##       index               value       .mean
##       <mth>              <dist>       <dbl>
##  1 2022 Mar N(4.6e+10, 8.4e+18) 46246038000
##  2 2022 Apr N(4.6e+10, 1.7e+19) 46246038000
##  3 2022 May N(4.6e+10, 2.5e+19) 46246038000
##  4 2022 Jun N(4.6e+10, 3.3e+19) 46246038000
##  5 2022 Jul N(4.6e+10, 4.2e+19) 46246038000
##  6 2022 Aug   N(4.6e+10, 5e+19) 46246038000
##  7 2022 Sep N(4.6e+10, 5.9e+19) 46246038000
##  8 2022 Oct N(4.6e+10, 6.7e+19) 46246038000
##  9 2022 Nov N(4.6e+10, 7.5e+19) 46246038000
## 10 2022 Dec N(4.6e+10, 8.4e+19) 46246038000
## # ... with 26 more rows
## Warning: `yearmonth()` may yield unexpected results.
## i Please use arg `format` to supply formats.

## # A tibble: 4 x 9
##   .model           sigma2 log_lik   AIC  AICc   BIC     MSE    AMSE     MAE
##   <chr>             <dbl>   <dbl> <dbl> <dbl> <dbl>   <dbl>   <dbl>   <dbl>
## 1 Auto           2.47e- 3  -3453. 6942. 6947. 6996. 2.55e18 3.12e18 3.65e-2
## 2 SES            6.53e+18  -3525. 7057. 7057. 7066. 6.44e18 7.28e18 1.94e+9
## 3 additive       2.90e+18  -3459. 6951. 6956. 7002. 2.58e18 3.14e18 1.25e+9
## 4 multiplicative 3.01e- 3  -3468. 6970. 6975. 7021. 3.11e18 3.67e18 3.94e-2

En las comparativas de los siguientes modelos, el Auto tiene el menor MSE, siendo el mejor modelo.

## Warning: `yearmonth()` may yield unexpected results.
## i Please use arg `format` to supply formats.

En los modelos de Holt, por mucho el mejor fue Holt Winter, con un MSE de 2.66e18.

## # A tibble: 3 x 9
##   .model         sigma2 log_lik   AIC  AICc   BIC     MSE    AMSE     MAE
##   <chr>           <dbl>   <dbl> <dbl> <dbl> <dbl>   <dbl>   <dbl>   <dbl>
## 1 Holt         6.50e+18  -3524. 7058. 7058. 7073. 6.32e18 7.08e18 1.94e+9
## 2 Damped_Holt  6.38e+18  -3522. 7056. 7057. 7074. 6.16e18 6.89e18 1.89e+9
## 3 Holt_Winters 2.50e- 3  -3454. 6944. 6949. 6998. 2.66e18 3.22e18 3.78e-2
## Warning: `yearmonth()` may yield unexpected results.
## i Please use arg `format` to supply formats.

Para el modelo arima, no se seƱala medidas de error, pero si de Akaike y Akaike corregido. Dado que hasta ahorita, en la mdida MSE, el mejor modelo era HW, pero en las de AIC y AICc no supera al ARIMA, podemos decir que es el ARIMA el mejor modelo dentro de los evaluados, para pronosticar a futuro la serie.

## Series: value 
## Model: ARIMA(1,0,4)(1,1,0)[12] 
## 
## Coefficients:
##          ar1      ma1     ma2     ma3      ma4     sar1
##       0.9811  -0.5323  0.2917  0.1187  -0.3425  -0.3198
## s.e.  0.0234   0.0918  0.1091  0.1209   0.0878   0.1040
## 
## sigma^2 estimated as 3.193e+18:  log likelihood=-3043.68
## AIC=6101.35   AICc=6102.24   BIC=6121.64
## # A fable: 36 x 3 [1M]
##       index               value        .mean
##       <mth>              <dist>        <dbl>
##  1 2022 Mar N(5.2e+10, 3.2e+18) 52230232988.
##  2 2022 Apr   N(5e+10, 3.8e+18) 49876919974.
##  3 2022 May N(4.6e+10, 5.5e+18) 46476652951.
##  4 2022 Jun N(4.8e+10, 7.8e+18) 47548660055.
##  5 2022 Jul N(4.7e+10, 8.5e+18) 46969093066.
##  6 2022 Aug N(4.7e+10, 9.2e+18) 46911188656.
##  7 2022 Sep N(4.8e+10, 9.9e+18) 48188095829.
##  8 2022 Oct N(4.9e+10, 1.1e+19) 49325499999.
##  9 2022 Nov   N(5e+10, 1.1e+19) 50468995199.
## 10 2022 Dec N(5.3e+10, 1.2e+19) 53304285105.
## # ... with 26 more rows