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
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.
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))
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