EXPLORACIÓN DE VARIABLES ECONÓMICAS

# Importar las seis bases de datos
CETES28 <- read.csv("CETES28.csv")
TipoCambio_FIX <- read.csv("TipoCambio_FIX.csv")
IPC_BMV <- read.csv("IPC_BMV.csv")
FEMSAUBD <- read.csv("FEMSAUBD.csv")
TSLA <- read.csv("TSLA.csv")
AMZN <- read.csv("AMZN.csv")

# Convertir la columna Fecha al formato de fecha de R
CETES28$Fecha <- as.Date(CETES28$Fecha)
TipoCambio_FIX$Fecha <- as.Date(TipoCambio_FIX$Fecha)
IPC_BMV$Fecha <- as.Date(IPC_BMV$Fecha)
FEMSAUBD$Fecha <- as.Date(FEMSAUBD$Fecha)
TSLA$Fecha <- as.Date(TSLA$Fecha)
AMZN$Fecha <- as.Date(AMZN$Fecha)
# Mostrar las seis gráficas juntas
par(mfrow=c(3,2))

plot(CETES28$Fecha, CETES28$CETES28_pct,
     type="l",
     main="CETES 28 días",
     xlab="Fecha",
     ylab="Tasa (%)")

plot(TipoCambio_FIX$Fecha, TipoCambio_FIX$TipoCambio_FIX_MXN_USD,
     type="l",
     main="Tipo de cambio FIX",
     xlab="Fecha",
     ylab="MXN por USD")

plot(IPC_BMV$Fecha, IPC_BMV$IPC_BMV_Cierre,
     type="l",
     main="IPC BMV",
     xlab="Fecha",
     ylab="Puntos")

plot(FEMSAUBD$Fecha, FEMSAUBD$Cierre_FEMSAUBD_MXN,
     type="l",
     main="FEMSA UBD",
     xlab="Fecha",
     ylab="MXN")

plot(TSLA$Fecha, TSLA$Cierre_TSLA_USD,
     type="l",
     main="Tesla",
     xlab="Fecha",
     ylab="USD")

plot(AMZN$Fecha, AMZN$Cierre_AMZN_USD,
     type="l",
     main="Amazon",
     xlab="Fecha",
     ylab="USD")

# Regresar R a una sola gráfica
par(mfrow=c(1,1))

Cetes y tipo de cambio fueron el veredicto

SERIES DE TIEMPO

# CETES 28 días: frecuencia semanal
CETES28.ts <- ts(CETES28$CETES28_pct,
                 start = c(2023, 1),
                 frequency = 52)

# Tipo de cambio FIX: frecuencia diaria indicada por el profesor
TipoCambio_FIX.ts <- ts(TipoCambio_FIX$TipoCambio_FIX_MXN_USD,
                        start = c(2023, 1),
                        frequency = 260)

# Revisar que los objetos se hayan creado correctamente
CETES28.ts
## Time Series:
## Start = c(2023, 1) 
## End = c(2026, 30) 
## Frequency = 52 
##   [1] 10.49 10.46 10.70 10.80 10.78 10.82 11.05 11.04 11.05 11.19 11.30 11.28
##  [13] 11.34 11.28 11.30 11.30 11.27 11.40 11.39 11.25 11.25 11.20 11.32 11.15
##  [25] 11.09 11.02 11.30 11.29 11.18 11.09 11.28 11.25 11.26 10.96 11.07 11.00
##  [37] 11.25 11.00 11.05 11.05 11.05 10.95 11.26 11.09 10.95 10.87 10.75 10.78
##  [49] 11.25 11.25 11.09 11.26 11.30 11.28 11.30 11.28 11.15 11.06 11.05 11.00
##  [61] 11.00 11.00 11.18 10.99 10.90 10.88 10.92 11.04 11.04 10.95 11.03 10.95
##  [73] 11.00 11.03 11.04 11.00 10.95 10.88 11.02 10.90 10.89 10.87 10.97 10.86
##  [85] 10.65 10.65 10.65 10.51 10.49 10.40 10.35 10.30 10.30 10.21 10.20 10.20
##  [97] 10.10 10.10 10.05  9.95  9.90  9.95  9.80  9.74 10.04  9.88  9.78  9.75
## [109]  9.87  9.65  9.35  9.37  9.44  9.15  9.14  9.10  9.02  8.80  8.80  9.00
## [121]  8.80  8.65  8.55  8.40  8.15  8.12  8.10  8.10  8.14  8.00  7.70  7.85
## [133]  7.65  7.65  7.48  7.50  7.38  7.40  7.27  7.35  7.35  7.25  7.20  7.19
## [145]  7.47  7.40  7.10  7.10  7.30  7.05  7.25  7.15  7.29  7.25  7.15  7.04
## [157]  7.07  7.07  6.99  7.00  6.95  6.90  6.88  6.84  6.83  6.81  6.81  6.81
## [169]  6.81  6.64  6.60  6.60  6.55  6.50  6.49  6.54  6.45  6.38  6.36  6.25
## [181]  6.28  6.28  6.30  6.29  6.20  6.18
TipoCambio_FIX.ts
## Time Series:
## Start = c(2023, 1) 
## End = c(2026, 114) 
## Frequency = 260 
##   [1] 19.4883 19.4220 19.3568 19.3672 19.1753 19.1648 19.1108 19.0260 18.8735
##  [10] 18.7922 18.7913 18.7493 18.7493 19.0327 18.9257 18.8267 18.8318 18.8200
##  [19] 18.8355 18.7872 18.7793 18.7937 18.7390 18.6232 18.8895 19.0517 18.9435
##  [28] 18.9543 18.6893 18.6327 18.5383 18.6428 18.5497 18.4142 18.3970 18.3938
##  [37] 18.3483 18.4107 18.4023 18.4077 18.3448 18.1700 18.1260 18.0123 18.0122
##  [46] 18.1155 17.9662 18.0577 18.4083 18.8302 18.6427 18.9972 18.9095 18.8977
##  [55] 18.6755 18.5437 18.4902 18.5178 18.3830 18.2523 18.1052 18.0932 18.0415
##  [64] 18.1070 18.1185 18.3323 18.1765 18.1870 18.0660 18.0152 18.0638 18.0868
##  [73] 18.0630 18.0448 18.0090 17.9988 18.0082 18.0892 18.1030 18.0723 17.9975
##  [82] 18.0325 17.9060 17.9575 17.7863 17.8213 17.7608 17.5845 17.6287 17.6142
##  [91] 17.5380 17.4672 17.5872 17.7342 17.6930 17.8680 17.9687 17.8195 17.8252
## [100] 17.6723 17.5605 17.6532 17.7418 17.5673 17.5063 17.4732 17.4192 17.3608
## [109] 17.4085 17.2840 17.3120 17.2185 17.1247 17.1762 17.0792 17.0945 17.2043
## [118] 17.1547 17.1713 17.1795 17.1445 17.1013 17.0720 17.1187 17.1358 17.0517
## [127] 17.0260 17.0040 17.2825 17.1012 17.0605 17.0783 16.8537 16.8905 16.7892
## [136] 16.7858 16.7480 16.7667 16.8460 16.9393 16.8367 16.9075 16.8825 16.7338
## [145] 16.6895 16.7303 16.8533 17.0193 17.2892 17.0555 17.0608 17.1122 17.0767
## [154] 16.9548 17.0045 17.0672 17.1388 17.0768 17.1225 17.0477 17.0202 16.9267
## [163] 16.8077 16.8090 16.7718 16.7432 16.8402 16.7477 16.9170 17.1113 17.1750
## [172] 17.3492 17.5805 17.5543 17.5767 17.3813 17.2553 17.1235 17.1042 17.0807
## [181] 17.1307 17.0805 17.0240 17.1675 17.1568 17.3733 17.4758 17.7287 17.6195
## [190] 17.4127 17.5920 17.9025 18.0170 18.2407 18.1837 18.3482 17.9917 17.8420
## [199] 17.9132 18.0362 17.9568 17.9097 18.2440 18.2873 18.2343 18.1218 18.2842
## [208] 18.3122 18.2178 18.0752 18.0640 18.0368 17.9305 17.4117 17.5308 17.5097
## [217] 17.5017 17.4888 17.7480 17.6138 17.3917 17.3387 17.2708 17.2175 17.2102
## [226] 17.2133 17.1787 17.1268 17.1555 17.1357 17.1870 17.3730 17.2143 17.4060
## [235] 17.4215 17.2685 17.4197 17.3688 17.4470 17.3980 17.2990 17.1908 17.2277
## [244] 17.0652 17.0673 17.0590 16.9738 16.9727 16.9220 16.8935 16.9190 17.0297
## [253] 17.0492 17.0458 16.8987 16.8133 16.9347 16.9912 16.9898 16.8580 16.8983
## [262] 17.1598 17.2957 17.1995 17.1325 17.1125 17.3520 17.1673 17.2375 17.1657
## [271] 17.2333 17.1932 17.1633 17.1335 17.1447 17.0357 17.0398 17.1023 17.0855
## [280] 17.0680 17.1982 17.1105 17.0680 17.0602 17.0500 17.0458 17.0603 17.1210
## [289] 17.1260 17.1260 17.0605 17.0962 17.0633 17.0217 16.9828 16.9257 16.8728
## [298] 16.8770 16.7985 16.8083 16.8272 16.7127 16.6920 16.7100 16.8523 16.7590
## [307] 16.7620 16.7367 16.7032 16.6780 16.5323 16.6578 16.5673 16.5415 16.5173
## [316] 16.4758 16.3357 16.3932 16.4883 16.4583 16.6693 16.6815 17.0252 16.9948
## [325] 17.1145 17.2120 17.1243 16.9995 17.1098 17.1883 17.1552 17.0243 17.0958
## [334] 16.9393 17.0042 16.8947 16.9083 16.9087 16.8660 16.7690 16.8072 16.8460
## [343] 16.6782 16.6893 16.6217 16.5668 16.6138 16.6405 16.6945 16.7023 16.6568
## [352] 16.7457 16.9500 16.9377 17.0177 17.6338 17.8607 17.5592 17.5335 18.2622
## [361] 18.3848 18.4457 18.7832 18.5385 18.4512 18.5248 18.4128 18.4230 18.4027
## [370] 18.1848 17.9627 18.1372 18.2215 18.3773 18.2478 18.3897 18.2485 18.1355
## [379] 18.0958 18.0977 18.0095 17.9428 17.8288 17.8192 17.6502 17.7837 17.6795
## [388] 17.7438 17.8907 17.9970 17.9107 18.0987 18.3458 18.3850 18.4475 18.6818
## [397] 18.7900 18.5970 18.7060 19.0442 19.3905 19.3300 19.1890 19.0900 18.8368
## [406] 19.0320 19.0387 18.8478 18.6513 18.6228 18.7357 18.9448 19.2535 19.4235
## [415] 19.0708 19.3820 19.6692 19.6037 19.8168 19.6535 19.7980 19.8335 19.8460
## [424] 20.0028 20.0172 19.8798 20.0583 19.8390 19.5887 19.2483 19.2670 19.3033
## [433] 19.2773 19.3725 19.4150 19.3562 19.5870 19.6290 19.6697 19.6440 19.3885
## [442] 19.4678 19.2127 19.3388 19.3532 19.4175 19.5113 19.3983 19.3420 19.6200
## [451] 19.8925 19.9313 19.8325 20.0075 19.8985 19.9338 19.8385 19.9303 20.0007
## [460] 20.0208 20.1617 20.0378 20.0908 20.0367 20.2695 20.3093 19.8277 20.1332
## [469] 20.4502 20.5693 20.6025 20.4940 20.3887 20.1848 20.2903 20.3775 20.4872
## [478] 20.2993 20.7185 20.6418 20.4173 20.3212 20.4357 20.3233 20.2830 20.1963
## [487] 20.2275 20.1547 20.2485 20.1647 20.1420 20.1448 20.2363 20.1395 20.4402
## [496] 20.1035 20.1948 20.1558 20.1657 20.2683 20.5103 20.7862 20.6917 20.6708
## [505] 20.3195 20.3440 20.3823 20.4742 20.7045 20.8012 20.4820 20.4875 20.7732
## [514] 20.7180 20.5430 20.6358 20.5397 20.3943 20.2255 20.7002 20.5668 20.5677
## [523] 20.4497 20.6068 20.4268 20.6363 20.5125 20.5512 20.6693 20.5680 20.4917
## [532] 20.4978 20.3082 20.2830 20.2617 20.4208 20.3733 20.3448 20.4640 20.4683
## [541] 20.4277 20.4722 20.5080 20.4333 20.8518 20.3893 20.2777 20.2830 20.2922
## [550] 20.3388 20.1828 20.0848 19.8693 19.9845 20.0553 20.1345 20.2163 20.1123
## [559] 20.0762 20.0963 20.3182 20.4003 20.4380 20.3587 20.4568 19.9708 20.5010
## [568] 20.6947 20.6867 20.7653 20.4920 20.3363 20.1025 20.0213 19.9737 19.6718
## [577] 19.5688 19.6278 19.5825 19.5478 19.5723 19.5868 19.6095 19.6570 19.6365
## [586] 19.6785 19.5880 19.5642 19.4912 19.6162 19.4373 19.3630 19.4780 19.5147
## [595] 19.3723 19.2648 19.3198 19.3227 19.2748 19.2188 19.2338 19.4000 19.3280
## [604] 19.3858 19.2338 19.2638 19.1932 19.1700 19.1317 19.0595 19.0518 18.8790
## [613] 18.9068 18.9302 18.9083 18.9872 19.0047 19.0898 19.1458 19.1527 19.0267
## [622] 18.9203 18.8928 18.8483 18.8332 18.7650 18.7540 18.6652 18.6327 18.6698
## [631] 18.7140 18.5733 18.6267 18.6595 18.7510 18.8397 18.7178 18.7685 18.7200
## [640] 18.6455 18.6212 18.5735 18.5538 18.5570 18.7267 18.7642 18.7960 18.7963
## [649] 18.9160 18.8783 18.7620 18.6192 18.6765 18.5518 18.6683 18.5657 18.6353
## [658] 18.8137 18.7295 18.7840 18.7982 18.7572 18.7737 18.5950 18.6368 18.6843
## [667] 18.6912 18.6522 18.6440 18.6460 18.7072 18.6873 18.7577 18.6792 18.6550
## [676] 18.6353 18.5920 18.5287 18.4757 18.3635 18.3257 18.3610 18.3892 18.4082
## [685] 18.3232 18.4312 18.4457 18.3825 18.3507 18.3342 18.3477 18.4843 18.3902
## [694] 18.3528 18.3762 18.3477 18.3830 18.5567 18.4400 18.5220 18.4808 18.4108
## [703] 18.4070 18.4032 18.4252 18.4333 18.4033 18.3948 18.3892 18.4145 18.4072
## [712] 18.5380 18.5725 18.4835 18.6133 18.5947 18.6233 18.5000 18.3922 18.3333
## [721] 18.2982 18.2805 18.3262 18.3728 18.3410 18.3550 18.4965 18.4997 18.4308
## [730] 18.3560 18.3467 18.3075 18.2757 18.2910 18.2642 18.2293 18.1860 18.2367
## [739] 18.1940 18.2085 18.0543 17.9925 17.9525 18.0200 17.9792 18.0065 17.9785
## [748] 17.9332 17.9248 17.9042 17.9667 17.9528 18.0012 17.8803 17.8905 17.9697
## [757] 17.9587 17.9807 17.9842 17.9075 17.8540 17.8167 17.6897 17.6867 17.5990
## [766] 17.6008 17.4520 17.4828 17.4545 17.2830 17.2357 17.2322 17.2532 17.3310
## [775] 17.2350 17.2925 17.4070 17.2988 17.1907 17.2315 17.2155 17.2000 17.1798
## [784] 17.1723 17.1753 17.1392 17.2700 17.1722 17.2162 17.1910 17.1700 17.2563
## [793] 17.2193 17.3485 17.7228 17.5445 17.6770 17.7962 17.7687 17.5037 17.6543
## [802] 17.8368 17.9218 17.6922 17.6690 17.8117 17.8998 17.7780 17.8047 17.7548
## [811] 17.7957 18.0667 18.1033 18.0033 17.8117 17.7932 17.7580 17.4157 17.3593
## [820] 17.3033 17.3470 17.2688 17.2623 17.2723 17.2447 17.3200 17.3323 17.3287
## [829] 17.3587 17.4052 17.3838 17.4030 17.4948 17.5118 17.5157 17.3752 17.2530
## [838] 17.2400 17.2105 17.1908 17.2520 17.1878 17.2130 17.3477 17.2928 17.3968
## [847] 17.2938 17.3305 17.3213 17.2720 17.3232 17.3793 17.3213 17.3505 17.3780
## [856] 17.2945 17.3328 17.2888 17.4755 17.4453 17.4312 17.3898 17.3833 17.2067
## [865] 17.2008 17.2023 17.1892 17.3688 17.3247 17.3480 17.5505 17.6213 17.5260
## [874] 17.4700 17.5053 17.4693 17.5368 17.4725 17.4758 17.4342 17.4958 17.5993
## [883] 17.5350 17.4842 17.5023 17.4278 17.3910 17.4418 17.5242 17.4315 17.3975
## [892] 17.3973 17.5130 17.4635
library(tseries)
## Warning: package 'tseries' was built under R version 4.5.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(forecast)
## Warning: package 'forecast' was built under R version 4.5.3
library(urca)
## Warning: package 'urca' was built under R version 4.5.3
# ==============================
# CETES 28 DÍAS - NIVEL
# ==============================

adf.test(CETES28.ts)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  CETES28.ts
## Dickey-Fuller = -2.7508, Lag order = 5, p-value = 0.2622
## alternative hypothesis: stationary
ndiffs(CETES28.ts)
## [1] 2
# ==============================
# TIPO DE CAMBIO FIX - NIVEL
# ==============================

adf.test(TipoCambio_FIX.ts)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  TipoCambio_FIX.ts
## Dickey-Fuller = -1.3817, Lag order = 9, p-value = 0.84
## alternative hypothesis: stationary
ndiffs(TipoCambio_FIX.ts)
## [1] 1
# ==============================
# PRIMERA DIFERENCIA - CETES
# ==============================

D_CETES28.ts <- diff(CETES28.ts)

adf.test(D_CETES28.ts)
## Warning in adf.test(D_CETES28.ts): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  D_CETES28.ts
## Dickey-Fuller = -4.9063, Lag order = 5, p-value = 0.01
## alternative hypothesis: stationary
# ==============================
# PRIMERA DIFERENCIA - TIPO DE CAMBIO FIX
# ==============================

D_TipoCambio_FIX.ts <- diff(TipoCambio_FIX.ts)

adf.test(D_TipoCambio_FIX.ts)
## Warning in adf.test(D_TipoCambio_FIX.ts): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  D_TipoCambio_FIX.ts
## Dickey-Fuller = -10.849, Lag order = 9, p-value = 0.01
## alternative hypothesis: stationary
# Máximo de rezagos
lag_CETES_nivel <- floor(12 * (length(CETES28.ts)/100)^(1/4))
lag_CETES_diff  <- floor(12 * (length(D_CETES28.ts)/100)^(1/4))

lag_TC_nivel <- floor(12 * (length(TipoCambio_FIX.ts)/100)^(1/4))
lag_TC_diff  <- floor(12 * (length(D_TipoCambio_FIX.ts)/100)^(1/4))

lag_CETES_nivel
## [1] 14
lag_CETES_diff
## [1] 13
lag_TC_nivel
## [1] 20
lag_TC_diff
## [1] 20
# ==============================
# ADF ESTRUCTURADA - CETES NIVEL
# ==============================

CETES28_ADF_nivel <- ur.df(
  CETES28.ts,
  type = "trend",
  lags = lag_CETES_nivel,
  selectlags = "AIC"
)

summary(CETES28_ADF_nivel)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.29617 -0.05893 -0.00814  0.05224  0.42899 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.3679706  0.2034625   1.809  0.07238 . 
## z.lag.1     -0.0293172  0.0157473  -1.862  0.06445 . 
## tt          -0.0013241  0.0005859  -2.260  0.02516 * 
## z.diff.lag1 -0.2299990  0.0770593  -2.985  0.00328 **
## z.diff.lag2 -0.2268248  0.0790344  -2.870  0.00465 **
## z.diff.lag3 -0.0905157  0.0796212  -1.137  0.25729   
## z.diff.lag4  0.1869289  0.0798368   2.341  0.02043 * 
## z.diff.lag5 -0.0515913  0.0789197  -0.654  0.51422   
## z.diff.lag6  0.1369991  0.0765774   1.789  0.07548 . 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1109 on 162 degrees of freedom
## Multiple R-squared:  0.1866, Adjusted R-squared:  0.1464 
## F-statistic: 4.644 on 8 and 162 DF,  p-value: 3.969e-05
## 
## 
## Value of test-statistic is: -1.8617 5.1505 2.9493 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47
# ==============================
# ADF ESTRUCTURADA - CETES 1a DIF.
# ==============================

CETES28_ADF_diff <- ur.df(
  D_CETES28.ts,
  type = "trend",
  lags = lag_CETES_diff,
  selectlags = "AIC"
)

summary(CETES28_ADF_diff)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.31767 -0.06139 -0.00743  0.04924  0.43995 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.0094239  0.0191731  -0.492   0.6237    
## z.lag.1     -1.2685899  0.2566966  -4.942  1.9e-06 ***
## tt          -0.0002895  0.0001870  -1.548   0.1236    
## z.diff.lag1  0.0308973  0.2325574   0.133   0.8945    
## z.diff.lag2 -0.1994096  0.2063466  -0.966   0.3353    
## z.diff.lag3 -0.2867445  0.1673116  -1.714   0.0885 .  
## z.diff.lag4 -0.0942568  0.1233851  -0.764   0.4460    
## z.diff.lag5 -0.1428233  0.0770901  -1.853   0.0657 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1117 on 163 degrees of freedom
## Multiple R-squared:  0.6553, Adjusted R-squared:  0.6405 
## F-statistic: 44.28 on 7 and 163 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -4.942 8.185 12.2684 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2  6.22  4.75  4.07
## phi3  8.43  6.49  5.47
# ==============================
# ADF ESTRUCTURADA - TC NIVEL
# ==============================

TipoCambio_ADF_nivel <- ur.df(
  TipoCambio_FIX.ts,
  type = "trend",
  lags = lag_TC_nivel,
  selectlags = "AIC"
)

summary(TipoCambio_ADF_nivel)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.53052 -0.06951 -0.01067  0.05932  0.67557 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  9.288e-02  6.918e-02   1.343 0.179785    
## z.lag.1     -5.234e-03  3.841e-03  -1.363 0.173344    
## tt           2.146e-06  1.730e-05   0.124 0.901319    
## z.diff.lag1 -3.532e-02  3.388e-02  -1.043 0.297445    
## z.diff.lag2 -2.772e-02  3.391e-02  -0.818 0.413816    
## z.diff.lag3  1.357e-02  3.391e-02   0.400 0.689233    
## z.diff.lag4  5.262e-02  3.391e-02   1.552 0.121100    
## z.diff.lag5 -3.272e-02  3.394e-02  -0.964 0.335286    
## z.diff.lag6  3.292e-03  3.392e-02   0.097 0.922707    
## z.diff.lag7  2.700e-02  3.391e-02   0.796 0.426178    
## z.diff.lag8 -1.663e-02  3.382e-02  -0.492 0.623001    
## z.diff.lag9 -1.122e-01  3.380e-02  -3.318 0.000943 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1264 on 861 degrees of freedom
## Multiple R-squared:  0.02423,    Adjusted R-squared:  0.01176 
## F-statistic: 1.943 on 11 and 861 DF,  p-value: 0.0311
## 
## 
## Value of test-statistic is: -1.3627 0.6791 0.9384 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.96 -3.41 -3.12
## phi2  6.09  4.68  4.03
## phi3  8.27  6.25  5.34
# ==============================
# ADF ESTRUCTURADA - TC 1a DIF.
# ==============================

TipoCambio_ADF_diff <- ur.df(
  D_TipoCambio_FIX.ts,
  type = "trend",
  lags = lag_TC_diff,
  selectlags = "AIC"
)

summary(TipoCambio_ADF_diff)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.53087 -0.07009 -0.01041  0.05710  0.68125 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -7.258e-04  8.875e-03  -0.082 0.934847    
## z.lag.1     -1.153e+00  1.051e-01 -10.969  < 2e-16 ***
## tt          -2.225e-06  1.703e-05  -0.131 0.896060    
## z.diff.lag1  1.145e-01  9.909e-02   1.155 0.248229    
## z.diff.lag2  8.415e-02  9.290e-02   0.906 0.365284    
## z.diff.lag3  9.497e-02  8.589e-02   1.106 0.269125    
## z.diff.lag4  1.449e-01  7.826e-02   1.852 0.064352 .  
## z.diff.lag5  1.095e-01  7.049e-02   1.554 0.120536    
## z.diff.lag6  1.103e-01  6.072e-02   1.816 0.069739 .  
## z.diff.lag7  1.347e-01  4.873e-02   2.764 0.005837 ** 
## z.diff.lag8  1.148e-01  3.378e-02   3.399 0.000708 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1265 on 861 degrees of freedom
## Multiple R-squared:  0.5287, Adjusted R-squared:  0.5232 
## F-statistic: 96.58 on 10 and 861 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -10.9688 40.1049 60.1571 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -3.96 -3.41 -3.12
## phi2  6.09  4.68  4.03
## phi3  8.27  6.25  5.34
# ======================================
# CETES - PRIMERA DIFERENCIA CON DRIFT
# ======================================

CETES28_ADF_diff_drift <- ur.df(
  D_CETES28.ts,
  type = "drift",
  lags = lag_CETES_diff,
  selectlags = "AIC"
)

summary(CETES28_ADF_diff_drift)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.31031 -0.05192 -0.00913  0.04687  0.43960 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.02956    0.01137  -2.600 0.010179 *  
## z.lag.1     -0.96216    0.26148  -3.680 0.000318 ***
## z.diff.lag1 -0.25909    0.24718  -1.048 0.296105    
## z.diff.lag2 -0.49519    0.23156  -2.138 0.033979 *  
## z.diff.lag3 -0.55191    0.21189  -2.605 0.010050 *  
## z.diff.lag4 -0.36478    0.19208  -1.899 0.059325 .  
## z.diff.lag5 -0.38161    0.15833  -2.410 0.017061 *  
## z.diff.lag6 -0.18621    0.11904  -1.564 0.119719    
## z.diff.lag7 -0.15112    0.07642  -1.977 0.049686 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1115 on 162 degrees of freedom
## Multiple R-squared:  0.6585, Adjusted R-squared:  0.6417 
## F-statistic: 39.05 on 8 and 162 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -3.6797 6.7954 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.46 -2.88 -2.57
## phi1  6.52  4.63  3.81
# ======================================
# TIPO DE CAMBIO - NIVEL CON DRIFT
# ======================================

TipoCambio_ADF_nivel_drift <- ur.df(
  TipoCambio_FIX.ts,
  type = "drift",
  lags = lag_TC_nivel,
  selectlags = "AIC"
)

summary(TipoCambio_ADF_nivel_drift)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.53104 -0.06968 -0.01063  0.05874  0.67548 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.092179   0.068913   1.338 0.181375    
## z.lag.1     -0.005142   0.003767  -1.365 0.172569    
## z.diff.lag1 -0.035384   0.033857  -1.045 0.296257    
## z.diff.lag2 -0.027789   0.033884  -0.820 0.412381    
## z.diff.lag3  0.013497   0.033888   0.398 0.690524    
## z.diff.lag4  0.052560   0.033891   1.551 0.121303    
## z.diff.lag5 -0.032782   0.033921  -0.966 0.334115    
## z.diff.lag6  0.003233   0.033901   0.095 0.924036    
## z.diff.lag7  0.026943   0.033891   0.795 0.426842    
## z.diff.lag8 -0.016703   0.033793  -0.494 0.621234    
## z.diff.lag9 -0.112219   0.033773  -3.323 0.000929 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1263 on 862 degrees of freedom
## Multiple R-squared:  0.02421,    Adjusted R-squared:  0.01289 
## F-statistic: 2.139 on 10 and 862 DF,  p-value: 0.01959
## 
## 
## Value of test-statistic is: -1.3651 1.012 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.43 -2.86 -2.57
## phi1  6.43  4.59  3.78
# ======================================
# TIPO DE CAMBIO - 1a DIF. CON DRIFT
# ======================================

TipoCambio_ADF_diff_drift <- ur.df(
  D_TipoCambio_FIX.ts,
  type = "drift",
  lags = lag_TC_diff,
  selectlags = "AIC"
)

summary(TipoCambio_ADF_diff_drift)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.53033 -0.07042 -0.01032  0.05671  0.68145 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -0.001741   0.004286  -0.406 0.684687    
## z.lag.1     -1.152409   0.105010 -10.974  < 2e-16 ***
## z.diff.lag1  0.114352   0.099024   1.155 0.248499    
## z.diff.lag2  0.084037   0.092843   0.905 0.365636    
## z.diff.lag3  0.094880   0.085834   1.105 0.269302    
## z.diff.lag4  0.144876   0.078214   1.852 0.064325 .  
## z.diff.lag5  0.109488   0.070449   1.554 0.120519    
## z.diff.lag6  0.110220   0.060686   1.816 0.069680 .  
## z.diff.lag7  0.134653   0.048703   2.765 0.005818 ** 
## z.diff.lag8  0.114786   0.033757   3.400 0.000704 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1265 on 862 degrees of freedom
## Multiple R-squared:  0.5287, Adjusted R-squared:  0.5238 
## F-statistic: 107.4 on 9 and 862 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -10.9743 60.2175 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.43 -2.86 -2.57
## phi1  6.43  4.59  3.78
ndiffs(CETES28.ts, test = "adf")
## [1] 1
ndiffs(CETES28.ts, test = "kpss")
## [1] 2
# ======================================
# TIPO DE CAMBIO - NIVEL SIN CONSTANTE
# ======================================

TipoCambio_ADF_nivel_none <- ur.df(
  TipoCambio_FIX.ts,
  type = "none",
  lags = lag_TC_nivel,
  selectlags = "AIC"
)

summary(TipoCambio_ADF_nivel_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.52995 -0.07002 -0.00988  0.05716  0.68167 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## z.lag.1     -0.0001134  0.0002340  -0.484 0.628210    
## z.diff.lag1 -0.0380643  0.0338127  -1.126 0.260590    
## z.diff.lag2 -0.0303729  0.0338445  -0.897 0.369743    
## z.diff.lag3  0.0109158  0.0338486   0.322 0.747161    
## z.diff.lag4  0.0499696  0.0338509   1.476 0.140264    
## z.diff.lag5 -0.0353701  0.0338815  -1.044 0.296808    
## z.diff.lag6  0.0005991  0.0338593   0.018 0.985888    
## z.diff.lag7  0.0242793  0.0338481   0.717 0.473381    
## z.diff.lag8 -0.0193803  0.0337488  -0.574 0.565948    
## z.diff.lag9 -0.1147457  0.0337358  -3.401 0.000701 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1264 on 863 degrees of freedom
## Multiple R-squared:  0.02232,    Adjusted R-squared:  0.01099 
## F-statistic:  1.97 on 10 and 863 DF,  p-value: 0.03358
## 
## 
## Value of test-statistic is: -0.4844 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62
# ======================================
# TIPO DE CAMBIO - 1a DIF. SIN CONSTANTE
# ======================================

TipoCambio_ADF_diff_none <- ur.df(
  D_TipoCambio_FIX.ts,
  type = "none",
  lags = lag_TC_diff,
  selectlags = "AIC"
)

summary(TipoCambio_ADF_diff_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.53201 -0.07225 -0.01202  0.05491  0.67954 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## z.lag.1     -1.15073    0.10488 -10.972  < 2e-16 ***
## z.diff.lag1  0.11284    0.09891   1.141 0.254240    
## z.diff.lag2  0.08271    0.09274   0.892 0.372733    
## z.diff.lag3  0.09375    0.08575   1.093 0.274557    
## z.diff.lag4  0.14393    0.07814   1.842 0.065823 .  
## z.diff.lag5  0.10871    0.07039   1.544 0.122846    
## z.diff.lag6  0.10964    0.06064   1.808 0.070954 .  
## z.diff.lag7  0.13428    0.04867   2.759 0.005921 ** 
## z.diff.lag8  0.11462    0.03374   3.397 0.000711 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.1264 on 863 degrees of freedom
## Multiple R-squared:  0.5286, Adjusted R-squared:  0.5237 
## F-statistic: 107.5 on 9 and 863 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -10.9721 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau1 -2.58 -1.95 -1.62
# ==============================
# DIFERENCIACIÓN ESTACIONAL
# ==============================

nsdiffs(CETES28.ts)
## [1] 0
nsdiffs(TipoCambio_FIX.ts)
## [1] 0

3.3 Correlogramas ACF y PACF

Una vez determinada la estacionariedad de las series y su orden de integración, se analizan las funciones de autocorrelación (ACF) y autocorrelación parcial (PACF). Estos correlogramas permiten identificar posibles componentes autorregresivos (AR) y de medias móviles (MA) que servirán como punto de partida para proponer los modelos ARIMA.

3.3.1 CETES a 28 días

Se analizan los correlogramas de la primera diferencia de CETES a 28 días, ya que esta transformación resultó estacionaria.

# ======================================
# CETES 28 DÍAS
# ACF Y PACF DE LA PRIMERA DIFERENCIA
# ======================================

par(mfrow = c(2,1))

# Función de autocorrelación (ACF)
acf(
  ts(D_CETES28.ts, frequency = 1),
  lag.max = 30,
  main = "ACF - Primera diferencia CETES 28 días"
)

# Función de autocorrelación parcial (PACF)
pacf(
  ts(D_CETES28.ts, frequency = 1),
  lag.max = 30,
  main = "PACF - Primera diferencia CETES 28 días"
)

# Regresar a una sola gráfica
par(mfrow = c(1,1))

3.3.2 Tipo de cambio FIX

Se analizan los correlogramas de la primera diferencia del tipo de cambio FIX, debido a que esta transformación resultó estacionaria.

# ======================================
# TIPO DE CAMBIO FIX
# ACF Y PACF DE LA PRIMERA DIFERENCIA
# ======================================

par(mfrow = c(2,1))

# Función de autocorrelación (ACF)
acf(
  ts(D_TipoCambio_FIX.ts, frequency = 1),
  lag.max = 30,
  main = "ACF - Primera diferencia Tipo de cambio FIX"
)

# Función de autocorrelación parcial (PACF)
pacf(
  ts(D_TipoCambio_FIX.ts, frequency = 1),
  lag.max = 30,
  main = "PACF - Primera diferencia Tipo de cambio FIX"
)

# Regresar a una sola gráfica
par(mfrow = c(1,1))
# ======================================
# CETES 28 DÍAS
# REZAGOS SIGNIFICATIVOS ACF Y PACF
# ======================================

acf_CETES <- acf(
  ts(D_CETES28.ts, frequency = 1),
  lag.max = 30,
  plot = FALSE
)

pacf_CETES <- pacf(
  ts(D_CETES28.ts, frequency = 1),
  lag.max = 30,
  plot = FALSE
)

# Límite aproximado de significancia
limite_CETES <- 1.96 / sqrt(length(D_CETES28.ts))

# Rezagos significativos de la ACF
sig_ACF_CETES <- data.frame(
  Rezago = as.numeric(acf_CETES$lag),
  ACF = as.numeric(acf_CETES$acf)
)

sig_ACF_CETES <- subset(
  sig_ACF_CETES,
  Rezago > 0 & abs(ACF) > limite_CETES
)

# Rezagos significativos de la PACF
sig_PACF_CETES <- data.frame(
  Rezago = as.numeric(pacf_CETES$lag),
  PACF = as.numeric(pacf_CETES$acf)
)

sig_PACF_CETES <- subset(
  sig_PACF_CETES,
  abs(PACF) > limite_CETES
)

limite_CETES
## [1] 0.1441021
sig_ACF_CETES
##    Rezago        ACF
## 2       1 -0.1575239
## 5       4  0.2792457
## 9       8  0.1635557
## 13     12  0.1484554
sig_PACF_CETES
##    Rezago       PACF
## 1       1 -0.1575239
## 4       4  0.2724274
## 6       6  0.1911315
## 8       8  0.1484242
## 29     29 -0.1568791
# ======================================
# TIPO DE CAMBIO FIX
# REZAGOS SIGNIFICATIVOS ACF Y PACF
# ======================================

acf_TC <- acf(
  ts(D_TipoCambio_FIX.ts, frequency = 1),
  lag.max = 30,
  plot = FALSE
)

pacf_TC <- pacf(
  ts(D_TipoCambio_FIX.ts, frequency = 1),
  lag.max = 30,
  plot = FALSE
)

# Límite aproximado de significancia
limite_TC <- 1.96 / sqrt(length(D_TipoCambio_FIX.ts))

# Rezagos significativos de la ACF
sig_ACF_TC <- data.frame(
  Rezago = as.numeric(acf_TC$lag),
  ACF = as.numeric(acf_TC$acf)
)

sig_ACF_TC <- subset(
  sig_ACF_TC,
  Rezago > 0 & abs(ACF) > limite_TC
)

# Rezagos significativos de la PACF
sig_PACF_TC <- data.frame(
  Rezago = as.numeric(pacf_TC$lag),
  PACF = as.numeric(pacf_TC$acf)
)

sig_PACF_TC <- subset(
  sig_PACF_TC,
  abs(PACF) > limite_TC
)

limite_TC
## [1] 0.0655889
sig_ACF_TC
##    Rezago         ACF
## 10      9 -0.12177100
## 18     17 -0.06701677
sig_PACF_TC
##    Rezago        PACF
## 9       9 -0.11667000
## 17     17 -0.07257743
# ======================================
# CETES 28 DÍAS
# REVISIÓN DE REZAGOS ESTACIONALES
# ======================================

acf_CETES_est <- acf(
  D_CETES28.ts,
  lag.max = 156,
  plot = FALSE
)

pacf_CETES_est <- pacf(
  D_CETES28.ts,
  lag.max = 156,
  plot = FALSE
)

# ACF en rezagos estacionales 52, 104 y 156
acf_CETES_est$acf[c(52, 104, 156) + 1]
## [1]  0.061194996 -0.112566897  0.005849194
# PACF en rezagos estacionales 52, 104 y 156
pacf_CETES_est$acf[c(52, 104, 156)]
## [1]  0.002170022 -0.017479657  0.021543461
# Límite aproximado de significancia
limite_CETES_est <- 1.96 / sqrt(length(D_CETES28.ts))
limite_CETES_est
## [1] 0.1441021
# ======================================
# TIPO DE CAMBIO FIX
# REVISIÓN DE REZAGOS ESTACIONALES
# ======================================

acf_TC_est <- acf(
  D_TipoCambio_FIX.ts,
  lag.max = 520,
  plot = FALSE
)

pacf_TC_est <- pacf(
  D_TipoCambio_FIX.ts,
  lag.max = 520,
  plot = FALSE
)

# ACF en rezagos estacionales 260 y 520
acf_TC_est$acf[c(260, 520) + 1]
## [1] 0.003070128 0.023219629
# PACF en rezagos estacionales 260 y 520
pacf_TC_est$acf[c(260, 520)]
## [1] 0.00378938 0.01937351
# Límite aproximado de significancia
limite_TC_est <- 1.96 / sqrt(length(D_TipoCambio_FIX.ts))
limite_TC_est
## [1] 0.0655889

3.4 Iteraciones manuales de modelos ARIMA 3.4.1 CETES a 28 días

# ======================================
# CETES 28 DÍAS
# SEIS MODELOS ARIMA MANUALES
# ======================================

# Modelo 1: componente AR de orden 1
m1_CETES <- Arima(
  CETES28.ts,
  order = c(1,1,0),
  seasonal = list(order = c(0,0,0), period = 52)
)

# Modelo 2: componente MA de orden 1
m2_CETES <- Arima(
  CETES28.ts,
  order = c(0,1,1),
  seasonal = list(order = c(0,0,0), period = 52)
)

# Modelo 3: combinación AR y MA de orden 1
m3_CETES <- Arima(
  CETES28.ts,
  order = c(1,1,1),
  seasonal = list(order = c(0,0,0), period = 52)
)

# Modelo 4: componente AR de orden 4
m4_CETES <- Arima(
  CETES28.ts,
  order = c(4,1,0),
  seasonal = list(order = c(0,0,0), period = 52)
)

# Modelo 5: componente MA de orden 4
m5_CETES <- Arima(
  CETES28.ts,
  order = c(0,1,4),
  seasonal = list(order = c(0,0,0), period = 52)
)

# Modelo 6: combinación AR y MA de orden 4
m6_CETES <- Arima(
  CETES28.ts,
  order = c(4,1,4),
  seasonal = list(order = c(0,0,0), period = 52)
)
# ======================================
# CETES 28 DÍAS
# COMPARACIÓN AIC Y BIC
# ======================================

AIC(
  m1_CETES,
  m2_CETES,
  m3_CETES,
  m4_CETES,
  m5_CETES,
  m6_CETES
)
##          df       AIC
## m1_CETES  2 -251.1075
## m2_CETES  2 -251.4836
## m3_CETES  3 -249.5701
## m4_CETES  5 -266.7245
## m5_CETES  5 -264.9287
## m6_CETES  9 -278.4387
BIC(
  m1_CETES,
  m2_CETES,
  m3_CETES,
  m4_CETES,
  m5_CETES,
  m6_CETES
)
##          df       BIC
## m1_CETES  2 -244.6668
## m2_CETES  2 -245.0429
## m3_CETES  3 -239.9091
## m4_CETES  5 -250.6228
## m5_CETES  5 -248.8269
## m6_CETES  9 -249.4555

3.5 Selección automática del modelo (Auto Arima) 3.5.1 CETES a 28 días

# ======================================
# CETES 28 DÍAS
# AUTO.ARIMA - BÚSQUEDA EXHAUSTIVA
# ======================================

# Medir el tiempo de ejecución de la búsqueda
tiempo_auto_CETES <- system.time({

  auto_CETES <- auto.arima(
    CETES28.ts,
    stepwise = FALSE,
    approximation = FALSE
  )

})

# Modelo seleccionado automáticamente
summary(auto_CETES)
## Series: CETES28.ts 
## ARIMA(3,2,2) 
## 
## Coefficients:
##          ar1      ar2      ar3      ma1      ma2
##       -1.043  -0.5390  -0.3877  -0.1466  -0.6649
## s.e.   0.107   0.1052   0.0720   0.1017   0.0988
## 
## sigma^2 = 0.0122:  log likelihood = 145.29
## AIC=-278.59   AICc=-278.11   BIC=-259.3
## 
## Training set error measures:
##                        ME      RMSE        MAE         MPE      MAPE      MASE
## Training set -0.008214286 0.1083573 0.07902192 -0.06798386 0.8533956 0.0470285
##                      ACF1
## Training set -0.003032027
# Criterios de información
AIC(auto_CETES)
## [1] -278.5872
BIC(auto_CETES)
## [1] -259.2976
# Tiempo requerido
tiempo_auto_CETES
##    user  system elapsed 
##   77.44   13.22   93.60
# ======================================
# CETES 28 DÍAS
# AUTO.ARIMA CON d = 1 Y D = 0
# ======================================

tiempo_auto_CETES_d1 <- system.time({

  auto_CETES_d1 <- auto.arima(
    CETES28.ts,
    d = 1,
    D = 0,
    stepwise = FALSE,
    approximation = FALSE
  )

})

# Modelo seleccionado
summary(auto_CETES_d1)
## Series: CETES28.ts 
## ARIMA(4,1,1) 
## 
## Coefficients:
##          ar1     ar2     ar3     ar4      ma1
##       0.5835  0.0285  0.1229  0.2209  -0.8418
## s.e.  0.0930  0.0832  0.0831  0.0789   0.0697
## 
## sigma^2 = 0.01274:  log likelihood = 143.12
## AIC=-274.25   AICc=-273.78   BIC=-254.93
## 
## Training set error measures:
##                       ME      RMSE       MAE        MPE      MAPE       MASE
## Training set -0.01001548 0.1110166 0.0809996 -0.1090596 0.8698945 0.04820548
##                    ACF1
## Training set 0.01481677
# Criterios de información
AIC(auto_CETES_d1)
## [1] -274.2489
BIC(auto_CETES_d1)
## [1] -254.9268
# Tiempo de ejecución
tiempo_auto_CETES_d1
##    user  system elapsed 
##  125.49   17.63  146.30
# ======================================
# CETES 28 DÍAS
# PRUEBA DE LJUNG-BOX
# ======================================

# Residuos de los principales candidatos
e_m6_CETES <- resid(m6_CETES)
e_auto_CETES_d1 <- resid(auto_CETES_d1)
e_m4_CETES <- resid(m4_CETES)

# Ljung-Box: ARIMA(4,1,4)
Box.test(
  e_m6_CETES,
  type = "Ljung-Box"
)
## 
##  Box-Ljung test
## 
## data:  e_m6_CETES
## X-squared = 0.016573, df = 1, p-value = 0.8976
# Ljung-Box: ARIMA(4,1,1)
Box.test(
  e_auto_CETES_d1,
  type = "Ljung-Box"
)
## 
##  Box-Ljung test
## 
## data:  e_auto_CETES_d1
## X-squared = 0.041496, df = 1, p-value = 0.8386
# Ljung-Box: ARIMA(4,1,0)
Box.test(
  e_m4_CETES,
  type = "Ljung-Box"
)
## 
##  Box-Ljung test
## 
## data:  e_m4_CETES
## X-squared = 0.19393, df = 1, p-value = 0.6597
# ======================================
# CETES 28 DÍAS
# AUTO.ARIMA - BÚSQUEDA AMPLIADA
# d = 1, D = 0, SIN COMPONENTE ESTACIONAL
# ======================================

tiempo_auto_CETES_ampliado <- system.time({

  auto_CETES_ampliado <- auto.arima(
    CETES28.ts,
    d = 1,
    D = 0,
    seasonal = FALSE,
    max.p = 8,
    max.q = 8,
    max.order = 8,
    stepwise = FALSE,
    approximation = FALSE
  )

})

# Modelo seleccionado
summary(auto_CETES_ampliado)
## Series: CETES28.ts 
## ARIMA(4,1,2) 
## 
## Coefficients:
##           ar1     ar2     ar3     ar4      ma1      ma2
##       -0.0620  0.4814  0.1430  0.3831  -0.1347  -0.6524
## s.e.   0.1096  0.0999  0.0717  0.0705   0.1059   0.1022
## 
## sigma^2 = 0.01217:  log likelihood = 147.75
## AIC=-281.5   AICc=-280.87   BIC=-258.96
## 
## Training set error measures:
##                        ME      RMSE        MAE        MPE     MAPE       MASE
## Training set -0.009903058 0.1082074 0.07914315 -0.1054958 0.854999 0.04710065
##                      ACF1
## Training set -0.004443585
# Criterios de información
AIC(auto_CETES_ampliado)
## [1] -281.4979
BIC(auto_CETES_ampliado)
## [1] -258.9554
# Tiempo de ejecución
tiempo_auto_CETES_ampliado
##    user  system elapsed 
##    2.08    0.07    2.19
# ======================================
# CETES 28 DÍAS
# LJUNG-BOX DEL ARIMA(4,1,2)
# ======================================

# Obtener residuos del modelo seleccionado
e_auto_CETES_ampliado <- resid(auto_CETES_ampliado)

# Prueba de Ljung-Box
Box.test(
  e_auto_CETES_ampliado,
  type = "Ljung-Box"
)
## 
##  Box-Ljung test
## 
## data:  e_auto_CETES_ampliado
## X-squared = 0.0037322, df = 1, p-value = 0.9513
# ======================================
# CETES 28 DÍAS
# VERIFICACIÓN ADICIONAL DE RESIDUOS
# ======================================

# Ljung-Box en distintos horizontes de rezagos
Box.test(
  e_auto_CETES_ampliado,
  lag = 5,
  type = "Ljung-Box"
)
## 
##  Box-Ljung test
## 
## data:  e_auto_CETES_ampliado
## X-squared = 0.80535, df = 5, p-value = 0.9767
Box.test(
  e_auto_CETES_ampliado,
  lag = 10,
  type = "Ljung-Box"
)
## 
##  Box-Ljung test
## 
## data:  e_auto_CETES_ampliado
## X-squared = 1.5636, df = 10, p-value = 0.9987
Box.test(
  e_auto_CETES_ampliado,
  lag = 20,
  type = "Ljung-Box"
)
## 
##  Box-Ljung test
## 
## data:  e_auto_CETES_ampliado
## X-squared = 11.009, df = 20, p-value = 0.946
# Correlograma de los residuos
acf(
  e_auto_CETES_ampliado,
  lag.max = 30,
  main = "ACF de residuos - ARIMA(4,1,2) CETES"
)

# ======================================
# CETES 28 DÍAS
# LJUNG-BOX AJUSTADO POR PARÁMETROS
# ======================================

Box.test(
  e_auto_CETES_ampliado,
  lag = 20,
  type = "Ljung-Box",
  fitdf = 6
)
## 
##  Box-Ljung test
## 
## data:  e_auto_CETES_ampliado
## X-squared = 11.009, df = 14, p-value = 0.6853

PRUEBAS DE ARIMA CON UNA BASE DE DATOS MÁS GRANDE

# ======================================
# CETES 28 DÍAS
# IMPORTACIÓN DE BASE EXTENDIDA 2016-2026
# ======================================

library(readxl)
## Warning: package 'readxl' was built under R version 4.5.3
CETES28_Extendida <- read_excel("CETES28_Extendida.xlsx")

# Convertir la fecha al formato de R
CETES28_Extendida$Fecha <- as.Date(CETES28_Extendida$Fecha)

# Revisar estructura y extremos de la base
str(CETES28_Extendida)
## tibble [551 × 2] (S3: tbl_df/tbl/data.frame)
##  $ Fecha      : Date[1:551], format: "2016-01-07" "2016-01-14" ...
##  $ Rendimiento: num [1:551] 3.05 3.05 3.09 3.14 3.16 3.2 3.23 3.85 3.88 3.78 ...
head(CETES28_Extendida)
## # A tibble: 6 × 2
##   Fecha      Rendimiento
##   <date>           <dbl>
## 1 2016-01-07        3.05
## 2 2016-01-14        3.05
## 3 2016-01-21        3.09
## 4 2016-01-28        3.14
## 5 2016-02-04        3.16
## 6 2016-02-11        3.2
tail(CETES28_Extendida)
## # A tibble: 6 × 2
##   Fecha      Rendimiento
##   <date>           <dbl>
## 1 2026-06-18        6.28
## 2 2026-06-25        6.28
## 3 2026-07-02        6.3 
## 4 2026-07-09        6.29
## 5 2026-07-16        6.2 
## 6 2026-07-23        6.18
# ======================================
# CETES 28 DÍAS
# CONVERSIÓN A SERIE DE TIEMPO EXTENDIDA
# ======================================

CETES28_Extendida.ts <- ts(
  CETES28_Extendida$Rendimiento,
  start = c(2016, 1),
  frequency = 52
)

CETES28_Extendida.ts
## Time Series:
## Start = c(2016, 1) 
## End = c(2026, 31) 
## Frequency = 52 
##   [1]  3.05  3.05  3.09  3.14  3.16  3.20  3.23  3.85  3.88  3.78  3.80  3.78
##  [13]  3.76  3.73  3.74  3.74  3.76  3.77  3.77  3.81  3.90  3.80  3.78  3.83
##  [25]  3.76  3.86  4.23  4.19  4.21  4.21  4.22  4.22  4.27  4.23  4.29  4.23
##  [37]  4.22  4.27  4.41  4.70  4.70  4.67  4.68  4.75  4.81  5.56  5.48  5.62
##  [49]  5.59  5.51  5.65  5.69  5.82  5.87  5.86  5.77  5.88  5.90  6.21  6.24
##  [61]  6.25  6.29  6.30  6.32  6.43  6.48  6.54  6.47  6.50  6.50  6.49  6.53
##  [73]  6.71  6.72  6.74  6.79  6.87  6.96  7.00  6.98  6.99  6.99  6.99  6.96
##  [85]  6.91  6.92  6.91  6.98  6.98  6.98  7.00  7.03  7.03  7.04  7.02  7.03
##  [97]  7.02  7.01  7.02  7.01  7.02  7.19  7.24  7.22  7.25  7.24  7.24  7.25
## [109]  7.24  7.35  7.50  7.49  7.47  7.50  7.46  7.44  7.49  7.46  7.47  7.45
## [121]  7.45  7.47  7.52  7.58  7.51  7.48  7.51  7.62  7.71  7.70  7.72  7.74
## [133]  7.74  7.72  7.74  7.74  7.74  7.71  7.72  7.70  7.70  7.69  7.65  7.67
## [145]  7.70  7.65  7.72  7.76  7.71  7.79  7.94  7.97  7.95  7.97  8.00  8.17
## [157]  8.06  8.00  7.91  7.91  7.86  7.90  7.88  7.85  8.10  8.00  8.09  8.15
## [169]  7.85  7.80  7.76  7.81  7.75  8.20  8.02  8.05  8.03  8.05  8.30  8.28
## [181]  8.24  8.18  8.10  8.17  8.13  8.15  8.01  8.15  8.05  7.96  7.87  7.81
## [193]  7.72  7.72  7.61  7.65  7.70  7.67  7.65  7.62  7.55  7.45  7.43  7.46
## [205]  7.40  7.04  6.80  7.25  7.25  7.26  7.00  7.05  7.04  6.99  7.00  6.95
## [217]  6.91  6.70  6.81  7.15  6.59  6.39  6.23  6.00  6.00  5.84  5.70  5.39
## [229]  5.39  5.38  5.27  5.15  4.98  4.85  4.81  4.95  4.90  4.80  4.63  4.53
## [241]  4.48  4.43  4.50  4.42  4.41  4.45  4.25  4.18  4.26  4.22  4.14  4.22
## [253]  4.25  4.14  4.24  4.28  4.35  4.26  4.23  4.27  4.24  4.28  4.19  4.19
## [265]  4.22  4.24  4.19  4.01  4.02  4.06  4.05  4.05  4.03  4.08  4.07  4.07
## [277]  4.06  4.06  4.07  4.06  4.05  4.07  4.02  4.04  4.00  4.03  4.30  4.30
## [289]  4.30  4.33  4.35  4.33  4.50  4.50  4.49  4.39  4.49  4.60  4.58  4.69
## [301]  4.81  4.79  4.83  4.93  5.00  5.14  5.00  5.05  5.10  5.20  5.20  5.45
## [313]  5.49  5.51  5.52  5.57  5.50  5.84  5.75  5.95  5.94  6.06  6.15  6.33
## [325]  6.49  6.52  6.52  6.52  6.50  6.68  6.85  6.97  6.93  6.90  7.01  7.32
## [337]  7.15  7.50  7.56  7.70  7.55  7.74  8.05  8.01  8.30  8.35  8.35  8.35
## [349]  8.55  8.75  8.61  9.25  9.00  8.90  8.80  9.00  9.40  9.19  9.37  9.70
## [361]  9.68 10.00  9.80 10.20 10.10 10.49 10.46 10.70 10.80 10.78 10.82 11.05
## [373] 11.04 11.05 11.19 11.30 11.28 11.34 11.28 11.30 11.30 11.27 11.40 11.39
## [385] 11.25 11.25 11.20 11.32 11.15 11.09 11.02 11.30 11.29 11.18 11.09 11.28
## [397] 11.25 11.26 10.96 11.07 11.00 11.25 11.00 11.05 11.05 11.05 10.95 11.26
## [409] 11.09 10.95 10.87 10.75 10.78 11.25 11.25 11.09 11.26 11.30 11.28 11.30
## [421] 11.28 11.15 11.06 11.05 11.00 11.00 11.00 11.18 10.99 10.90 10.88 10.92
## [433] 11.04 11.04 10.95 11.03 10.95 11.00 11.03 11.04 11.00 10.95 10.88 11.02
## [445] 10.90 10.89 10.87 10.97 10.86 10.65 10.65 10.65 10.51 10.49 10.40 10.35
## [457] 10.30 10.30 10.21 10.20 10.20 10.10 10.10 10.05  9.95  9.90  9.95  9.80
## [469]  9.74 10.04  9.88  9.78  9.75  9.87  9.65  9.35  9.37  9.44  9.15  9.14
## [481]  9.10  9.02  8.80  8.80  9.00  8.80  8.65  8.55  8.40  8.15  8.12  8.10
## [493]  8.10  8.14  8.00  7.70  7.85  7.65  7.65  7.48  7.50  7.38  7.40  7.27
## [505]  7.35  7.35  7.25  7.20  7.19  7.47  7.40  7.10  7.10  7.30  7.05  7.25
## [517]  7.15  7.29  7.25  7.15  7.04  7.07  7.07  6.99  7.00  6.95  6.90  6.88
## [529]  6.84  6.83  6.81  6.81  6.81  6.81  6.64  6.60  6.60  6.55  6.50  6.49
## [541]  6.54  6.45  6.38  6.36  6.25  6.28  6.28  6.30  6.29  6.20  6.18
# ======================================
# CETES 28 DÍAS
# GRÁFICA DE LA MUESTRA EXTENDIDA
# ======================================

plot(
  CETES28_Extendida$Fecha,
  CETES28_Extendida$Rendimiento,
  type = "l",
  main = "CETES a 28 días - Muestra extendida 2016-2026",
  xlab = "Fecha",
  ylab = "Tasa de rendimiento (%)"
)

# ======================================
# CETES 28 DÍAS
# COMPARACIÓN DE MUESTRAS
# ======================================

par(mfrow = c(2,1))

# Muestra extendida
plot(
  CETES28_Extendida$Fecha,
  CETES28_Extendida$Rendimiento,
  type = "l",
  main = "CETES a 28 días - 2016 a 2026",
  xlab = "Fecha",
  ylab = "Tasa (%)"
)

# Muestra original utilizada hasta ahora
plot(
  CETES28$Fecha,
  CETES28$CETES28_pct,
  type = "l",
  main = "CETES a 28 días - 2023 a 2026",
  xlab = "Fecha",
  ylab = "Tasa (%)"
)

par(mfrow = c(1,1))
# ======================================
# CETES 28 DÍAS
# ESTACIONARIEDAD DE LA MUESTRA EXTENDIDA
# ======================================

library(tseries)
library(forecast)

# ADF en nivel
adf.test(CETES28_Extendida.ts)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  CETES28_Extendida.ts
## Dickey-Fuller = -1.3063, Lag order = 8, p-value = 0.8719
## alternative hypothesis: stationary
# Número de diferencias sugerido
ndiffs(CETES28_Extendida.ts)
## [1] 2
ndiffs(CETES28_Extendida.ts, test = "adf")
## [1] 1
ndiffs(CETES28_Extendida.ts, test = "kpss")
## [1] 2
# ======================================
# CETES 28 DÍAS - MUESTRA EXTENDIDA
# PRIMERA DIFERENCIA Y ADF
# ======================================

# Crear primera diferencia
D_CETES28_Extendida.ts <- diff(CETES28_Extendida.ts)

# Comprobar estacionariedad
adf.test(D_CETES28_Extendida.ts)
## Warning in adf.test(D_CETES28_Extendida.ts): p-value smaller than printed
## p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  D_CETES28_Extendida.ts
## Dickey-Fuller = -4.0738, Lag order = 8, p-value = 0.01
## alternative hypothesis: stationary
# Diferenciación estacional
nsdiffs(CETES28_Extendida.ts)
## [1] 0
# ======================================
# CETES 28 DÍAS - MUESTRA EXTENDIDA
# AUTO.ARIMA LIBRE
# ======================================

tiempo_auto_CETES_ext_libre <- system.time({

  auto_CETES_ext_libre <- auto.arima(
    CETES28_Extendida.ts,
    stepwise = FALSE,
    approximation = FALSE
  )

})

# Modelo seleccionado
summary(auto_CETES_ext_libre)
## Series: CETES28_Extendida.ts 
## ARIMA(1,2,2)(0,0,1)[52] 
## 
## Coefficients:
##          ar1      ma1     ma2    sma1
##       0.3402  -1.5454  0.5934  0.1233
## s.e.  0.1053   0.0883  0.0844  0.0466
## 
## sigma^2 = 0.01442:  log likelihood = 385
## AIC=-760.01   AICc=-759.9   BIC=-738.47
## 
## Training set error measures:
##                        ME      RMSE        MAE       MPE     MAPE       MASE
## Training set -0.001581481 0.1194178 0.08207322 0.0167209 1.188093 0.04195689
##                      ACF1
## Training set 0.0006992438
# Criterios de información
AIC(auto_CETES_ext_libre)
## [1] -760.0079
BIC(auto_CETES_ext_libre)
## [1] -738.4674
# Tiempo de ejecución
tiempo_auto_CETES_ext_libre
##    user  system elapsed 
##  893.25  117.85 1033.92
# ======================================
# CETES 28 DÍAS - MUESTRA EXTENDIDA
# AUTO.ARIMA CON d = 1 Y D = 0
# ======================================

tiempo_auto_CETES_ext_d1 <- system.time({

  auto_CETES_ext_d1 <- auto.arima(
    CETES28_Extendida.ts,
    d = 1,
    D = 0,
    stepwise = FALSE,
    approximation = FALSE
  )

})

# Modelo seleccionado
summary(auto_CETES_ext_d1)
## Series: CETES28_Extendida.ts 
## ARIMA(2,1,2)(0,0,1)[52] 
## 
## Coefficients:
##          ar1      ar2      ma1     ma2    sma1
##       1.3459  -0.3603  -1.5600  0.6161  0.1293
## s.e.  0.1041   0.1032   0.0862  0.0824  0.0467
## 
## sigma^2 = 0.0143:  log likelihood = 389.18
## AIC=-766.37   AICc=-766.21   BIC=-740.51
## 
## Training set error measures:
##                        ME      RMSE        MAE        MPE     MAPE       MASE
## Training set 0.0003205849 0.1189374 0.08135646 0.04669239 1.176912 0.04159047
##                     ACF1
## Training set 0.001626025
# Criterios de información
AIC(auto_CETES_ext_d1)
## [1] -766.3679
BIC(auto_CETES_ext_d1)
## [1] -740.5084
# Tiempo de ejecución
tiempo_auto_CETES_ext_d1
##    user  system elapsed 
## 2296.53  330.06 2702.28