Paso 0: Paquetes/Librerias

library(readxl)
library(tseries)
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(forecast)
library(vars)
## Loading required package: MASS
## Loading required package: strucchange
## Loading required package: zoo
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
## Loading required package: sandwich
## Loading required package: urca
## Loading required package: lmtest
library(openxlsx)
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:MASS':
## 
##     select
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(tibble)

Paso 1: Llamar datos

Data <- read_excel("Base de datos.xlsx", 
                   range = "a1:i57", col_types = c("date", 
                                                   "numeric", "numeric", "numeric", 
                                                   "numeric", "numeric", "numeric", 
                                                   "numeric", "numeric"))

Paso 2: Diagnóstico de datos

Base <- Data

# Prueba ADF para "Liquidez Sensible"
adf_Liquidez_Sensible <- adf.test(Base$Liquidez_Sensible)
print(adf_Liquidez_Sensible)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  Base$Liquidez_Sensible
## Dickey-Fuller = -1.0484, Lag order = 3, p-value = 0.9226
## alternative hypothesis: stationary
# Prueba ADF para "Cobrabilidad Sensible" antes de la diferenciación
adf_Cobrabilidad_Sensible <- adf.test(Base$Cobrabilidad_Sensible)
print(adf_Cobrabilidad_Sensible)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  Base$Cobrabilidad_Sensible
## Dickey-Fuller = -3.8329, Lag order = 3, p-value = 0.02327
## alternative hypothesis: stationary

Paso 3: Tratamiento de Datos

# Diferenciar la Serie "Liquidez Sensible"
Liquidez_Sensible_diff <- diff(Base$`Liquidez_Sensible`)

# Verificar Estacionariedad de "Liquidez Sensible" diferenciada
adf_Liquidez_Sensible_diff <- adf.test(Liquidez_Sensible_diff)
## Warning in adf.test(Liquidez_Sensible_diff): p-value smaller than printed
## p-value
print(adf_Liquidez_Sensible_diff)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  Liquidez_Sensible_diff
## Dickey-Fuller = -4.55, Lag order = 3, p-value = 0.01
## alternative hypothesis: stationary
# Diferenciar la Serie "Cobrabilidad Sensible"
Cobrabilidad_Sensible_diff <- diff(Base$`Cobrabilidad_Sensible`)

# Verificar Estacionariedad de "Cobrabilidad Sensible" diferenciada
adf_Cobrabilidad_Sensible_diff <- adf.test(Cobrabilidad_Sensible_diff)
## Warning in adf.test(Cobrabilidad_Sensible_diff): p-value smaller than printed
## p-value
print(adf_Cobrabilidad_Sensible_diff)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  Cobrabilidad_Sensible_diff
## Dickey-Fuller = -4.4992, Lag order = 3, p-value = 0.01
## alternative hypothesis: stationary
# Desarrollar base con los datos diferenciados para modelo VAR
datos_diff <- data.frame(Liquidez_Sensible_diff, Cobrabilidad_Sensible_diff)

Paso 4: Desarrollo del modelo

# Encontrar el orden óptimo del VAR
criteria <- VARselect(datos_diff,lag.max = 10, type="const")
print(criteria)
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      2      1      1      2 
## 
## $criteria
##                   1            2            3            4            5
## AIC(n) 5.967883e+01 5.966005e+01 5.981965e+01 5.992821e+01 6.005789e+01
## HQ(n)  5.976863e+01 5.980972e+01 6.002918e+01 6.019761e+01 6.038716e+01
## SC(n)  5.991972e+01 6.006153e+01 6.038172e+01 6.065088e+01 6.094115e+01
## FPE(n) 8.286293e+25 8.143857e+25 9.584167e+25 1.074581e+26 1.234771e+26
##                   6            7            8            9           10
## AIC(n) 5.999320e+01 5.992866e+01 6.007017e+01 6.011890e+01 6.007069e+01
## HQ(n)  6.038233e+01 6.037766e+01 6.057904e+01 6.068763e+01 6.069929e+01
## SC(n)  6.103705e+01 6.113310e+01 6.143520e+01 6.164452e+01 6.175691e+01
## FPE(n) 1.173328e+26 1.121206e+26 1.325387e+26 1.439604e+26 1.433345e+26
# Criterios HQ y SC recomiendan 1 lag
# Criterio AIC y FPE recomiendan 2 lags
# Se seleccionará 10 lags para evitar sobreajuste debido al tamaño de las series temporales
modelo_var <- VAR(datos_diff, p=2, type="const")

summary(modelo_var)
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: Liquidez_Sensible_diff, Cobrabilidad_Sensible_diff 
## Deterministic variables: const 
## Sample size: 53 
## Log Likelihood: -1716.161 
## Roots of the characteristic polynomial:
## 0.5315 0.5315 0.4627 0.4627
## Call:
## VAR(y = datos_diff, p = 2, type = "const")
## 
## 
## Estimation results for equation Liquidez_Sensible_diff: 
## ======================================================= 
## Liquidez_Sensible_diff = Liquidez_Sensible_diff.l1 + Cobrabilidad_Sensible_diff.l1 + Liquidez_Sensible_diff.l2 + Cobrabilidad_Sensible_diff.l2 + const 
## 
##                                 Estimate Std. Error t value Pr(>|t|)    
## Liquidez_Sensible_diff.l1     -5.819e-01  1.419e-01  -4.101 0.000158 ***
## Cobrabilidad_Sensible_diff.l1  1.654e-01  7.967e-02   2.076 0.043239 *  
## Liquidez_Sensible_diff.l2     -3.989e-01  1.492e-01  -2.674 0.010206 *  
## Cobrabilidad_Sensible_diff.l2  7.987e-02  7.499e-02   1.065 0.292150    
## const                          5.988e+05  3.752e+05   1.596 0.117035    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 2039000 on 48 degrees of freedom
## Multiple R-Squared: 0.2734,  Adjusted R-squared: 0.2128 
## F-statistic: 4.515 on 4 and 48 DF,  p-value: 0.003548 
## 
## 
## Estimation results for equation Cobrabilidad_Sensible_diff: 
## =========================================================== 
## Cobrabilidad_Sensible_diff = Liquidez_Sensible_diff.l1 + Cobrabilidad_Sensible_diff.l1 + Liquidez_Sensible_diff.l2 + Cobrabilidad_Sensible_diff.l2 + const 
## 
##                                 Estimate Std. Error t value Pr(>|t|)    
## Liquidez_Sensible_diff.l1      5.575e-01  2.667e-01   2.090 0.041904 *  
## Cobrabilidad_Sensible_diff.l1 -4.284e-01  1.498e-01  -2.861 0.006245 ** 
## Liquidez_Sensible_diff.l2     -2.930e-01  2.804e-01  -1.045 0.301222    
## Cobrabilidad_Sensible_diff.l2 -9.293e-02  1.409e-01  -0.659 0.512866    
## const                          2.931e+06  7.052e+05   4.157 0.000132 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 3833000 on 48 degrees of freedom
## Multiple R-Squared: 0.3175,  Adjusted R-squared: 0.2606 
## F-statistic: 5.582 on 4 and 48 DF,  p-value: 0.0009002 
## 
## 
## 
## Covariance matrix of residuals:
##                            Liquidez_Sensible_diff Cobrabilidad_Sensible_diff
## Liquidez_Sensible_diff                  4.158e+12                  2.306e+12
## Cobrabilidad_Sensible_diff              2.306e+12                  1.469e+13
## 
## Correlation matrix of residuals:
##                            Liquidez_Sensible_diff Cobrabilidad_Sensible_diff
## Liquidez_Sensible_diff                     1.0000                     0.2951
## Cobrabilidad_Sensible_diff                 0.2951                     1.0000

Paso 5: Diagnostico de modelos var sin shock

# Diagnostico de NORMALIDAD (Shapiro-Wilk) (bases de datos mas reducidas)
residuos <- residuals(modelo_var)
residuos_df <- as.data.frame(residuos)
shapiro_Liquidez <- shapiro.test(residuos_df$Liquidez_Sensible_diff)
shapiro_Cobrabilidad <- shapiro.test(residuos_df$Cobrabilidad_Sensible)


print(shapiro_Liquidez)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos_df$Liquidez_Sensible_diff
## W = 0.97096, p-value = 0.222
print(shapiro_Cobrabilidad)
## 
##  Shapiro-Wilk normality test
## 
## data:  residuos_df$Cobrabilidad_Sensible
## W = 0.9707, p-value = 0.2163
# Analisis grafico de los residuos
plot(residuals(modelo_var))

# Diagnostico de autocorrelación residual (Portmanteau)
serial.test(modelo_var, lags.pt=10, type="PT.adjusted")
## 
##  Portmanteau Test (adjusted)
## 
## data:  Residuals of VAR object modelo_var
## Chi-squared = 29.791, df = 32, p-value = 0.5788
# Diagnostico de correlacion (dwtest Durbin-Watson)
residuos_df <- as.data.frame(residuals(modelo_var))
modelo_residuos_liquidez <- lm(residuos_df$Liquidez_Sensible_diff ~ 1) 
dwtest_liquidez <- dwtest(modelo_residuos_liquidez)
modelo_residuos_cobrabilidad <- lm(residuos_df$Cobrabilidad_Sensible_diff ~ 1)
dwtest_cobrabilidad <- dwtest(modelo_residuos_cobrabilidad)
print(dwtest_liquidez)
## 
##  Durbin-Watson test
## 
## data:  modelo_residuos_liquidez
## DW = 1.9838, p-value = 0.4764
## alternative hypothesis: true autocorrelation is greater than 0
print(dwtest_cobrabilidad)
## 
##  Durbin-Watson test
## 
## data:  modelo_residuos_cobrabilidad
## DW = 1.9853, p-value = 0.4785
## alternative hypothesis: true autocorrelation is greater than 0
# Diagnostico de Cointegracion (Johansen)
johansen <- ca.jo(datos_diff, type="trace", ecdet="const", K=2)
summary(johansen)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1] 0.5999666 0.4652385 0.0000000
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 1 | 33.17  7.52  9.24 12.97
## r = 0  | 81.73 17.85 19.96 24.60
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##                               Liquidez_Sensible_diff.l2
## Liquidez_Sensible_diff.l2                     1.0000000
## Cobrabilidad_Sensible_diff.l2                -0.2899292
## constant                                  33704.0853981
##                               Cobrabilidad_Sensible_diff.l2      constant
## Liquidez_Sensible_diff.l2                      1.000000e+00  1.000000e+00
## Cobrabilidad_Sensible_diff.l2                  4.802712e+00 -2.601728e+00
## constant                                      -1.026840e+07  2.164890e+08
## 
## Weights W:
## (This is the loading matrix)
## 
##                              Liquidez_Sensible_diff.l2
## Liquidez_Sensible_diff.d                    -1.9162068
## Cobrabilidad_Sensible_diff.d                 0.5482098
##                              Cobrabilidad_Sensible_diff.l2      constant
## Liquidez_Sensible_diff.d                       -0.06460144 -1.396333e-18
## Cobrabilidad_Sensible_diff.d                   -0.28367188 -6.106407e-18
# Analisis grafico de impulso-respuesta
irf_resultados <- irf(modelo_var, steps=10)
plot(irf_resultados)

Paso 6: Pronóstico sin shock

# Generar pronósticos para 12 periodos adelante usando predict
pronosticos_var <- predict(modelo_var, n.ahead = 12)

# Visualizar los pronósticos para cada variable
plot(pronosticos_var)

Paso 7: Aplicación del Shock

datos_diff_shock <- datos_diff 

# Shock en nuemero de desviaciones estandar

ds0  <-  0
ds1  <-  3337241.26
ds2  <-  6674482.521
ds3  <-  10011723.78
ds4  <-  13348965.04
ds5  <-  16686206.3
ds6  <-  20023447.56
ds7  <-  23360688.82
ds8  <-  26697930.08
ds9  <-  30035171.34
ds10 <-  33372412.6

#A Partir del ds5 el acaike recomienda 10 resagos

Shock_distribuido <- ds8 
Shock_mensual <- Shock_distribuido / 3


# Aplicar el shock 

datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock)-2):nrow(datos_diff_shock)]      <- datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock)-3):nrow(datos_diff_shock)] - Shock_mensual
## Warning in datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock) - :
## number of items to replace is not a multiple of replacement length
datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock)-1):nrow(datos_diff_shock)]      <- datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock)-2):nrow(datos_diff_shock)] - Shock_mensual
## Warning in datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock) - :
## number of items to replace is not a multiple of replacement length
datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock)):nrow(datos_diff_shock)]        <- datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock)-1):nrow(datos_diff_shock)] - Shock_mensual
## Warning in
## datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock)):nrow(datos_diff_shock)]
## <- datos_diff_shock$Liquidez_Sensible_diff[(nrow(datos_diff_shock) - : number
## of items to replace is not a multiple of replacement length
datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock)-2):nrow(datos_diff_shock)]  <- datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock)-3):nrow(datos_diff_shock)] - Shock_mensual
## Warning in datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock)
## - : number of items to replace is not a multiple of replacement length
datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock)-1):nrow(datos_diff_shock)]  <- datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock)-2):nrow(datos_diff_shock)] - Shock_mensual
## Warning in datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock)
## - : number of items to replace is not a multiple of replacement length
datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock)):nrow(datos_diff_shock)]    <- datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock)-1):nrow(datos_diff_shock)] - Shock_mensual
## Warning in
## datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock)):nrow(datos_diff_shock)]
## <- datos_diff_shock$Cobrabilidad_Sensible_diff[(nrow(datos_diff_shock) - :
## number of items to replace is not a multiple of replacement length

Paso 8: Desarrollo del modelo con shock

# Encontrar el orden óptimo del VAR
# criteria <- VARselect(datos_diff_shock,lag.max = 10, type="const")
# print(criteria)

# Criterios HQ y SC recomiendan 1 lag
# Criterio AIC y FPE recomiendan 2 lags

modelo_var_shock <- VAR(datos_diff_shock, p=1, type="const")

Paso 9: Pronostico con shock

# Pronostica usando el modelo VAR existente con los datos shockeados
pronosticos_var_shock <- predict(modelo_var_shock, n.ahead = 20)

# Visualiza los pronósticos
plot(pronosticos_var_shock)

Paso 10: Visualizar Datos

# Visualizar los datos

liquidez_sensible_fcst <- pronosticos_var_shock$fcst[[1]][, "fcst"]
cobrabilidad_sensible_fcst <- pronosticos_var_shock$fcst[[2]][, "fcst"]

pronosticos_var_shock
## $Liquidez_Sensible_diff
##            fcst     lower     upper       CI
##  [1,] -28306022 -36421259 -20190786  8115236
##  [2,] -29288076 -40293585 -18282567 11005509
##  [3,] -29484019 -42960211 -16007827 13476192
##  [4,] -30158091 -45602302 -14713881 15444211
##  [5,] -30541948 -47790700 -13293197 17248752
##  [6,] -31102553 -49951208 -12253898 18848655
##  [7,] -31556109 -51899240 -11212977 20343131
##  [8,] -32075093 -53800527 -10349659 21725434
##  [9,] -32554682 -55586945  -9522420 23032263
## [10,] -33058584 -57324932  -8792236 24266348
## [11,] -33548080 -58991863  -8104296 25443784
## [12,] -34046701 -60615605  -7477797 26568904
## [13,] -34540146 -62190115  -6890178 27649969
## [14,] -35037107 -63727970  -6346245 28690862
## [15,] -35532302 -65228758  -5835847 29696455
## [16,] -36028942 -66698783  -5359101 30669841
## [17,] -36525074 -68139294  -4910855 31614219
## [18,] -37021886 -69553871  -4489901 32531985
## [19,] -37518656 -70944066  -4093247 33425409
## [20,] -38015823 -72312173  -3719474 34296349
## 
## $Cobrabilidad_Sensible_diff
##            fcst     lower     upper       CI
##  [1,] -30250240 -39100697 -21399783  8850457
##  [2,] -28689555 -41913094 -15466015 13223539
##  [3,] -30485194 -45868626 -15101762 15383432
##  [4,] -30241415 -47873217 -12609613 17631802
##  [5,] -31237491 -50586935 -11888046 19349444
##  [6,] -31480437 -52535954 -10424920 21055517
##  [7,] -32181493 -54734410  -9628577 22552916
##  [8,] -32604527 -56606178  -8602875 24001651
##  [9,] -33196924 -58539752  -7854097 25342828
## [10,] -33686786 -60319200  -7054372 26632414
## [11,] -34239359 -62094137  -6384582 27854778
## [12,] -34754215 -63786026  -5722403 29031812
## [13,] -35292389 -65453406  -5131372 30161017
## [14,] -35816787 -67068961  -4564613 31252174
## [15,] -36349954 -68656395  -4043513 32306441
## [16,] -36878187 -70207098  -3549276 33328911
## [17,] -37409815 -71731303  -3088328 34321488
## [18,] -37939777 -73227028  -2652526 35287251
## [19,] -38471149 -74699164  -2243133 36228016
## [20,] -39002060 -76147938  -1856182 37145878
datos_diff_shock
##    Liquidez_Sensible_diff Cobrabilidad_Sensible_diff
## 1                -2458782                     295074
## 2                 1286687                    2209927
## 3                  846899                    2740699
## 4                -2605442                   -2569443
## 5                 2519971                    1534122
## 6                 1341472                     964812
## 7                  443611                     905487
## 8                 2020001                    1730324
## 9                -3221536                     981121
## 10                1489016                    -157223
## 11                2911270                    5659587
## 12               -1333370                    -709270
## 13                -143040                    2276313
## 14                4674078                    8810233
## 15               -1793241                    1523915
## 16                2305250                    -148974
## 17                1501264                    3914799
## 18               -1049982                    1415682
## 19                3376301                    2542704
## 20                2175391                    2330788
## 21                 420588                    5487553
## 22                1001406                     137308
## 23               -3543615                    3916049
## 24                5562418                    1526545
## 25               -1278477                    -607788
## 26                -276396                    -275671
## 27                 190950                    3667663
## 28                4458511                    1441703
## 29               -2430705                    1882845
## 30                  36254                    4950081
## 31                 112970                   -2772150
## 32                 830470                     257860
## 33                -405770                    2566758
## 34                 877793                    4637923
## 35               -2298435                    6265234
## 36                9293949                    2974759
## 37                 163856                   19653601
## 38                -203876                  -14086083
## 39                 345610                    2258452
## 40                -333134                      -6171
## 41                 919436                    3914502
## 42                2740768                    3820192
## 43                -987686                    1583650
## 44               -2481118                    2515458
## 45                 366481                    2725507
## 46                -323945                     142397
## 47               -1146984                    6535412
## 48                1104448                   -9403316
## 49               -1427556                   10525798
## 50                1946451                    4084707
## 51                1714590                    2055207
## 52               -1920118                     408882
## 53              -10819428                   -8490428
## 54              -19718738                  -17389738
## 55              -28618048                  -26289048
liquidez_sensible_fcst
##  [1] -28306022 -29288076 -29484019 -30158091 -30541948 -31102553 -31556109
##  [8] -32075093 -32554682 -33058584 -33548080 -34046701 -34540146 -35037107
## [15] -35532302 -36028942 -36525074 -37021886 -37518656 -38015823
cobrabilidad_sensible_fcst
##  [1] -30250240 -28689555 -30485194 -30241415 -31237491 -31480437 -32181493
##  [8] -32604527 -33196924 -33686786 -34239359 -34754215 -35292389 -35816787
## [15] -36349954 -36878187 -37409815 -37939777 -38471149 -39002060
# Crear dataframe con las predicciones
predicciones_df <- data.frame(
  Liquidez_Sensible_diff = liquidez_sensible_fcst,
  Cobrabilidad_Sensible_diff = cobrabilidad_sensible_fcst
)

# Identificar las filas como predicciones
predicciones_df$Tipo = "Prediccion"

# A continuación, extraemos las últimas 55 observaciones de datos_diff_shock
ultimas_observaciones <- tail(datos_diff_shock, 55)
ultimas_observaciones$Tipo = "Observacion"

# Combinamos las últimas observaciones con las predicciones
datos_combinados <- rbind(ultimas_observaciones, predicciones_df)

# Ajustamos los nombres de las filas para reflejar el periodo correspondiente
rownames(datos_combinados) <- NULL  # Reset rownames first if necessary
datos_combinados$Periodo <- seq_len(nrow(datos_combinados))

# Mostramos la tabla combinada
print(datos_combinados)
##    Liquidez_Sensible_diff Cobrabilidad_Sensible_diff        Tipo Periodo
## 1                -2458782                     295074 Observacion       1
## 2                 1286687                    2209927 Observacion       2
## 3                  846899                    2740699 Observacion       3
## 4                -2605442                   -2569443 Observacion       4
## 5                 2519971                    1534122 Observacion       5
## 6                 1341472                     964812 Observacion       6
## 7                  443611                     905487 Observacion       7
## 8                 2020001                    1730324 Observacion       8
## 9                -3221536                     981121 Observacion       9
## 10                1489016                    -157223 Observacion      10
## 11                2911270                    5659587 Observacion      11
## 12               -1333370                    -709270 Observacion      12
## 13                -143040                    2276313 Observacion      13
## 14                4674078                    8810233 Observacion      14
## 15               -1793241                    1523915 Observacion      15
## 16                2305250                    -148974 Observacion      16
## 17                1501264                    3914799 Observacion      17
## 18               -1049982                    1415682 Observacion      18
## 19                3376301                    2542704 Observacion      19
## 20                2175391                    2330788 Observacion      20
## 21                 420588                    5487553 Observacion      21
## 22                1001406                     137308 Observacion      22
## 23               -3543615                    3916049 Observacion      23
## 24                5562418                    1526545 Observacion      24
## 25               -1278477                    -607788 Observacion      25
## 26                -276396                    -275671 Observacion      26
## 27                 190950                    3667663 Observacion      27
## 28                4458511                    1441703 Observacion      28
## 29               -2430705                    1882845 Observacion      29
## 30                  36254                    4950081 Observacion      30
## 31                 112970                   -2772150 Observacion      31
## 32                 830470                     257860 Observacion      32
## 33                -405770                    2566758 Observacion      33
## 34                 877793                    4637923 Observacion      34
## 35               -2298435                    6265234 Observacion      35
## 36                9293949                    2974759 Observacion      36
## 37                 163856                   19653601 Observacion      37
## 38                -203876                  -14086083 Observacion      38
## 39                 345610                    2258452 Observacion      39
## 40                -333134                      -6171 Observacion      40
## 41                 919436                    3914502 Observacion      41
## 42                2740768                    3820192 Observacion      42
## 43                -987686                    1583650 Observacion      43
## 44               -2481118                    2515458 Observacion      44
## 45                 366481                    2725507 Observacion      45
## 46                -323945                     142397 Observacion      46
## 47               -1146984                    6535412 Observacion      47
## 48                1104448                   -9403316 Observacion      48
## 49               -1427556                   10525798 Observacion      49
## 50                1946451                    4084707 Observacion      50
## 51                1714590                    2055207 Observacion      51
## 52               -1920118                     408882 Observacion      52
## 53              -10819428                   -8490428 Observacion      53
## 54              -19718738                  -17389738 Observacion      54
## 55              -28618048                  -26289048 Observacion      55
## 56              -28306022                  -30250240  Prediccion      56
## 57              -29288076                  -28689555  Prediccion      57
## 58              -29484019                  -30485194  Prediccion      58
## 59              -30158091                  -30241415  Prediccion      59
## 60              -30541948                  -31237491  Prediccion      60
## 61              -31102553                  -31480437  Prediccion      61
## 62              -31556109                  -32181493  Prediccion      62
## 63              -32075093                  -32604527  Prediccion      63
## 64              -32554682                  -33196924  Prediccion      64
## 65              -33058584                  -33686786  Prediccion      65
## 66              -33548080                  -34239359  Prediccion      66
## 67              -34046701                  -34754215  Prediccion      67
## 68              -34540146                  -35292389  Prediccion      68
## 69              -35037107                  -35816787  Prediccion      69
## 70              -35532302                  -36349954  Prediccion      70
## 71              -36028942                  -36878187  Prediccion      71
## 72              -36525074                  -37409815  Prediccion      72
## 73              -37021886                  -37939777  Prediccion      73
## 74              -37518656                  -38471149  Prediccion      74
## 75              -38015823                  -39002060  Prediccion      75

Paso 11:Transformar datos proyectados

# Último valor conocido de las series originales antes de diferenciar
ultimo_valor_liquidez <- Base$Liquidez_Sensible[nrow(Base)]
ultimo_valor_cobrabilidad <- Base$Cobrabilidad_Sensible[nrow(Base)]

# Preparar vectores para almacenar los valores integrados
liquidez_integrada <- numeric(length = length(liquidez_sensible_fcst))
cobrabilidad_integrada <- numeric(length = length(cobrabilidad_sensible_fcst))

# El primer valor integrado es la suma del último valor conocido y la primera predicción diferenciada
liquidez_integrada[1] <- liquidez_sensible_fcst[1] + ultimo_valor_liquidez
cobrabilidad_integrada[1] <- cobrabilidad_sensible_fcst[1] + ultimo_valor_cobrabilidad

# Para los siguientes valores, sumamos la predicción diferenciada al valor integrado anterior
for(i in 2:length(liquidez_sensible_fcst)){
  liquidez_integrada[i] <- liquidez_sensible_fcst[i] + liquidez_integrada[i-1]
  cobrabilidad_integrada[i] <- cobrabilidad_sensible_fcst[i] + cobrabilidad_integrada[i-1]
}

# Crear un dataframe con los valores integrados para Liquidez y Cobrabilidad
predicciones_integradas_df <- data.frame(
  Liquidez_Sensible = liquidez_integrada,
  Cobrabilidad_Sensible = cobrabilidad_integrada
)

# Opcional: Añadir etiquetas de tipo y periodo, si es necesario
predicciones_integradas_df
##    Liquidez_Sensible Cobrabilidad_Sensible
## 1           51539086             263518096
## 2           22251010             234828542
## 3           -7233010             204343348
## 4          -37391101             174101932
## 5          -67933049             142864442
## 6          -99035603             111384005
## 7         -130591711              79202512
## 8         -162666804              46597985
## 9         -195221487              13401061
## 10        -228280071             -20285725
## 11        -261828150             -54525085
## 12        -295874851             -89279299
## 13        -330414997            -124571688
## 14        -365452104            -160388475
## 15        -400984407            -196738429
## 16        -437013349            -233616616
## 17        -473538423            -271026432
## 18        -510560309            -308966209
## 19        -548078966            -347437358
## 20        -586094789            -386439418