---
title: "Fijación ordinaria de comisiones máximas del sistema de tarjetas de pago 2024"
author: "División Económica y División Sistemas de Pago, BCCR"
date: "Octubre 2024"
output:
  html_document:
    toc: true
    toc_float: true
    collapsed: true
    smooth_scroll: false
    code_folding: hide
    theme: cerulean
    highlight: tango
    number_sections: true
    df_print: kable
    fig_height: 5
    fig_width: 7
---

```{r setup, include=FALSE, warning=FALSE, message=FALSE}
knitr::opts_chunk$set(echo = TRUE, warning = FALSE, include = TRUE)
#setwd()
library(openxlsx) #Permite la lectura de archivos tipo "xlsx"
library(stargazer)#Para mejor apariencia de tablas
library(sandwich)#Para matriz de varianzas y covarianzas robusta
library(lmtest)#Para pruebas de heterocedasticidad y autocorrelación
library(glmulti)#Para selección de variables
library(moments)#Para pruebas de normalidad de los residuos
library(skedastic)#Para pruebas de heterocedasticidad
library(AER)#Pruebas sobre endogeneidad y estimación 
library(truncreg)#Para regresión truncada
library(car)#Para condición de multicolinealidad
library(strucchange)#Para prueba estabilidad
library(dplyr) #Para manejo de datos
library(MASS) # regresión robusta
library(lme4) # modelo efectos aleatorios
library(readxl) # lectura archivo en excel
library(dplyr) # manipulación de datos
library(MuMIn) #Selección AICC
```

```{r Imagen portada, echo=FALSE, out.width = "600px",fig.align="center", message=FALSE, warning=FALSE}
    IMG=paste0("portada.png")#Imagen debe estar en la misma dirección que el código
    knitr::include_graphics(IMG)
```

# Introducción

<div style="text-align: justify">
El presente documento permite replicar las estimaciones en el documento “Fijación ordinaria de comisiones máximas del sistema de tarjetas de pago 2024”. Se consideran los siguientes modelos:

*	Regresión lineal múltiple
*	Regresión con variable dependiente truncada (en 0% y en el valor internacional más bajo registrado).
*	Regresión lineal múltiple con una transformación logarítmica a la variable dependiente. 
*	Inclusión de efectos no lineales en la regresión.
*	Método bootstrap.
*	Regresión robusta. 
*	Regresión lineal múltiple omitiendo los datos pertenecientes al Espacio Económico Europeo (EEE) (solo intercambio, el EEE no regula adquirencia).
*	Regresión lineal múltiple restringiendo la muestra únicamente a países que regulan las tasas de intercambio/adquirencia.
* Regresión lineal con la ampliación de regulación (intercambio o adquirencia).
* Regresión lineal múltiple que utiliza las características observadas más recientes para cada país.
* Regresión lineal múltiple con variables propuestas por el Fondo Monetario Internacional (FMI). 
*	Modelo sin variables relacionadas al uso de tarjetas. 
*	Método de variables instrumentales.
* Modelo de efectos aleatorios.

La descripción de los datos utilizados es la siguiente:  

</div>


```{r cargar los datos, include=FALSE, message=FALSE}
library(readxl) # para leerlo los datos
datos <- read_excel("D:/Documentos Usuarios/RODRIGUEZGJ/OneDrive - Banco Central de Costa Rica/Documentos/Datos y Estimación - Adquirencia e intercambio - Esteban/Base_datos_adquirencia_intercambio.xlsx")
```

```{r}
#Se describen los datos
#str(datos)
#summary(datos)
#Selección de variables a utilizar
misc<-dplyr::select(datos, c("Codigo_Pais","OCDE","Regulacion_intercambio","Regulacion_adquirencia"))
misc<-misc[order(misc$Regulacion_intercambio, decreasing = TRUE),] # ordenando por regulacion intercambio
misc<-misc[!duplicated(misc[,1]),]
#Se elimina Costa Rica
misc<-misc[misc$Codigo_Pais!="CRI",]

#Tabla OCDE de frecuencias
tabla_ocde<-as.data.frame(cbind( c(0,1, "Total"), 
                                 c(sum(misc$OCDE==0), sum(misc$OCDE==1), nrow(misc)),
                                 round(c(100*sum(misc$OCDE==0)/nrow(misc),
                                         100*sum(misc$OCDE==1)/nrow(misc),
                                         100*sum(misc$OCDE==0)/nrow(misc)+
                                         100*sum(misc$OCDE==1)/nrow(misc)),1),
                                 c(round(100*sum(misc$OCDE==0)/nrow(misc),1),
                                   round(100*sum(misc$OCDE==0)/nrow(misc)+
                                           100*sum(misc$OCDE==1)/nrow(misc),1), "") 
                                 ) 
                          )

names(tabla_ocde)<-c("País pertenece a la OCDE", "Frecuencia", "Porcentaje", "Acumulado")

#Tabla intercambio
tabla_int<-as.data.frame(cbind( c(0,1, "Total"),
                                c(sum(misc$Regulacion_intercambio==0),
                                  sum(misc$Regulacion_intercambio==1),
                                  nrow(misc)), 
                                round(c(
                                  100*sum(misc$Regulacion_intercambio==0)/nrow(misc),
                                  100*sum(misc$Regulacion_intercambio==1)/nrow(misc),
                                  100*sum(misc$Regulacion_intercambio==0)/nrow(misc) +
                                  100*sum(misc$Regulacion_intercambio==1)/nrow(misc)),1),
                                  c(round(100*sum(misc$Regulacion_intercambio==0)/nrow(misc),1),
                                        round(100*sum(misc$Regulacion_intercambio==0)/nrow(misc) +
                                        100*sum(misc$Regulacion_intercambio==1)/nrow(misc),1), "")
                                )
                         )

names(tabla_int)<-c("Regulación en intercambio", "Frecuencia", "Porcentaje", "Acumulado")

#Tabla adquirencia
tabla_adq<-as.data.frame(cbind( c(0,1, "Total"), 
                                c(sum(misc$Regulacion_adquirencia==0), 
                                  sum(misc$Regulacion_adquirencia==1), 
                                  nrow(misc)), 
                                round(c(
                                  100*sum(misc$Regulacion_adquirencia==0)/nrow(misc),
                                  100*sum(misc$Regulacion_adquirencia==1)/nrow(misc),
                                  100*sum(misc$Regulacion_adquirencia==0)/nrow(misc)+
                                  100*sum(misc$Regulacion_adquirencia==1)/nrow(misc)),1),
                                c(round(100*sum(misc$Regulacion_adquirencia==0)/nrow(misc),1),
                                  round(100*sum(misc$Regulacion_adquirencia==0)/nrow(misc)+
                                  100*sum(misc$Regulacion_adquirencia==1)/nrow(misc),1), "")
                                ) 
                         )
names(tabla_adq)<-c("Regulación en adquirencia", "Frecuencia", "Porcentaje", "Acumulado")
# vista de las tablas
tabla_ocde
tabla_int
tabla_adq
```

# Regresiones ajustadas para estimar la tasa de intercambio:

## Modelos base ajustados con AICc y BIC:

::: {style="text-align: justify"}
La cantidad de países con información de la tasa de intercambio en la muestra es la siguiente:  
:::

```{r datos intercambio, include=TRUE}
misc<-datos[,c(1:3)]
misc<-na.omit(misc)
misc<-misc[!duplicated(misc[,1]),]
#Se elimina Costa Rica
misc<-misc[misc$Codigo_Pais!="CRI",]

#Cantidad de países con información de la tasa de intercambio en la muestra
nrow(misc)
```

::: {style="text-align: justify"}
Se llevan a cabo múltiples especificaciones de regresión lineal para determinar la tasa de intercambio esperada para Costa Rica. Primero, se realizan estimaciones sin variables de control. Posteriormente, se utilizan criterios de información para seleccionar los controles a partir de una comparación entre la bondad de ajuste y la complejidad del modelo. En particular, estos criterios de información son el criterio de información de Akaike con una corrección para tamaños de muestra pequeños (AICc) y el criterio de información bayesiana (BIC).
:::

```{r}
#Elimino los casos con NA en los predictores y/o la variable respuesta:
datos_int=datos[,-5] # quita adquirencia para que no afecte en la eliminación de NA´s
datos_int=na.omit(datos_int)
#sum(table(unique(datos_int$Pais)))
```

* **Modelo sin controles**

```{r , include=TRUE, results='asis'}
#remover NA's de la columna "Intercambio" y dejar los demás.
datos2=datos %>% 
  filter(!is.na(Intercambio))

modelo_int_sin_cont<-lm(Intercambio ~ Regulacion_intercambio, datos2)

# Errores robustos
modelo_int_sin_cont_corr_hc<-coeftest(modelo_int_sin_cont, vcov. = vcovHC(modelo_int_sin_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_sin_cont_corr_hac<-coeftest(modelo_int_sin_cont, vcov. = vcovHAC(modelo_int_sin_cont, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_sin_cont, modelo_int_sin_cont_corr_hc, type = "html", 
          title = "Estimación principal - Modelo sin controles", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

```{r}
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_int_sin_cont_con_reg<-predict(modelo_int_sin_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r modelo con controles, include=TRUE, results='asis'}
# Modelo con los controles
modelo_int_con_cont<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                          Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_int)
# Errores robustos
modelo_int_con_cont_corr_hc<-coeftest(modelo_int_con_cont, vcov. = vcovHC(modelo_int_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_corr_hac<-coeftest(modelo_int_con_cont, vcov. = vcovHAC(modelo_int_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_con_cont, modelo_int_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre la tasa de intercambio con todos los controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
pred_int_con_cont_con_reg<-predict(modelo_int_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

Para determinar si se debe hacer un ajuste por tamaño de muestra pequeña, se debe tener que $\frac{n}{k} < 40$, donde n es la cantidad de observaciones y k es la cantidad de variables:   

```{r}
n=nrow(datos_int)
k=15
n/k
```

```{r seleccion aicc int, include=TRUE, results='asis', warning=FALSE}
# Selección con AICc
datos_int<-datos %>% dplyr::select(-Adquirencia) %>% na.omit()

modelo_int_con_cont_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_int,na.action = "na.omit")


variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 13
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 8
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
```

* **Selección de variables mediante AICc sin efectos fijos de tiempo:**
```{r}
# Estimación
modelo_int_con_cont_aicc=lm(Intercambio ~ Regulacion_intercambio + Cuenta + Pago_digital + Debito + Credito + PIB_pc_PPA + Asia_Este + Am_lat,datos_int)

#Pronóstico para CR
pred_int_con_cont_aicc_con_reg<-predict(modelo_int_con_cont_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r,include=TRUE, results='asis'}
# Errores robustos
modelo_int_con_cont_aicc_corr_hc<-coeftest(modelo_int_con_cont_aicc, vcov. = vcovHC(modelo_int_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_aicc_corr_hac<-coeftest(modelo_int_con_cont_aicc, vcov. = vcovHAC(modelo_int_con_cont_aicc, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_aicc, modelo_int_con_cont_aicc_corr_hc,
          type = "html", 
          title = "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```


* **Selección de variables mediante BIC sin efectos fijos de tiempo:**

```{r seleccion BIC int, include=TRUE, results='asis'}
# modelo inicial o saturado
modelo_int_con_cont_bic<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# método BIC
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]


#Ya no se eliminan columnas
controles2<-controles
#print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))
# Estimación del modelo
modelo_int_con_cont_bic=lm(formula = Intercambio ~ Regulacion_intercambio + Cuenta + Credito + Asia_Este + Am_lat, 
    data = datos_int)

modelo_int_con_cont_bic_corr_hc<-coeftest(modelo_int_con_cont_bic, vcov. = vcovHC(modelo_int_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_bic_corr_hac<-coeftest(modelo_int_con_cont_bic, vcov. = vcovHAC(modelo_int_con_cont_bic, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_bic, modelo_int_con_cont_bic_corr_hc, type = "html",
          title = "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

```{r int pronostico bic con controles}
#Pronóstico para CR
pred_int_con_cont_bic_con_reg<-predict(modelo_int_con_cont_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, include=TRUE, results='asis'}
# Modelo con los controles con efectos fijos de tiempo: 
modelo_int_con_cont_ef<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Año_2013 + Año_2014 + 
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_int)

# errores robustos
modelo_int_con_cont_ef_corr_hc<-coeftest(modelo_int_con_cont_ef, vcov. = vcovHC(modelo_int_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_corr_hac<-coeftest(modelo_int_con_cont_ef, vcov. = vcovHAC(modelo_int_con_cont_ef, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_con_cont_ef, modelo_int_con_cont_ef_corr_hc,
#          type = "html", title = "Regresión sobre la tasa de intercambio con controles y efectos fijos de tiempo", 
#          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
pred_int_con_cont_ef_con_reg<-predict(modelo_int_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Selección de variables mediante AICc con efectos fijos de tiempo:**

```{r, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_int_con_cont_ef_aicc<-lm(Intercambio ~ Regulacion_intercambio + Año_2010 + 
                                  Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                                  Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                  Cajero_Autom + Crimen + Cuenta + Pago_digital + 
                                  Debito + Credito + Densidad_Pob + Densidad_Neg +
                                  PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de años + regulación
cvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_ef_aicc)

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 19
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#variables a usar
#print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

# Estimación del modelo:
modelo_int_con_cont_ef_aicc=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Credito + Debito + Pago_digital + Asia_Este + Am_lat + 
                                 Año_2013 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                 Año_2021 + Año_2022 + Año_2023 + Año_2024, 
                               data = datos_int)

modelo_int_con_cont_ef_aicc_corr_hc<-coeftest(modelo_int_con_cont_ef_aicc, vcov. = vcovHC(modelo_int_con_cont_ef_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_aicc_corr_hac<-coeftest(modelo_int_con_cont_ef_aicc, vcov. = vcovHAC(modelo_int_con_cont_ef_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_int_con_cont_ef_aicc, modelo_int_con_cont_ef_aicc_corr_hc,type = "html", 
          title = "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

```{r pronostico int con aicc ef tiempo}
#Pronóstico para CR
pred_int_con_cont_ef_aic_con_reg<-predict(modelo_int_con_cont_ef_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```


* **Selección de variables mediante BIC con efectos fijos de tiempo:**

```{r BIC int ef tiempo, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_int_con_cont_bic_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2010 + 
                                  Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                                  Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                  Cajero_Autom + Crimen + Cuenta + Pago_digital + 
                                  Debito + Credito + Densidad_Pob + Densidad_Neg +
                                  PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017",
                       "Año_2018", "Año_2019", "Año_2020", "Año_2021","Año_2022","Año_2023",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables año y regulación
cvar<-13
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_bic_ef)

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]
#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]


# Estimación del modelo
modelo_int_con_cont_ef_bic=lm(Intercambio ~ Regulacion_intercambio + Cuenta + Credito +
                                Asia_Este + Am_lat + Año_2013 + Año_2014 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024,
                              data = datos_int)


modelo_int_con_cont_ef_bic_corr_hc<-coeftest(modelo_int_con_cont_ef_bic, vcov. = vcovHC(modelo_int_con_cont_ef_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_bic_corr_hac<-coeftest(modelo_int_con_cont_ef_bic, vcov. = vcovHAC(modelo_int_con_cont_ef_bic, adjust = TRUE, sandwich = TRUE))
# Visualización de resultados
stargazer(modelo_int_con_cont_ef_bic, modelo_int_con_cont_ef_bic_corr_hc,type = "html", 
          title = "Estimación principal - Modelo BICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

```{r pronostico int con bic ef tiempo}
#Pronóstico para CR
pred_modelo_int_con_cont_bic_ef_con_reg<-predict(modelo_int_con_cont_ef_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```


## Regresiones ajustadas con truncamiento en 0 y en la tasa mínima de intercambio en la muestra:

::: {style="text-align: justify"}
Una crítica a los modelos de regresión lineal anteriores es que no toman en consideración el posible truncamiento de la variable de respuesta. Una variable es truncada cuando no puede observarse su valor después de cierto umbral en otra variable que la define (llamada variable latente). En el caso de las comisiones de intercambio y adquirencia, no es posible observar valores negativos. Igualmente, no debería ser posible observar tasas por debajo del costo de operación. Por ello, se realiza el ejercicio de estimar modelos con un truncamiento de tasas de intercambio en 0 y 0.26 (mínimo valor en la muestra, que corresponde a España).   
:::

### Truncamiento en 0:

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r truncando la variable respuesta en 0, include=TRUE, warning=FALSE}
#Se realiza modelos truncados
#AICc
#Regulacion_intercambio + Cuenta + Credito + Asia_Este + Am_lat
#Truncamiento en 0
modelo_truncado_int_0_aicc<-truncreg(Intercambio ~ Regulacion_intercambio + Cuenta + Pago_digital + Debito + Credito + PIB_pc_PPA + Asia_Este + Am_lat, datos_int, point = 0, direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0_aicc)
#Pronóstico para CR
pred_int_trunc_0_aicc_con_reg<-predict(modelo_truncado_int_0_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:**    

```{r truncado 0 bic int , include=TRUE, warning=FALSE}
#BIC
#Truncamiento en 0
modelo_truncado_int_0_bic<-truncreg(Intercambio ~ Regulacion_intercambio + Cuenta + Credito + Asia_Este + Am_lat,
                                    datos_int, point = 0, direction = "left",
                                    model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0_bic)

#Pronóstico para CR
pred_int_trunc_0_bic_con_reg<-predict(modelo_truncado_int_0_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:** 

```{r truncado 0 aicc int ef tiempo, include=TRUE, warning=FALSE}
#AICc con efectos fijos de tiempo
#Truncamiento en 0

modelo_truncado_int_0_aicc_ef<-truncreg(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Credito + Debito + Pago_digital + Asia_Este + Am_lat + 
                                 Año_2013 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                 Año_2021 + Año_2022 + Año_2023 + Año_2024, data = datos_int,
                                        point = 0, direction = "left", model = TRUE,
                                        y = FALSE, x = FALSE, scaled = TRUE)
# Modelo estimado
summary(modelo_truncado_int_0_aicc_ef)
#Pronóstico para CR
pred_int_trunc_0_aicc_ef_con_reg<-predict(modelo_truncado_int_0_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:** 

```{r truncado 0 bic int ef tiempo, include=TRUE, warning=FALSE}
#BIC
#Truncamiento en 0
modelo_truncado_int_0_bic_ef<-truncreg(Intercambio ~ Regulacion_intercambio + Cuenta + Credito +
                                Asia_Este + Am_lat + Año_2013 + Año_2014 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024, data = datos_int, point = 0,
                                       direction = "left", model = TRUE, y = FALSE, 
                                       x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0_bic_ef)
#Pronóstico para CR
pred_int_trunc_0_bic_ef_con_reg<-predict(modelo_truncado_int_0_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```


### Truncamiento en 0.26:
Luego se trunca en 0.26 (mínimo valor en la muestra, que corresponde a España):  

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:**  

```{r truncar 0.26 int , include=TRUE, warning=FALSE}
#Truncamiento en 0.26 tasa intercambio mínima en la muestra de España

modelo_truncado_int_0.26_aicc<-truncreg(Intercambio ~ Regulacion_intercambio + Cuenta + Pago_digital + Debito + Credito + PIB_pc_PPA + Asia_Este + Am_lat, datos_int, point = 0.26, direction = "left", 
                              model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0.26_aicc)

#Pronóstico para CR
pred_int_trunc_0.26_aicc_con_reg<-predict(modelo_truncado_int_0.26_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:**  

```{r truncado 0.26 bic int , include=TRUE, warning=FALSE}
#Truncado en 0.26
modelo_truncado_int_0.26_bic<-truncreg(Intercambio ~Regulacion_intercambio + Cuenta + Credito + Asia_Este + Am_lat , datos_int, point = 0.26, 
                                       direction = "left", model = TRUE, y = FALSE, 
                                       x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0.26_bic)

#Pronóstico para CR
pred_int_trunc_0.26_bic_con_reg<-predict(modelo_truncado_int_0.26_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]
```


* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:**  

```{r truncado 0.26 aicc int ef tiempo, include=TRUE, warning=FALSE}
#AICc con efectos fijos de tiempo
#Truncamiento en 0.26
modelo_truncado_int_0.26_aicc_ef<-truncreg(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Credito + Debito + Pago_digital + Asia_Este + Am_lat + 
                                 Año_2013 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                 Año_2021 + Año_2022 + Año_2023 + Año_2024, data = datos_int, point = 0.26, 
                                           direction = "left", model = TRUE, y = FALSE,
                                           x = FALSE, scaled = TRUE)
# Modelo estimado
summary(modelo_truncado_int_0.26_aicc_ef)
#Pronóstico para CR
pred_int_trunc_0.26_aicc_ef_con_reg<-predict(modelo_truncado_int_0.26_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:**  

```{r truncado 0.26 bic int ef tiempo, include=TRUE, warning=FALSE}
#Truncado en 0.26
modelo_truncado_int_0.26_bic_ef<-truncreg(Intercambio ~ Regulacion_intercambio + Cuenta + Credito +
                                Asia_Este + Am_lat + Año_2013 + Año_2014 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024, data = datos_int, point = 0.26,
                                       direction = "left", model = TRUE, y = FALSE, 
                                       x = FALSE, scaled = TRUE)
# modelo estimado
summary(modelo_truncado_int_0.26_bic_ef)
#Pronóstico para CR
pred_int_trunc_0.26_bic_ef_con_reg<-predict(modelo_truncado_int_0.26_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]
```


## Transformación logarítmica de la variable dependiente:


```{r, log int sin controles, results='asis', warning=FALSE}
#Con toda la muestra con logaritmo

#Regresión sin controles
modelo_log_int_sin_cont<-lm(log(Intercambio) ~ Regulacion_intercambio, datos_int)

modelo_log_int_sin_cont_corr_hc<-coeftest(modelo_log_int_sin_cont, vcov. = vcovHC(modelo_log_int_sin_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_sin_cont_corr_hac<-coeftest(modelo_log_int_sin_cont, vcov. = vcovHAC(modelo_log_int_sin_cont, adjust = TRUE, sandwich = TRUE))
# Visualización 
#stargazer(modelo_log_int_sin_cont, modelo_log_int_sin_cont_corr_hc, type = "html",
#          title = "Regresión sobre el logaritmo de la tasa de intercambio sin controles",
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")

#Pronóstico para CR
pred_log_int_sin_cont_con_reg<-exp(predict(modelo_log_int_sin_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")])

# * Regresión con todos los controles:  -----
#Estimacion modelo
modelo_log_int_con_cont=lm(formula = log(Intercambio) ~ Regulacion_intercambio + Cajero_Autom + 
    Credito + Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
    Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + 
    Am_lat, data = datos_int)

modelo_log_int_con_cont_corr_hc<-coeftest(modelo_log_int_con_cont, vcov. = vcovHC(modelo_log_int_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_corr_hac<-coeftest(modelo_log_int_con_cont, vcov. = vcovHAC(modelo_log_int_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_log_int_con_cont, modelo_log_int_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre el logaritmo de la tasa de intercambio con todos los controles",
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")

#Pronóstico para CR
pred_log_int_con_cont_con_reg<-exp(predict(modelo_log_int_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")])

# Regresión con todos los controles más efectos fijos de tiempo ----
modelo_log_int_con_cont_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Cajero_Autom + 
                                 Credito + Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob + 
                                 Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + 
                                 Am_lat + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                                 Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_int)
# Errores robustos
modelo_log_int_con_cont_ef_corr_hc<-coeftest(modelo_log_int_con_cont_ef, vcov. = vcovHC(modelo_log_int_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_ef_corr_hac<-coeftest(modelo_log_int_con_cont_ef, vcov. = vcovHAC(modelo_log_int_con_cont_ef, adjust = TRUE, sandwich = TRUE))
#Pronóstico para CR
pred_log_int_con_cont_con_reg_ef<-exp(predict(modelo_log_int_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]
#Visualización
#stargazer(modelo_log_int_con_cont_ef, type = "html",
#          title = "Regresión sobre el logaritmo de la tasa de intercambio con controles y efectos fijos de tiempo",
#          column.labels = c("MCO"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r int aicc sin ef tiempo, include=TRUE, warning=FALSE, results='asis'}
# Modelo con controles sin efectos fijos del tiempo:
#AICc:
modelo_log_int_con_cont_aicc<-lm(log(Intercambio) ~ Regulacion_intercambio + Cajero_Autom +
                                   Crimen + Cuenta + Pago_digital + Debito + Credito + 
                                   Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH +
                                   Valor_prom + Europa + Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta",
                       "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg",
                       "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_log_int_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]
controles1<-controles

#variables a usar
#print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))

# Estimación del modelo seleccionado por aicc
modelo_log_int_con_cont_aicc<-lm(log(Intercambio) ~ Regulacion_intercambio + Crimen +
                                   Cuenta + Densidad_Neg + Densidad_Pob + Europa + Asia_Este, datos_int)
# Errores robustos
modelo_log_int_con_cont_aicc_corr_hc<-coeftest(modelo_log_int_con_cont_aicc, vcov. = vcovHC(modelo_log_int_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_aicc_corr_hac<-coeftest(modelo_log_int_con_cont_aicc, vcov. = vcovHAC(modelo_log_int_con_cont_aicc, adjust = TRUE, sandwich = TRUE))

# Pronóstico para CR
pred_log_int_con_cont_con_reg_aicc<-exp(predict(modelo_log_int_con_cont_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]

# Visualización
stargazer(modelo_log_int_con_cont_aicc, modelo_log_int_con_cont_aicc_corr_hc, type = "html",
          title = "Modelo con transformación logarítmica - Modelo AICc sin efectos fijos de tiempo",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")

```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:** 

```{r int bic sin ef tiempo, include=TRUE, results='asis', warning=FALSE}
# Selección con el criterio BIC
modelo_log_int_con_cont_bic<-lm(log(Intercambio) ~ Regulacion_intercambio + Cajero_Autom +
                                   Crimen + Cuenta + Pago_digital + Debito + Credito + 
                                   Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH +
                                   Valor_prom + Europa + Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_log_int_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}
#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]
#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable:
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]


# Estimación del modelo seleccionado por bic
modelo_log_int_con_cont_bic<-lm(log(Intercambio) ~ Regulacion_intercambio + Cuenta + Densidad_Pob + Europa, datos_int)
# Error robusto
modelo_log_int_con_cont_bic_corr_hc<-coeftest(modelo_log_int_con_cont_bic, vcov. = vcovHC(modelo_log_int_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_bic_corr_hac<-coeftest(modelo_log_int_con_cont_bic, vcov. = vcovHAC(modelo_log_int_con_cont_bic, adjust = TRUE, sandwich = TRUE))
# Pronóstico para CR
pred_log_int_con_cont_con_reg_bic<-exp(predict(modelo_log_int_con_cont_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]

# Visualización
stargazer(modelo_log_int_con_cont_bic, modelo_log_int_con_cont_bic_corr_hc, type = "html",
          title = "Modelo con transformación logarítmica - Modelo BIC sin efectos fijos de tiempo",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")

```

* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:**   

```{r int aicc con ef tiempo, include=TRUE, results='asis', warning=FALSE}
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_log_int_con_cont_aicc_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021  + Año_2022 + Año_2023 + Año_2024 + Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022","Año_2023","Año_2024","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables de años + regulación
cvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_log_int_con_cont_aicc_ef)

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(AICC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

controles3<-controles
# Variables seleccionadas
#print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))

# Se omiten los años 2010 al 2012 por colinealidad.
modelo_log_int_con_cont_aicc_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Año_2013 + Año_2015 +
                                      Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 +
                                      Año_2021 + Año_2022 + Año_2023 + Año_2024 + Cuenta + Credito + Debito + Densidad_Pob + Pago_digital + Europa, datos_int)
# Errores robustos
modelo_log_int_con_cont_aicc_ef_corr_hc<-coeftest(modelo_log_int_con_cont_aicc_ef, vcov. = vcovHC(modelo_log_int_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_aicc_ef_corr_hac<-coeftest(modelo_log_int_con_cont_aicc_ef, vcov. = vcovHAC(modelo_log_int_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))

# Pronóstico para CR
pred_log_int_con_cont_con_reg_aicc_ef<-exp(predict(modelo_log_int_con_cont_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]

# Visualización
stargazer(modelo_log_int_con_cont_aicc_ef, modelo_log_int_con_cont_aicc_ef_corr_hc, type = "html", 
          title = "Modelo con transformación logarítmica - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Intercambio", "Tasa Intercambio"), dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:** 

```{r int bic con ef tiempo, include=TRUE, results='asis', warning=FALSE}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_log_int_con_cont_bic_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021  + Año_2022 + Año_2023 + Año_2024 + Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022","Año_2023","Año_2024","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

cvar<-16
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_log_int_con_cont_bic_ef)

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar)]
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar)]
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+cvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar)]
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Variable eliminada: ",variables_controles[(which.min(BIC)+cvar+1)]))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]
#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar)]
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar)]
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(log(Intercambio) ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(log(Intercambio) ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar)]
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

controles4<-controles
# Variables seleccionadas
#print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))

#m1<-lm(log(Intercambio)~controles4,datos_int)
# Se omiten los años 2010 al 2012 y 2015 por colinealidad.
modelo_log_int_con_cont_bic_ef<-lm(log(Intercambio) ~ Regulacion_intercambio + Año_2013 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Cuenta + Densidad_Pob + Europa, datos_int)
# Errores robustos
modelo_log_int_con_cont_bic_ef_corr_hc<-coeftest(modelo_log_int_con_cont_bic_ef, vcov. = vcovHC(modelo_log_int_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_int_con_cont_bic_ef_corr_hac<-coeftest(modelo_log_int_con_cont_bic_ef, vcov. = vcovHAC(modelo_log_int_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))
# Pronóstico para CR
pred_log_int_con_cont_con_reg_bic_ef<-exp(predict(modelo_log_int_con_cont_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response"))[which(datos$Codigo_Pais=="CRI")]

# Visualización
stargazer(modelo_log_int_con_cont_bic_ef, modelo_log_int_con_cont_bic_ef_corr_hc, type = "html", 
          title = "Modelo con transformación logarítmica - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Intercambio", "Tasa Intercambio"), dep.var.caption = "Variable dependiente")
```

## Inclusión de efectos no lineales en la regresión:

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r no lineal inter aicc, results='asis'}
# creación de variables cuadráticas:
datos_int2<-datos_int %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)

datos<-datos %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)


# Selección variables con AICC:  ----
modelo_int_nolineal_con_cont_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
                                        Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                                        Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                                        Am_lat + Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt +
                                        Credito_sqrt + Debito_sqrt + Densidad_Pob_sqrt + 
                                        Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + 
                                        Pago_digital_sqrt + Valor_prom_sqr, data= datos_int2)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital",
                       "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt",
                       "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt","Densidad_Pob_sqrt",
                       "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt",
                       "Valor_prom_sqr")

controles<- datos_int2 %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_nolineal_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 13
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 14
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
controles1<-controles

# Deja las siguiente variables:
#variables_controles
#print(paste0("Se incluye la siguiente variable: ",variables_controles))

# Estimación del modelo
modelo_int_nolineal_con_cont_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                        Debito + Credito + Asia_Este + Am_lat +
                                        Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Debito_sqrt, data= datos_int2)
# Errores robustos
modelo_int_nolineal_con_cont_aicc_corr_hc<-coeftest(modelo_int_nolineal_con_cont_aicc, 
                                                    vcov. = vcovHC(modelo_int_nolineal_con_cont_aicc, 
                                                                   "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_nolineal_con_cont_aicc_corr_hac<-coeftest(modelo_int_nolineal_con_cont_aicc,
                                                     vcov. = vcovHAC(modelo_int_nolineal_con_cont_aicc, 
                                                     adjust = TRUE, sandwich = TRUE))
# Pronóstico ---- AQUI
# Se le agrega a CR la adquirencia
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_int_nolineal_con_reg_aicc<-predict(modelo_int_nolineal_con_cont_aicc, newdata = data_CR, 
                                        interval = "prediction", level = 0.95, 
                                        type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_int_nolineal_con_cont_aicc, modelo_int_nolineal_con_cont_aicc_corr_hc,
          type = "html", 
          title = "Modelo con efectos no lineales - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```


* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:** 

```{r no lineal BIC sin ef, results='asis'}
# Selección variables con BIC
modelo_int_nolineal_con_cont_bic<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + 
                                        Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                                        Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                                        Am_lat + Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt +
                                        Credito_sqrt + Debito_sqrt + Densidad_Pob_sqrt + 
                                        Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + 
                                        Pago_digital_sqrt + Valor_prom_sqr, data= datos_int2)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital",
                       "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt",
                       "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt","Densidad_Pob_sqrt",
                       "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt",
                       "Valor_prom_sqr")

controles<- datos_int2 %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_nolineal_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 13
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 14
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 15
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 16
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 17
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 18
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int2))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]


#min(BIC)<BIC[1]
# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
#print(paste0("Se incluye la siguiente variable: ","'",variables_controles,"' "))

# Estimación del modelo seleccinado
modelo_int_nolineal_con_cont_bic=lm(formula = Intercambio ~ Regulacion_intercambio + 
                                      Crimen + Cuenta + Credito + Asia_Este + Am_lat + Cajero_Autom_sqrt + Crimen_sqrt, data = datos_int2)

# Errores robustos
modelo_int_nolineal_con_cont_bic_corr_hc<-coeftest(modelo_int_nolineal_con_cont_bic, 
                                                    vcov. = vcovHC(modelo_int_nolineal_con_cont_bic, 
                                                                   "HC1", adjust = TRUE, sandwich = TRUE))
modelo_int_nolineal_con_cont_bic_corr_hac<-coeftest(modelo_int_nolineal_con_cont_bic,
                                                     vcov. = vcovHAC(modelo_int_nolineal_con_cont_bic, 
                                                     adjust = TRUE, sandwich = TRUE))
# Pronóstico CR
pred_int_nolineal_con_reg_con_cont_bic<-predict(modelo_int_nolineal_con_cont_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
stargazer(modelo_int_nolineal_con_cont_bic,modelo_int_nolineal_con_cont_bic_corr_hc,
      type = "html", 
      title = "Modelo con efectos no lineales - Modelo BIC sin efectos fijos de tiempo", 
      column.labels = c("MCO","MCO HC"), model.names = F,
      dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
      dep.var.caption = "Variable dependiente")

```

* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:** 

```{r, results='asis'}
# Selección variables con AICC:  
modelo_int_nolineal_con_cont_ef_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Año_2010 + Año_2011 + 
                                           Año_2012 + Año_2013 + Año_2014 + Año_2015 + 
                                           Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                           Año_2022 + Año_2023 + Año_2024 + Cajero_Autom + Crimen + Cuenta +
                                           Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                           ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                           Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                           Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                           Valor_prom_sqr, data= datos_int2)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015",
                       "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022", "Año_2023", "Año_2024", "Cajero_Autom", 
                       "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", 
                       "Credito_sqrt", "Debito_sqrt", "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", 
                       "Pago_digital_sqrt", "Valor_prom_sqr")

controles<- datos_int2 %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_nolineal_con_cont_ef_aicc)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 13
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]
#Paso 14
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+13],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 15
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(AICC)<AICC[1]
# El AICc ya no es menor, entonces no se eliminan columnas
controles1<-controles
# Deja las siguiente variables:
#print(paste0("Se incluyen la siguiente variable: ","'",variables_controles,"' "))

#Estimación del modelo con variables seleccionadas por AICc:
# Por problemas de colinealidad se dejan por fuera 2010 al 2012 y 2015: 
modelo_int_nolineal_con_cont_ef_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Año_2013 + 
                                           Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                           Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Cuenta + Debito + Credito + 
                                           ICH + Europa + Crimen_sqrt + Cuenta_sqrt + 
                                           Debito_sqrt + Densidad_Pob_sqrt + ICH_sqrt, 
                                         data = datos_int2)

# Errores robustos
modelo_int_nolineal_con_cont_ef_aicc_corr_hc<-coeftest(modelo_int_nolineal_con_cont_ef_aicc, 
                                                    vcov. = vcovHC(modelo_int_nolineal_con_cont_ef_aicc, 
                                                                   "HC1", adjust = TRUE, sandwich = TRUE))
modelo_int_nolineal_con_cont_ef_aicc_corr_hac<-coeftest(modelo_int_nolineal_con_cont_ef_aicc,
                                                     vcov. = vcovHAC(modelo_int_nolineal_con_cont_ef_aicc, 
                                                     adjust = TRUE, sandwich = TRUE))
# Pronóstico CR
pred_int_nolineal_con_reg_con_cont_aicc_ef<-predict(modelo_int_nolineal_con_cont_ef_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_int_nolineal_con_cont_ef_aicc, modelo_int_nolineal_con_cont_ef_aicc_corr_hc,
          type = "html", 
          title = "Modelo con efectos no lineales - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:** 

```{r , results='asis'}
# Selección variables con BIC y efectos fijos de tiempo: ----
modelo_int_nolineal_con_cont_ef_bic<-lm(formula = Intercambio ~ Regulacion_intercambio + Año_2010 +
                                          Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + 
                                          Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                          Año_2022 + Año_2023 + Año_2024 +Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + 
                                          Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + 
                                          Valor_prom + Europa + Asia_Este + Am_lat + Cajero_Autom_sqrt +
                                          Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt +
                                          Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt +
                                          Pago_digital_sqrt + Valor_prom_sqr, data= datos_int2)

variables_controles<-c("Regulacion_intercambio","Año_2010","Año_2011","Año_2012","Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019","Año_2020", "Año_2021", "Año_2022", "Año_2023", "Año_2024", "Cajero_Autom", "Crimen", "Cuenta","Pago_digital", "Debito","Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt","Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt","Valor_prom_sqr")

controles<- datos_int2 %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_nolineal_con_cont_ef_bic)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]


#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 13
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 14
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]

#Paso 15
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 16
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 17
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int2))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int2))  
}

#min(BIC)<BIC[1]
controles<-controles[,-(which.min(BIC)+13)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+13],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+13)]


# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles
# Deja las siguiente variables:
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles))

#Estimación del modelo con variables seleccionadas por AICc: ----
# Por problemas de colinealidad se dejan por fuera 2010 al 2012 y 2015: 
modelo_int_nolineal_con_cont_ef_bic<-lm(formula = Intercambio ~ Regulacion_intercambio + Año_2013 + 
                                           Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                           Año_2020 + Año_2021 + Año_2022 + Año_2023 + Cuenta + Debito +
                                          ICH + Europa + Crimen_sqrt + Cuenta_sqrt + Debito_sqrt + Densidad_Pob_sqrt, 
                                        data = datos_int2)
# Errores robustos
modelo_int_nolineal_con_cont_ef_bic_corr_hc<-coeftest(modelo_int_nolineal_con_cont_ef_bic, 
                                                       vcov. = vcovHC(modelo_int_nolineal_con_cont_ef_bic, 
                                                                      "HC1", adjust = TRUE, sandwich = TRUE))
modelo_int_nolineal_con_cont_ef_bic_corr_hac<-coeftest(modelo_int_nolineal_con_cont_ef_bic,
                                                        vcov. = vcovHAC(modelo_int_nolineal_con_cont_ef_bic, 
                                                                        adjust = TRUE, sandwich = TRUE))
# Pronóstico CR
pred_int_nolineal_con_reg_con_cont_bic_ef<<-predict(modelo_int_nolineal_con_cont_ef_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_int_nolineal_con_cont_ef_bic, modelo_int_nolineal_con_cont_ef_bic_corr_hc,
          type = "html", 
          title = "Modelo con efectos no lineales - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

## Método Bootstrap:

En este caso se usan los criterios de información AIC (no tiene corrección de muestras pequeñas) y BIC para su comparación. Ambos criterios brindan resultados similares. Además, no se incluyen efectos fijos de tiempo. Esto difiere respecto a su implementación en Stata, donde también se estiman también los modelos que incorporan efectos fijos de tiempo, y se utiliza el AICc. Sin embargo, los resultados son similares. 

```{r, message=FALSE}
remuestreos=1000
#AIC:
#Modelo con controles:
set.seed(1)
library(bootStepAIC)
m_boot_aic=boot.stepAIC(modelo_int_con_cont,datos_int,B=remuestreos)
# Pronóstico CR:
predicciones_boot_con_reg_aic=as.numeric()
for(i in 1:1000){
  coefs_aic=m_boot_aic$BootStepAIC[[i]]
  predicciones_boot_con_reg_aic[i]=predict(coefs_aic,newdata=data_CR,type="response")[which(datos$Codigo_Pais=="CRI")]
}
pred_int_boot_con_cont_con_reg_aic=median(predicciones_boot_con_reg_aic)
# Visualización
resul<-as.data.frame(cbind(mean(predicciones_boot_con_reg_aic),
                           median(predicciones_boot_con_reg_aic),
                           mean(predicciones_boot_con_reg_aic)-1.96*sd(predicciones_boot_con_reg_aic),
                           mean(predicciones_boot_con_reg_aic)+1.96*sd(predicciones_boot_con_reg_aic)
                           )) %>% round(3)
names(resul)<-c("Promedio","Mediana","2.5%","97.5%")
DT::datatable(resul,rownames="Tasa de intercambio",caption = "Resultados de bootstrap para modelo lineal de intercambio con la selección de controles por AIC", options = list(dom = 't'))
# Gráfica de los pronósticos
library(plotly)
fig<-plot_ly(x = ~predicciones_boot_con_reg_aic, type = "histogram") %>%
  layout(xaxis = list(title = "Comisión de intercambio"),
         yaxis = list(title ="Frecuencia"),
         title = "Pronóstico AIC con boostrap (n=1000)")
fig
```

```{r}
# Selección con BIC
#Modelo con controles:
n=nrow(datos_int)
remuestreos=1000
m_boot_bic=boot.stepAIC(modelo_int_con_cont,datos_int,B=remuestreos,k=log(n))
predicciones_boot_sin_reg_bic=as.numeric()
# Pronóstico CR:
predicciones_boot_con_reg_bic=as.numeric()
for(i in 1:1000){
  coefs_bic=m_boot_bic$BootStepAIC[[i]]
  predicciones_boot_con_reg_bic[i]=predict(coefs_bic,newdata=data_CR,type="response")[which(datos$Codigo_Pais=="CRI")]
}
pred_int_boot_con_cont_con_reg_bic=median(predicciones_boot_con_reg_bic)
# Visualización
resul<-as.data.frame(cbind(mean(predicciones_boot_con_reg_bic),
                           median(predicciones_boot_con_reg_bic),
                           mean(predicciones_boot_con_reg_bic)-1.96*sd(predicciones_boot_con_reg_bic),
                           mean(predicciones_boot_con_reg_bic)+1.96*sd(predicciones_boot_con_reg_bic)
                           )) %>% round(3)
names(resul)<-c("Promedio","Mediana","2.5%","97.5%")
DT::datatable(resul,rownames="Tasa de intercambio",caption = "Resultados de bootstrap para modelo lineal de intercambio con la selección de controles por BIC", options = list(dom = 't'))
# Gráfica de los pronósticos
fig<-plot_ly(x = ~predicciones_boot_con_reg_bic, type = "histogram") %>%
  layout(xaxis = list(title = "Comisión de intercambio"),
         yaxis = list(title ="Frecuencia"),
         title = "Pronóstico BIC con boostrap (n=1000)")
fig
```


## Regresión Robusta:

::: {style="text-align: justify"}
En este caso, pueden existir diferencias en la regresión respecto a los resultados en Stata debido a que el comando “rreg” en Stata combina dos funciones de ponderación, los pesos Huber y Biweights (<https://www.stata.com/manuals13/rrreg.pdf>). Por su parte, el comando “rlm” de R implementa cada ponderación por separado, y en este ejercicio se utiliza los pesos Huber (<https://www.rdocumentation.org/packages/MASS/versions/7.3-58.1/topics/rlm>). Sin embargo, las comisiones esperadas obtenidas para Costa Rica son similares. 
:::

```{r, results='asis',warning=FALSE}
# Se mantienen los mismos modelos seleccionados en secciones previas
# Estimación del modelo seleccionado con controles AICC
modelo_robusto_int_con_cont_aicc<-rlm(Intercambio ~ Regulacion_intercambio + Cuenta + Pago_digital + Debito + Credito + PIB_pc_PPA + Asia_Este + Am_lat, 
                                      datos_int,method="MM", maxit=100)
#Visualización
stargazer(modelo_robusto_int_con_cont_aicc, type = "html", 
          title = "Regresión robusta - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")

# Pronósticos CR
pred_int_con_cont_con_reg_robusto_aicc=predict(modelo_robusto_int_con_cont_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Estimación del modelo seleccionado con controles BIC
# Se mantiene la selección del modelo lineal con el criterio BIC
modelo_robusto_int_con_cont_bic<-rlm(Intercambio ~ Regulacion_intercambio + Cuenta + Credito + Asia_Este + Am_lat, 
                                     data = datos_int,method="MM", maxit=100)

#Visualización
stargazer(modelo_robusto_int_con_cont_bic, type = "html", 
          title = "Regresión robusta - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")

# Pronóstico CR:
pred_int_con_cont_con_reg_robusto_bic<-predict(modelo_robusto_int_con_cont_bic,newdata = data_CR,interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]

# Selección modelo con AICc y efectos fijos de tiempo:
# Se omiten los años 2010 al 2012 y 2014 por colinealidad.
modelo_robusto_int_con_cont_aicc_ef<-rlm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Credito + Debito + Pago_digital + Asia_Este + Am_lat + 
                                 Año_2013 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                 Año_2021 + Año_2022 + Año_2023 + Año_2024,
                                         data = datos_int, method="MM", maxit=100)

#Visualización
stargazer(modelo_robusto_int_con_cont_aicc_ef, type = "html", 
          title = "Regresión robusta - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
# Pronósticos CR
pred_int_con_cont_con_reg_robusto_aicc_ef=predict(modelo_robusto_int_con_cont_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Selección modelo con BIC y efectos fijos de tiempo:
# Se omiten los años 2010 al 2012 y 2014 por colinealidad.
modelo_robusto_int_con_cont_bic_ef<-rlm(Intercambio ~ Regulacion_intercambio + Cuenta + Credito +
                                Asia_Este + Am_lat + Año_2013 + Año_2014 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024, 
                                        data = datos_int, method="MM", maxit=100)
#Visualización
stargazer(modelo_robusto_int_con_cont_bic_ef, type = "html", 
          title = "Regresión robusta - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), dep.var.caption = "Variable dependiente")
# Pronósticos CR
pred_int_con_cont_con_reg_robusto_bic_ef=predict(modelo_robusto_int_con_cont_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```


## Omitiendo al Espacio Económico Europeo (EEE) de la estimación:

```{r, include=TRUE, results='asis'}
#Se filtran los datos para excluir países del EEE
datos_sin_EEE<-datos_int[datos_int$EEE != 1,]
#Regresión sin controles
modelo_int_sin_cont_sin_EEE<-lm(Intercambio ~ Regulacion_intercambio, datos_sin_EEE)

modelo_int_sin_cont_sin_EEE_corr_hc<-coeftest(modelo_int_sin_cont_sin_EEE, vcov. = vcovHC(modelo_int_sin_cont_sin_EEE, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_sin_cont_sin_EEE_corr_hac<-coeftest(modelo_int_sin_cont_sin_EEE, vcov. = vcovHAC(modelo_int_sin_cont_sin_EEE, adjust = TRUE, sandwich = TRUE))
# visualización
#stargazer(modelo_int_sin_cont_sin_EEE, modelo_int_sin_cont_sin_EEE_corr_hc, type = "html",
#          title = "Regresión sobre la tasa de intercambio sin controles y sin EEE", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico CR
#Sin regulación
pred_int_con_cont_con_reg_con_EEE<-predict(modelo_int_sin_cont_sin_EEE, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, include=TRUE, results='asis'}
modelo_int_con_cont_sin_EEE=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat, datos_sin_EEE)

#Visualización
#stargazer(modelo_int_con_cont_sin_EEE, type = "html",
#          title = "Regresión sobre la tasa de intercambio con controles y sin EEE", 
#          column.labels = c("MCO"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico CR:
pred_int_con_cont_con_reg_sin_EEE<-predict(modelo_int_con_cont_sin_EEE, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r}
#Regresión con todos los controles más efectos fijos de tiempo
modelo_int_con_cont_sin_EEE_ef=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Año_2013 + Año_2014 + 
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_sin_EEE)
#summary(modelo_int_con_cont_sin_EEE_ef)
#Pronóstico CR:
pred_int_con_cont_con_reg_con_EEE_ef<-predict(modelo_int_con_cont_sin_EEE_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:**   

```{r}
# Selección con AICc
datos_sin_EEE<-datos_int[datos_int$EEE != 1,]
datos_sin_EEE<-datos_sin_EEE %>% na.omit()
# Modelo inicial
modelo_int_con_cont_sin_EEE_aicc<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat, datos_sin_EEE)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_sin_EEE %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_sin_EEE_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]


# Estimación modelo seleccionado
modelo_int_con_cont_sin_EEE_aicc=lm(Intercambio ~ Regulacion_intercambio + Crimen + 
    Cuenta + Credito + Debito + Asia_Este + Am_lat, data = datos_sin_EEE)

# Pronóstico CR
pred_int_con_cont_con_reg_sin_EEE_aicc<-predict(modelo_int_con_cont_sin_EEE_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, results='asis'}
# Errores robustos
modelo_int_con_cont_sin_EEE_aicc_corr_hc<-coeftest(modelo_int_con_cont_sin_EEE_aicc, vcov. = vcovHC(modelo_int_con_cont_sin_EEE_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_sin_EEE_aicc_corr_hac<-coeftest(modelo_int_con_cont_sin_EEE_aicc, vcov. = vcovHAC(modelo_int_con_cont_sin_EEE_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_int_con_cont_sin_EEE_aicc, modelo_int_con_cont_sin_EEE_aicc_corr_hc, type = "html",
          title = "Sin el EEE - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:** 

```{r,echo = FALSE, results = 'hide'}
#Modelo con controles y sin efectos del tiempo:
# BIC
modelo_int_con_cont_sin_EEE_bic = modelo_int_con_cont_sin_EEE
m1<-step(modelo_int_con_cont_sin_EEE_bic,k=log(n))
# Estimación del modelo
modelo_int_con_cont_sin_EEE_bic<-m1
#modelo_int_con_cont_sin_EEE_bic=lm(formula = Intercambio ~ Regulacion_intercambio + Crimen + Cuenta + Debito  + Credito + Asia_Este +  Am_lat, data = datos_sin_EEE)
# Pronóstico CR
pred_int_con_cont_con_reg_sin_EEE_BIC<-predict(modelo_int_con_cont_sin_EEE_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, results='asis'}
modelo_int_con_cont_sin_EEE_bic_corr_hc<-coeftest(modelo_int_con_cont_sin_EEE_bic, vcov. = vcovHC(modelo_int_con_cont_sin_EEE_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_sin_EEE_bic_corr_hac<-coeftest(modelo_int_con_cont_sin_EEE_bic, vcov. = vcovHAC(modelo_int_con_cont_sin_EEE_bic, adjust = TRUE, sandwich = TRUE))


stargazer(modelo_int_con_cont_sin_EEE_bic, modelo_int_con_cont_sin_EEE_bic_corr_hc, type = "html",
          title = "Sin el EEE - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```


* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:**     

```{r}
#Selección con AICc
datos_sin_EEE<-datos_sin_EEE %>% na.omit()
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_int_con_cont_sin_EEE_aicc_ef<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 +
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_sin_EEE)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014",
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021",
                       "Año_2022", "Año_2023","Año_2024","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito",
                       "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")
controles<- datos_sin_EEE %>% dplyr::select(c(variables_controles)) %>% as.matrix()

# cantidad de años + regulacion
nvar=16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_sin_EEE_aicc_ef)

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#Se elimina la siguiente columna
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#Se elimina la siguiente columna
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Intercambio) ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#Se elimina la siguiente columna
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#Se elimina la siguiente columna
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#Se elimina la siguiente columna
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(AICC)<AICC[1]
#Se elimina la siguiente columna
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}
#min(AICC)<AICC[1]
#Se elimina la siguiente columna
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}
#min(AICC)<AICC[1]
#Se elimina la siguiente columna
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

controles3<-controles
# variables seleccionadas
#print(paste0("Se incluyen las siguientes variables: ",variables_controles))
#variables_controles

# Estimación modelo seleccionado:
# No se usa los datos del 2010 al 2013 por colinealidad
modelo_int_con_cont_sin_EEE_aicc_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2013 + 
                                          Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                          Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                          Crimen + Cuenta + Debito + Credito + Asia_Este + Am_lat,
                                        datos_sin_EEE)
# Pronóstico CR
pred_int_con_cont_con_reg_sin_EEE_ef_aic<-predict(modelo_int_con_cont_sin_EEE_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, results='asis'}
# Errores robustos
modelo_int_con_cont_sin_EEE_aicc_ef_corr_hc<-coeftest(modelo_int_con_cont_sin_EEE_aicc_ef, vcov. = vcovHC(modelo_int_con_cont_sin_EEE_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_sin_EEE_aicc_ef_corr_hac<-coeftest(modelo_int_con_cont_sin_EEE_aicc_ef, vcov. = vcovHAC(modelo_int_con_cont_sin_EEE_aicc_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_int_con_cont_sin_EEE_aicc_ef, modelo_int_con_cont_sin_EEE_aicc_ef_corr_hc, type = "html",
          title = "Sin el EEE - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```


* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:**     

```{r}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_int_con_cont_sin_EEE_bic_ef<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 +
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_sin_EEE)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014",
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021",
                       "Año_2022", "Año_2023","Año_2024","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito",
                       "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")

controles<- datos_sin_EEE %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables de años + regulacion
nvar<-16
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_sin_EEE_bic_ef)

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_sin_EEE))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_sin_EEE))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
controles4<-controles

#Variables a usar
#print(paste0("Se incluyen las siguientes variables: ",variables_controles))

# Estimación del modelo: Por problemas de multicolinealidad se quitan los años del 2010 al 2013
modelo_int_con_cont_sin_EEE_bic_ef<-lm(Intercambio ~ Regulacion_intercambio + Año_2013 +
                                         Año_2015 + Año_2016 + Año_2017 + 
                                         Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                         Crimen + Cuenta + Debito + Credito +
                                        Asia_Este + Am_lat, datos_sin_EEE)
# Pronóstico CR
pred_int_con_cont_con_reg_sin_EEE_bic_ef<-predict(modelo_int_con_cont_sin_EEE_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```


```{r, results='asis'}

modelo_int_con_cont_sin_EEE_bic_corr_hc<-coeftest(modelo_int_con_cont_sin_EEE_bic_ef, vcov. = vcovHC(modelo_int_con_cont_sin_EEE_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_sin_EEE_bic_ef_corr_hac<-coeftest(modelo_int_con_cont_sin_EEE_bic_ef, vcov. = vcovHAC(modelo_int_con_cont_sin_EEE_bic_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_int_con_cont_sin_EEE_bic_ef, modelo_int_con_cont_sin_EEE_bic_corr_hc, type = "html",
          title = "Sin el EEE - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

## Restringiendo la muestra a solo países regulados:

```{r, include=TRUE, results='asis'}
# Solo con los países regulados
datos_int_reg=datos_int[datos_int$Regulacion_intercambio==1,]

#Usando todos los controles:
modelo_int_reg_con_cont=lm(Intercambio ~ Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat,datos_int_reg)

modelo_int_reg_con_cont_corr_hc<-coeftest(modelo_int_reg_con_cont, vcov. = vcovHC(modelo_int_reg_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_reg_con_cont_corr_hac<-coeftest(modelo_int_reg_con_cont, vcov. = vcovHAC(modelo_int_reg_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_reg_con_cont, modelo_int_reg_con_cont_corr_hc,
#          type = "html", title = "Regresión sobre la tasa de intercambio con todos los controles, solo muestra con países regulados",
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico CR
#Con regulación
pred_int_reg_con_cont<-predict(modelo_int_reg_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Regresión con todos los controles más efectos fijos de tiempo  
modelo_int_reg_con_cont_ef=lm(Intercambio ~ Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Año_2013 + Año_2014 + 
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024,datos_int_reg)
#Con regulación
pred_int_reg_con_cont_ef<-predict(modelo_int_reg_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```


* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r , results='asis'}
# Modelo inicial
modelo_int_rest_reg_con_cont_aicc<-lm(formula = Intercambio ~ Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat, datos_int_reg)

variables_controles<-c("Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_rest_reg_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable:
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación del modelo seleccionado
modelo_int_reg_con_cont_aicc=lm(Intercambio ~ Crimen + Credito + Densidad_Pob + PIB_pc_PPA + Pago_digital + Valor_prom
+ Europa + Am_lat, datos_int_reg)
#summary(modelo_int_reg_con_cont_aicc)
# Pronóstico CR
pred_int_reg_con_cont_aicc<-predict(modelo_int_reg_con_cont_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#pred_int_reg_con_cont_aicc

modelo_int_reg_con_cont_aicc_corr_hc<-coeftest(modelo_int_reg_con_cont_aicc, vcov. = vcovHC(modelo_int_reg_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_bic_ampli_corr_hac<-coeftest(modelo_int_reg_con_cont_aicc, vcov. = vcovHAC(modelo_int_reg_con_cont_aicc, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_reg_con_cont_aicc, modelo_int_reg_con_cont_aicc_corr_hc, type = "html",
          title = "Restringido a países con regulación - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:**  

```{r,echo = FALSE, results = 'hide'}
#Selección con el criterio BIC:
modelo_int_reg_con_cont_bic=modelo_int_reg_con_cont
select.modelo<-step(modelo_int_reg_con_cont_bic,k=log(n))
# Estimación del modelo seleccionado
modelo_int_reg_con_cont_bic<-select.modelo
#modelo_int_reg_con_cont_bic=lm(Intercambio ~ Debito + Credito + Densidad_Pob + Pago_digital + Am_lat + Europa, datos_int_reg)
#summary(modelo_int_reg_con_cont_bic)
# Pronóstico CR
pred_int_reg_con_cont_bic<-predict(modelo_int_reg_con_cont_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#pred_int_reg_con_cont_bic
modelo_int_reg_con_cont_bic_corr_hc<-coeftest(modelo_int_reg_con_cont_bic, vcov. = vcovHC(modelo_int_reg_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))
```


```{r , results='asis'}
modelo_int_reg_con_cont_bic_corr_hac<-coeftest(modelo_int_reg_con_cont_bic, vcov. = vcovHAC(modelo_int_reg_con_cont_bic, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_reg_con_cont_bic, modelo_int_reg_con_cont_bic_corr_hc, type = "html",
          title = "Restringido a países con regulación - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:**  

```{r, include=TRUE, results='asis'}
# Selección con AICc
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_int_reg_con_cont_aicc_ef<-lm(Intercambio ~ Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 +
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_int_reg)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014",
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021",
                       "Año_2022", "Año_2023","Año_2024","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito",
                       "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")

controles<- datos_int_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables años + regulación
nvar=16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_reg_con_cont_aicc_ef)

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+nvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+nvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+nvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+nvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+nvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+nvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+nvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+nvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]
controles3<-controles

modelo_int_reg_con_cont_aicc_ef<-lm(Intercambio ~ Año_2014 + 
                                     Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                     Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                     Crimen + Cuenta + Densidad_Pob + Valor_prom + Europa + Am_lat, datos_int_reg)
modelo_int_reg_con_cont_aicc_ef_corr_hc<-coeftest(modelo_int_reg_con_cont_aicc_ef, vcov. = vcovHC(modelo_int_reg_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_reg_con_cont_aicc_ef_corr_hac<-coeftest(modelo_int_reg_con_cont_aicc_ef, vcov. = vcovHAC(modelo_int_reg_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))
# visualización
stargazer(modelo_int_reg_con_cont_aicc_ef, modelo_int_reg_con_cont_aicc_ef_corr_hc,
          type = "html", title = "Restringido a países con regulación - Modelo AICc con efectos fijos de tiempo",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
# Prónostico CR
pred_int_reg_con_cont_ef_aicc<-predict(modelo_int_reg_con_cont_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:** 

```{r, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_int_reg_con_cont_bic_ef<-lm(Intercambio ~ Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 +
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_int_reg)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014",
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021",
                       "Año_2022", "Año_2023","Año_2024","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito",
                       "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")

controles<- datos_int_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

# Cantidad de variables
nvar<-15
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_reg_con_cont_bic_ef)

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+13)], datos_int_reg))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int_reg))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int_reg))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
controles4<-controles
#Variables a usar
#print(paste0("Se deja la siguiente variable: ",variables_controles))

# Se dejan por fuera los años 2010 al 2012 y 2014 por problemas de colinealidad
modelo_int_reg_con_cont_bic_ef<-lm(Intercambio ~ Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                                 Año_2022 + Año_2023 + Año_2024 + 
                                                 Crimen + Cuenta + Densidad_Pob + Valor_prom + Europa + Am_lat, datos_int_reg)

modelo_int_reg_con_cont_bic_ef_corr_hc<-coeftest(modelo_int_reg_con_cont_bic_ef, vcov. = vcovHC(modelo_int_reg_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_reg_con_cont_bic_ef_corr_hac<-coeftest(modelo_int_reg_con_cont_bic_ef, vcov. = vcovHAC(modelo_int_reg_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_reg_con_cont_bic_ef, modelo_int_reg_con_cont_bic_ef_corr_hc, 
          type = "html", title = "Restringido a países con regulación - Modelo BIC con efectos fijos de tiempo",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
# Prónostico CR
pred_int_reg_con_cont_ef_bic<-predict(modelo_int_reg_con_cont_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#pred_int_reg_con_cont_ef_bic
```

## Ampliando la definición de regulación de intercambio o adquirencia:
::: {style="text-align: justify"}

En el análisis principal, la variable regulación hace referencia a regulación en las comisiones de intercambio. Esto se debe a que son relativamente pocos los países que regulan adquirencia. Sin embargo, es posible generar una variable dicotómica que haga referencia a que el país en cuestión tiene regulación sobre intercambio o adquirencia. 

:::

```{r ampliar regulacion}
# Creaci{on de la variable de regulación ampliada
datos<-datos %>% mutate( Regulacion_inter_adq = if_else(datos$Regulacion_intercambio==1 | Regulacion_adquirencia == 1
                                                       ,1,0)
)
#table(datos$Regulacion_inter_adq)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_inter_adq") ]<-1
```

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r}
# Selección con AICc
datos_int<-datos %>% dplyr::select(-Adquirencia) %>% na.omit()
# Estimación modelo
modelo_int_con_cont_aicc_ampli<-lm(formula = Intercambio ~ Regulacion_inter_adq + Cajero_Autom +
                               Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                               Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                               Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_inter_adq", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_aicc_ampli)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 13
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 8
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación
modelo_int_con_cont_aicc_ampli=lm(Intercambio ~ Regulacion_inter_adq + Cuenta + Credito + Debito + PIB_pc_PPA + Pago_digital + Asia_Este + Am_lat,datos_int)
#Pronóstico para CR
pred_int_con_cont_aicc_con_reg_ampli<-predict(modelo_int_con_cont_aicc_ampli, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, include=TRUE, results='asis'}
modelo_int_con_cont_aicc_ampli_corr_hc<-coeftest(modelo_int_con_cont_aicc_ampli, vcov. = vcovHC(modelo_int_con_cont_aicc_ampli, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_aicc_ampli_corr_hac<-coeftest(modelo_int_con_cont_aicc_ampli, vcov. = vcovHAC(modelo_int_con_cont_aicc_ampli, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_aicc_ampli, modelo_int_con_cont_aicc_ampli_corr_hc, type = "html",
          title = "Regulación en intercambio o adquirencia - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:** 

```{r}
#modelo inicial
modelo_int_con_cont_bic_ampli<-lm(Intercambio ~ Regulacion_inter_adq + Cajero_Autom +
                              Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                              Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                              Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_inter_adq", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# método BIC
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_bic_ampli)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

controles2<-controles
#print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))
# Estimación
modelo_int_con_cont_bic_ampli=lm(Intercambio ~ Regulacion_inter_adq + Cuenta + Credito + Asia_Este + Am_lat,datos_int)
#Pronóstico para CR
#Con regulación
pred_int_con_cont_bic_con_reg_ampli<-predict(modelo_int_con_cont_bic_ampli, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, include=TRUE, results='asis'}
modelo_int_con_cont_bic_ampli_corr_hc<-coeftest(modelo_int_con_cont_bic_ampli, vcov. = vcovHC(modelo_int_con_cont_bic_ampli, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_bic_ampli_corr_hac<-coeftest(modelo_int_con_cont_bic_ampli, vcov. = vcovHAC(modelo_int_con_cont_bic_ampli, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_bic_ampli, modelo_int_con_cont_bic_ampli_corr_hc, type = "html",
          title = "Regulación en intercambio o adquirencia - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```


* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:** 


```{r, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_int_con_cont_ef_aicc_amp<-lm(Intercambio ~ Regulacion_inter_adq + Año_2010 + 
                                  Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                                  Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                  Cajero_Autom + Crimen + Cuenta + Pago_digital + 
                                  Debito + Credito + Densidad_Pob + Densidad_Neg +
                                  PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_inter_adq", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de años + regulación
cvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_ef_aicc_amp)

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 19
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

controles3<-controles

#variables a usar
#print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

# Estimación del modelo:
modelo_int_con_cont_ef_aicc_amp=lm(Intercambio ~ Regulacion_inter_adq + Cuenta + Credito + Debito + Pago_digital + Asia_Este + Am_lat + 
                                 Año_2013 + Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                 Año_2021 + Año_2022 + Año_2023 + Año_2024, 
                               data = datos_int)

modelo_int_con_cont_ef_aicc_amp_corr_hc<-coeftest(modelo_int_con_cont_ef_aicc_amp, vcov. = vcovHC(modelo_int_con_cont_ef_aicc_amp, "HC1",
                                                                                                  adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_aicc_amp_corr_hac<-coeftest(modelo_int_con_cont_ef_aicc_amp, vcov. = vcovHAC(modelo_int_con_cont_ef_aicc_amp, 
                                                                                                    adjust = TRUE, sandwich = TRUE))

stargazer(modelo_int_con_cont_ef_aicc_amp, modelo_int_con_cont_ef_aicc_amp_corr_hc,type = "html", 
          title = "Regulación en intercambio o adquirencia - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
pred_modelo_int_con_cont_aicc_ef_amp_con_reg<-predict(modelo_int_con_cont_ef_aicc_amp, newdata = data_CR, interval = "prediction", 
                                                     level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:** 

```{r, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_int_con_cont_bic_ef_amp<-lm(Intercambio ~ Regulacion_inter_adq + Año_2010 + 
                                  Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                                  Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                  Cajero_Autom + Crimen + Cuenta + Pago_digital + 
                                  Debito + Credito + Densidad_Pob + Densidad_Neg +
                                  PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_int)

variables_controles<-c("Regulacion_inter_adq", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables año y regulación
cvar<-16
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_bic_ef_amp)

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]
#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]


controles4<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación del modelo
modelo_int_con_cont_ef_bic=lm(Intercambio ~ Regulacion_inter_adq + Cuenta + Credito +
                                Asia_Este + Am_lat + Año_2013 + Año_2014 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024,
                              data = datos_int)


modelo_int_con_cont_ef_bic_corr_hc<-coeftest(modelo_int_con_cont_ef_bic, vcov. = vcovHC(modelo_int_con_cont_ef_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_bic_corr_hac<-coeftest(modelo_int_con_cont_ef_bic, vcov. = vcovHAC(modelo_int_con_cont_ef_bic, adjust = TRUE, sandwich = TRUE))
# Visualización de resultados
stargazer(modelo_int_con_cont_ef_bic, modelo_int_con_cont_ef_bic_corr_hc,type = "html", 
          title = "Regulación en intercambio o adquirencia - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
pred_modelo_int_con_cont_bic_ef_amp_con_reg<-predict(modelo_int_con_cont_ef_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

## Utilizando las características observadas más recientes para cada país:

```{r}
library(dplyr)
datos_2023=read_excel("D:/Documentos Usuarios/RODRIGUEZGJ/OneDrive - Banco Central de Costa Rica/Documentos/Base_datos_adquirencia_intercambio_2023.xlsx")
datos_2023=datos_2023[,-5]
datos_2023=na.omit(datos_2023)
```


```{r , include=TRUE, results='asis'}
modelo_int_sin_cont_2023<-lm(Intercambio ~ Regulacion_intercambio, datos_2023)

# Errores robustos
modelo_int_sin_cont_corr_2023_hc<-coeftest(modelo_int_sin_cont_2023, vcov. = vcovHC(modelo_int_sin_cont_2023, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_sin_cont_corr_2023_hac<-coeftest(modelo_int_sin_cont_2023, vcov. = vcovHAC(modelo_int_sin_cont_2023, adjust = TRUE, sandwich = TRUE))
# Visualización
#stargazer(modelo_int_sin_cont_2023, modelo_int_sin_cont_corr_2023_hc, type = "html", 
 #         title = "Estimación principal - Modelo sin controles", 
  #        column.labels = c("MCO","MCO HC"), model.names = F, 
   #       dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
    #      dep.var.caption = "Variable dependiente")
```

```{r}
#Pronóstico para CR
pred_int_sin_cont_con_reg_2023<-predict(modelo_int_sin_cont_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r modelo con controles 2023, include=TRUE, results='asis'}
# Modelo con los controles
modelo_int_con_cont_2023<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                          Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_2023)
# Errores robustos
modelo_int_con_cont_corr_2023_hc<-coeftest(modelo_int_con_cont_2023, vcov. = vcovHC(modelo_int_con_cont_2023, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_corr_2023_hac<-coeftest(modelo_int_con_cont_2023, vcov. = vcovHAC(modelo_int_con_cont_2023, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_con_cont, modelo_int_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre la tasa de intercambio con todos los controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
pred_int_con_cont_con_reg_2023<-predict(modelo_int_con_cont_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r seleccion aicc int 2023, include=TRUE, results='asis', warning=FALSE}
# Selección con AICc
modelo_int_con_cont_aicc_2023<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_2023)


variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_2023 %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_aicc_2023)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 13
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 8
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}
#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
```

```{r}
# Estimación
modelo_int_con_cont_aicc_2023=lm(Intercambio ~ Regulacion_intercambio + Cuenta + Crimen + Credito + Asia_Este + Am_lat,datos_2023)

#Pronóstico para CR
pred_int_con_cont_aicc_con_reg_2023<-predict(modelo_int_con_cont_aicc_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r,include=TRUE, results='asis'}
# Errores robustos
modelo_int_con_cont_aicc_corr_2023_hc<-coeftest(modelo_int_con_cont_aicc_2023, vcov. = vcovHC(modelo_int_con_cont_aicc_2023, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_aicc_corr_2023_hac<-coeftest(modelo_int_con_cont_aicc_2023, vcov. = vcovHAC(modelo_int_con_cont_aicc_2023, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_aicc_2023, modelo_int_con_cont_aicc_corr_2023_hc,
          type = "html", 
          title = "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:** 

```{r seleccion BIC int 2023, include=TRUE, results='asis'}
# modelo inicial o saturado
modelo_int_con_cont_bic_2023<-lm(formula = Intercambio ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_2023)


variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_2023 %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# método BIC
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_bic_2023)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Ya no se eliminan columnas
controles2<-controles
#print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))
# Estimación del modelo
modelo_int_con_cont_bic_2023=lm(formula = Intercambio ~ Regulacion_intercambio + Crimen + Cuenta + Credito + Asia_Este + Am_lat, 
    data = datos_2023)

#Pronóstico para CR
pred_int_con_cont_bic_con_reg_2023<-predict(modelo_int_con_cont_bic_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]


modelo_int_con_cont_bic_corr_2023_hc<-coeftest(modelo_int_con_cont_bic_2023, vcov. = vcovHC(modelo_int_con_cont_bic_2023, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_bic_corr_2023_hac<-coeftest(modelo_int_con_cont_bic_2023, vcov. = vcovHAC(modelo_int_con_cont_bic_2023, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_bic_2023, modelo_int_con_cont_bic_corr_2023_hc, type = "html",
          title = "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

## Regresión lineal múltiple con variables propuestas por el Fondo Monetario Internacional (FMI):

```{r modelo con controles FMI, include=TRUE, results='asis'}
# Modelo con los controles
modelo_int_con_cont_FMI<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                          Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat + Margen_neto + Concentracion_bancaria, datos_int)
# Errores robustos
modelo_int_con_cont_corr_FMI_hc<-coeftest(modelo_int_con_cont_FMI, vcov. = vcovHC(modelo_int_con_cont_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_corr_FMI_hac<-coeftest(modelo_int_con_cont_FMI, vcov. = vcovHAC(modelo_int_con_cont_FMI, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_con_cont, modelo_int_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre la tasa de intercambio con todos los controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
pred_int_con_cont_con_reg_FMI<-predict(modelo_int_con_cont_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r seleccion aicc int FMI, include=TRUE, results='asis', warning=FALSE}
# Selección con AICc
datos_int<-datos %>% dplyr::select(-Adquirencia) %>% na.omit()

modelo_int_con_cont_aicc_FMI<-modelo_int_con_cont_FMI


variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat","Margen_neto","Concentracion_bancaria")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_aicc_FMI)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 13
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 8
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

```

```{r}
# Estimación
modelo_int_con_cont_aicc_FMI=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Credito + Densidad_Neg + Asia_Este + Am_lat + Margen_neto,datos_int)

#Pronóstico para CR
pred_int_con_cont_aicc_con_reg_FMI<-predict(modelo_int_con_cont_aicc_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r,include=TRUE, results='asis'}
# Errores robustos
modelo_int_con_cont_aicc_corr_FMI_hc<-coeftest(modelo_int_con_cont_aicc_FMI, vcov. = vcovHC(modelo_int_con_cont_aicc_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_aicc_corr_FMI_hac<-coeftest(modelo_int_con_cont_aicc_FMI, vcov. = vcovHAC(modelo_int_con_cont_aicc_FMI, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_aicc_FMI, modelo_int_con_cont_aicc_corr_FMI_hc,
          type = "html", 
          title = "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:** 

```{r seleccion BIC int FMI, include=TRUE, results='asis'}
# modelo inicial o saturado
modelo_int_con_cont_bic_FMI<-modelo_int_con_cont_FMI

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat","Margen_neto","Concentracion_bancaria")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# método BIC
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_bic_FMI)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Ya no se eliminan columnas
controles2<-controles
#print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))
# Estimación del modelo
modelo_int_con_cont_bic_FMI=lm(formula = Intercambio ~ Regulacion_intercambio + Cuenta + Credito + Asia_Este + Am_lat + Margen_neto, 
    data = datos_int)

modelo_int_con_cont_bic_corr_FMI_hc<-coeftest(modelo_int_con_cont_bic_FMI, vcov. = vcovHC(modelo_int_con_cont_bic_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_bic_corr_FMI_hac<-coeftest(modelo_int_con_cont_bic_FMI, vcov. = vcovHAC(modelo_int_con_cont_bic_FMI, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_int_con_cont_bic_FMI, modelo_int_con_cont_bic_corr_FMI_hc, type = "html",
          title = "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

```{r int pronostico bic con controles FMI}
#Pronóstico para CR
pred_int_con_cont_bic_con_reg_FMI<-predict(modelo_int_con_cont_bic_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, include=TRUE, results='asis'}
# Modelo con los controles con efectos fijos de tiempo: 
modelo_int_con_cont_ef_FMI<-lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Margen_neto + Concentracion_bancaria + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 +
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_int)

# errores robustos
modelo_int_con_cont_ef_corr_FMI_hc<-coeftest(modelo_int_con_cont_ef_FMI, vcov. = vcovHC(modelo_int_con_cont_ef_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_corr_FMI_hac<-coeftest(modelo_int_con_cont_ef_FMI, vcov. = vcovHAC(modelo_int_con_cont_ef_FMI, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_con_cont_ef, modelo_int_con_cont_ef_corr_hc,
#          type = "html", title = "Regresión sobre la tasa de intercambio con controles y efectos fijos de tiempo", 
#          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
pred_int_con_cont_ef_con_reg_FMI<-predict(modelo_int_con_cont_ef_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:** 

```{r, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_int_con_cont_ef_aicc_FMI<-modelo_int_con_cont_ef_FMI

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat","Margen_neto","Concentracion_bancaria")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de años + regulación
cvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_con_cont_ef_aicc_FMI)

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 19
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#variables a usar
#print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

# Estimación del modelo:
modelo_int_con_cont_ef_aicc_FMI=lm(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Credito + Margen_neto + Asia_Este + Am_lat + 
                                 Año_2013 + Año_2014 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                 Año_2021 + Año_2022 + Año_2023 + Año_2024, 
                               data = datos_int)

modelo_int_con_cont_ef_aicc_corr_FMI_hc<-coeftest(modelo_int_con_cont_ef_aicc_FMI, vcov. = vcovHC(modelo_int_con_cont_ef_aicc_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_aicc_corr_FMI_hac<-coeftest(modelo_int_con_cont_ef_aicc_FMI, vcov. = vcovHAC(modelo_int_con_cont_ef_aicc_FMI, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_int_con_cont_ef_aicc_FMI, modelo_int_con_cont_ef_aicc_corr_FMI_hc,type = "html", 
          title = "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

```{r pronostico int con aicc ef tiempo FMI}
#Pronóstico para CR
pred_int_con_cont_ef_aic_con_reg_FMI<-predict(modelo_int_con_cont_ef_aicc_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:** 

```{r BIC int ef tiempo FMI, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_int_con_cont_bic_ef_FMI<-modelo_int_con_cont_ef_FMI

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat","Margen_neto","Concentracion_bancaria")

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables año y regulación
cvar<-16
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_con_cont_bic_ef_FMI)

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}
#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]
#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+cvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]


# Estimación del modelo
modelo_int_con_cont_ef_bic_FMI=lm(Intercambio ~ Regulacion_intercambio + Cuenta + Credito +
                                Asia_Este + Am_lat + Margen_neto + Año_2013 + Año_2014 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024,
                              data = datos_int)


modelo_int_con_cont_ef_bic_corr_FMI_hc<-coeftest(modelo_int_con_cont_ef_bic_FMI, vcov. = vcovHC(modelo_int_con_cont_ef_bic_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_con_cont_ef_bic_corr_FMI_hac<-coeftest(modelo_int_con_cont_ef_bic_FMI, vcov. = vcovHAC(modelo_int_con_cont_ef_bic_FMI, adjust = TRUE, sandwich = TRUE))
# Visualización de resultados
stargazer(modelo_int_con_cont_ef_bic_FMI, modelo_int_con_cont_ef_bic_corr_FMI_hc,type = "html", 
          title = "Estimación principal - Modelo BICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

```{r pronostico int con bic ef tiempo FMI}
#Pronóstico para CR
pred_modelo_int_con_cont_bic_ef_con_reg_FMI<-predict(modelo_int_con_cont_ef_bic_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

## Regresión sin variables relacionadas al uso de tarjetas:

::: {style="text-align: justify"}
A continuación se muestran los modelos para tasa de intercambio sin considerar las variables control relacionadas con tarjetas. Siguiendo la metodología anterior, se procede a seleccionar las variables con los criterios de información AICc y BIC.  
:::

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r mod int sin tarjetas aicc, results='asis'}
# Selección con AICc
variables_controles<-c("Regulacion_intercambio","Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Europa", "Asia_Este", "Am_lat")
datos_int<-datos %>% dplyr::select(c("Intercambio",variables_controles)) %>% na.omit()
#dim(datos_int)
# Estimación modelo inicial
modelo_int_sin_tarj_aicc<-lm(Intercambio ~ Regulacion_intercambio + Crimen + Densidad_Pob + 
                               Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_int)
controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_sin_tarj_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
#min(AICC)<AICC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación
modelo_int_sin_tarj_aicc<-lm(Intercambio ~ Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg + Europa + Asia_Este + Am_lat, data =  datos_int)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Con regulación
pred_int_sin_tarj_aicc_con_reg<-predict(modelo_int_sin_tarj_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Errores robustos
modelo_int_sin_tarj_aicc_corr_hc<-coeftest(modelo_int_sin_tarj_aicc, vcov. = vcovHC(modelo_int_sin_tarj_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_sin_tarj_aicc_corr_hac<-coeftest(modelo_int_sin_tarj_aicc, vcov. = vcovHAC(modelo_int_sin_tarj_aicc, adjust = TRUE, sandwich = TRUE))

# Visualización
#summary(modelo_int_sin_tarj_aicc)
stargazer(modelo_int_sin_tarj_aicc,modelo_int_sin_tarj_aicc_corr_hc, type = "html", 
          title = "Modelo sin uso de tarjetas - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")

```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:** 


```{r mod int sin tarjetas bic, results='asis'}
# Selección con BIC
variables_controles<-c("Regulacion_intercambio","Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Europa", "Asia_Este", "Am_lat")
datos_int<-datos %>% dplyr::select(c("Intercambio",variables_controles)) %>% na.omit()

# Estimación modelo inicial
modelo_int_sin_tarj_bic<-lm(Intercambio ~ Regulacion_intercambio + Crimen + Densidad_Pob + 
                               Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_int)
controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_sin_tarj_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
#min(BIC)<BIC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
#min(BIC)<BIC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]
#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
#min(BIC)<BIC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i)], datos_int))  
}
#min(BIC)<BIC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]


controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación
modelo_int_sin_tarj_bic<-lm(Intercambio ~ Regulacion_intercambio + Densidad_Pob + Densidad_Neg + Europa + Am_lat, data =  datos_int)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_int_sin_tarj_bic_con_reg<-predict(modelo_int_sin_tarj_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Errores robustos
modelo_int_sin_tarj_bic_corr_hc<-coeftest(modelo_int_sin_tarj_bic, vcov. = vcovHC(modelo_int_sin_tarj_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_sin_tarj_bic_corr_hac<-coeftest(modelo_int_sin_tarj_bic, vcov. = vcovHAC(modelo_int_sin_tarj_bic, adjust = TRUE, sandwich = TRUE))

# Visualización
#summary(modelo_int_sin_tarj_BIC)
stargazer(modelo_int_sin_tarj_bic, modelo_int_sin_tarj_bic_corr_hc, type = "html", 
          title = "Modelo sin uso de tarjetas - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:** 

```{r aicc ef modelo sin tarjetas, results='asis', warning=FALSE}
# Selección con AICc
variables_controles<-c("Regulacion_intercambio","Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Europa", "Asia_Este", "Am_lat")

datos_int<-datos %>% dplyr::select(c("Intercambio",variables_controles)) %>% na.omit()
# Estimación modelo inicial
modelo_int_sin_tarj_aicc_ef<-lm(Intercambio ~ Regulacion_intercambio  + Año_2010 + 
                               Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                               Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                               Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                               Crimen + Densidad_Pob + Densidad_Neg + 
                               PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_int)

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables de años más regulación
nvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_int_sin_tarj_aicc_ef)

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]


controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación del modelo:
modelo_int_sin_tarj_aicc_ef<-lm(Intercambio ~ Regulacion_intercambio  + Año_2010 + Año_2011 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Densidad_Neg + 
                                  Europa + Asia_Este + Am_lat, data =  datos_int)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_int_sin_tarj_aicc_ef_con_reg<-predict(modelo_int_sin_tarj_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Errores robustos
modelo_int_sin_tarj_aicc_ef_corr_hc<-coeftest(modelo_int_sin_tarj_aicc_ef, vcov. = vcovHC(modelo_int_sin_tarj_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_sin_tarj_aicc_ef_corr_hac<-coeftest(modelo_int_sin_tarj_aicc_ef, vcov. = vcovHAC(modelo_int_sin_tarj_aicc_ef, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_int_sin_tarj_aicc_ef, modelo_int_sin_tarj_aicc_ef_corr_hc, type = "html", 
          title = "Modelo sin uso de tarjetas - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:**  

```{r BIC ef modelo sin tarjetas, results='asis', warning=FALSE}
# Selección con BIC
variables_controles<-c("Regulacion_intercambio","Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Europa", "Asia_Este", "Am_lat")

datos_int<-datos %>% dplyr::select(c("Intercambio",variables_controles)) %>% na.omit()

# Estimación modelo inicial
modelo_int_sin_tarj_bic_ef<-lm(Intercambio ~ Regulacion_intercambio  + Año_2010 + 
                                  Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                                  Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                  Crimen + Densidad_Pob + Densidad_Neg + 
                                  PIB_pc_PPA + ICH + Europa + Asia_Este + 
                                  Am_lat, data =  datos_int)

controles<- datos_int %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables
nvar<-16
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_int_sin_tarj_bic_ef)

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Intercambio ~ controles, datos_int))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Intercambio ~ controles[,-c(i+nvar+1)], datos_int))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]


controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación del modelo:
modelo_int_sin_tarj_bic_ef<-lm(Intercambio ~ Regulacion_intercambio  + Año_2010 + Año_2011 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Densidad_Neg + Asia_Este + Am_lat, 
                               data =  datos_int)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_int_sin_tarj_bic_ef_con_reg<-predict(modelo_int_sin_tarj_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Errores robustos
modelo_int_sin_tarj_bic_ef_corr_hc<-coeftest(modelo_int_sin_tarj_bic_ef, vcov. = vcovHC(modelo_int_sin_tarj_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_int_sin_tarj_bic_ef_corr_hac<-coeftest(modelo_int_sin_tarj_bic_ef, vcov. = vcovHAC(modelo_int_sin_tarj_bic_ef, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_int_sin_tarj_bic_ef, modelo_int_sin_tarj_bic_ef_corr_hc, type = "html", 
          title = "Modelo sin uso de tarjetas - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio","Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

## Modelos con Variables Instrumentales:

* **Sin efectos fijos de tiempo:**  

```{r, warning=FALSE, results='asis'}
datos_int<-datos %>% dplyr::select(-Adquirencia) %>% na.omit()
#Sin los efectos del tiempo:
modelo_iv_int<-ivreg(formula = Intercambio ~ Valor_prom + Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg +  PIB_pc_PPA + Europa + Asia_Este + Am_lat | Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + Am_lat + ICH, data = datos_int)

# Prueba de Hausman:
# Al realizar la prueba de Hausman vemos que el valor en p-value es menor a 0.05,lo cual aceptamos la hipótesis alternativa, esto quiere decir que existe endogenidad.
#summary(modelo_iv_int, diagnostics = TRUE)
# Errores robustos
modelo_iv_int_corr_hc<-coeftest(modelo_iv_int, vcov. = vcovHC(modelo_iv_int, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_iv_int_corr_hac<-coeftest(modelo_iv_int, vcov. = vcovHAC(modelo_iv_int, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_iv_int, modelo_iv_int_corr_hc, type = "html", 
          title = "Regresión sobre la tasa de intercambio variables instrumentales", 
          column.labels = c("Instrumental","Instrumental HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
#Como la probabilidad asociada es menor al nivel de significancia de la prueba de Wu-Hausman, determina que hay #endogenidad. Es decir, hay correlación entre las variables y el término de error y por lo tanto, la variable ICH #no es un instrumento débil.
#Pronósticos para Costa Rica
#Con regulación
# data_CR: se le asigna a CR la regulación.
pred_iv_int_con_reg <- predict(modelo_iv_int, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
```

* **Agregando los efectos fijos de tiempo:**  

```{r, warning=FALSE, results='asis'}
# Agregando efectos fijos de tiempo:  
modelo_iv_int_ef<-ivreg(formula = Intercambio ~ Valor_prom + Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg +  PIB_pc_PPA + Europa + Asia_Este + Am_lat + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 | Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + Am_lat + ICH + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024, data = datos)

# Prueba de Hausman:
# Al realizar la prueba de Hausman vemos que el valor en p-value es menor a 0.05,lo cual aceptamos la hipótesis alternativa, esto quiere decir que existe endogenidad.
#summary(modelo_iv_int_ef, diagnostics = TRUE)

#coeftest(modelo_iv_int_ef, vcov.=vcovHAC(modelo_iv_int_ef))

# Errores robustos
modelo_iv_int_ef_corr_hc<-coeftest(modelo_iv_int_ef, vcov. = vcovHC(modelo_iv_int_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_iv_int_ef_corr_hac<-coeftest(modelo_iv_int_ef, vcov. = vcovHAC(modelo_iv_int_ef, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_iv_int_ef, modelo_iv_int_ef_corr_hc, type = "html", 
          title = "Regresión sobre la tasa de intercambio variables instrumentales con efectos fijos de tiempo", 
          column.labels = c("Instrumental","Instrumental HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")

#Pronósticos para Costa Rica
#Con regulación
# data_CR: se le asigna a CR la regulación.
pred_iv_int_ef_con_reg <- predict(modelo_iv_int_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
```

## Modelo de panel de datos con efectos aleatorios:

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:**  

```{r efectos aleatorios aicc, message=FALSE, results='asis'}
# se usa el modelo seleccionado por el AICC
modelo_int_con_cont_aicc_ef_al<-lmer(Intercambio ~ Regulacion_intercambio + Cuenta + Credito +Debito + PIB_pc_PPA + Pago_digital + Asia_Este + Am_lat + (1 | Codigo_Pais),  data = datos_int )


#summary(modelo_int_con_cont_aicc_ef_al)
# almacenando el resultado del modelo para usar los coeficientes
resultado<-summary(modelo_int_con_cont_aicc_ef_al)


#Pronóstico para CR
#Con regulación
# stata agarra la matriz xb para predecir.

#nombre de variables
variables<-names(modelo_int_con_cont_aicc_ef_al@frame)[2:(length(names(modelo_int_con_cont_aicc_ef_al@frame))-1)]
#### pronóstico
Caso_CR<-datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(variables)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pre_int_con_cont_aicc_ef_al<-sum(resultado$coefficients*Caso_CR)
#pre_int_con_cont_aicc_ef_al

# Visualización
stargazer(modelo_int_con_cont_aicc_ef_al, type = "html", 
          title = "Modelo efectos aleatorios - AICc sin efectos fijos de tiempo", 
          column.labels = c("Efectos Aleatorios AICc"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:**  

```{r efectos aleatorios bic, message=FALSE, results='asis'}
# se usa el modelo seleccionado por el BIC
modelo_int_con_cont_bic_ef_al<-lmer(Intercambio ~ Regulacion_intercambio + Cuenta + Credito + Asia_Este + Am_lat + (1 | Codigo_Pais), 
                                     data = datos_int )


#summary(modelo_int_con_cont_bic_ef_al)
# almacenando el resultado del modelo para usar los coeficientes
resultado<-summary(modelo_int_con_cont_bic_ef_al)


#Pronóstico para CR
#Con regulación
# stata agarra la matriz xb para predecir.

#nombre de variables
variables<-names(modelo_int_con_cont_bic_ef_al@frame)[2:(length(names(modelo_int_con_cont_bic_ef_al@frame))-1)]
#### pronóstico
Caso_CR<-datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(variables)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pre_int_con_cont_bic_ef_al<-sum(resultado$coefficients*Caso_CR)
#pre_int_con_cont_bic_ef_al

# Visualización
stargazer(modelo_int_con_cont_bic_ef_al, type = "html", 
          title = "Modelo efectos aleatorios - BIC sin efectos fijos de tiempo", 
          column.labels = c("Efectos Aleatorios BIC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:**  

```{r , message=FALSE, results='asis'}
# se usa el modelo seleccionado por el AICC y variables de tiempo
modelo_int_con_cont_aicc_tiem_ef_al<-lmer(Intercambio ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Credito + Debito + Pago_digital + Asia_Este + Am_lat +
                                      Año_2013 + Año_2014 + Año_2015 +  Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 +
                                      Año_2021 + Año_2022 + Año_2023 + Año_2024 + (1 | Codigo_Pais), 
                                     data = datos_int )


#summary(modelo_int_con_cont_aicc_tiem_ef_al)
# almacenando el resultado del modelo para usar los coeficientes
resultado<-summary(modelo_int_con_cont_aicc_tiem_ef_al)


#Pronóstico para CR
#Con regulación
# stata agarra la matriz xb para predecir.

#nombre de variables
variables<-names(modelo_int_con_cont_aicc_tiem_ef_al@frame)[2:(length(names(modelo_int_con_cont_aicc_tiem_ef_al@frame))-1)]
#### pronóstico
Caso_CR<-datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(variables)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pre_int_con_cont_aicc_tiem_ef_al<-sum(resultado$coefficients*Caso_CR)
#pre_int_con_cont_aicc_tiem_ef_al

# Visualización
stargazer(modelo_int_con_cont_aicc_tiem_ef_al, type = "html", 
          title = "Modelo efectos aleatorios - AICc con efectos fijos de tiempo", 
          column.labels = c("Efectos Aleatorios BIC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:**  

```{r efectos aleatorios bic tiempo, message=FALSE, results='asis'}
# se usa el modelo seleccionado por el BIC y variables de tiempo
modelo_int_con_cont_bic_tiem_ef_al<-lmer(Intercambio ~ Regulacion_intercambio + Cuenta + Credito + Asia_Este + Am_lat + 
                                           Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                           Año_2021 + Año_2022 + Año_2023 + Año_2024 + (1 | Codigo_Pais), 
                                         data = datos_int)


#summary(modelo_int_con_cont_bic_tiem_ef_al)
# almacenando el resultado del modelo para usar los coeficientes
resultado<-summary(modelo_int_con_cont_bic_tiem_ef_al)


#Pronóstico para CR
#Con regulación
# stata agarra la matriz xb para predecir.

#nombre de variables
variables<-names(modelo_int_con_cont_bic_tiem_ef_al@frame)[2:(length(names(modelo_int_con_cont_bic_tiem_ef_al@frame))-1)]
#### pronóstico
Caso_CR<-datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(variables)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pre_int_con_cont_bic_tiem_ef_al<-sum(resultado$coefficients*Caso_CR)
#pre_int_con_cont_bic_tiem_ef_al
# Visualización
stargazer(modelo_int_con_cont_bic_tiem_ef_al, type = "html", 
          title = "Modelo efectos aleatorios - BIC con efectos fijos de tiempo", 
          column.labels = c("Efectos Aleatorios BIC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

## Estimación de las comisiones de intercambio:

Luego de la etapa de modelación, se realiza un pronóstico para conocer la tasa de intercambio esperada para Costa Rica. A continuación, se calcula un promedio para los valores esperados de cada modelo estimado:

### Pronósticos de la estimación principal:
```{r}
pred1_int_con_reg<-predict(modelo_int_con_cont_aicc, newdata = data_CR, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred2_int_con_reg<-predict(modelo_int_con_cont_bic, newdata = data_CR, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred3_int_con_reg<-predict(modelo_int_con_cont_ef_aicc, newdata = data_CR, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(data_CR$Codigo_Pais=="CRI")]

modelo_int_con_cont_ef_bic=lm(Intercambio ~ Regulacion_intercambio + Cuenta + Credito +
                                Asia_Este + Am_lat + Año_2013 + Año_2014 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024,
                              data = datos_int)
pred4_int_con_reg<-predict(modelo_int_con_cont_ef_bic, newdata = data_CR, 
                           interval = "prediction", level = 0.95, 
                           type = "response")[which(data_CR$Codigo_Pais=="CRI")]

# Promedio de estimaciones:
pred_int_con_reg<-mean(c(as.numeric(pred1_int_con_reg), 
                         as.numeric(pred2_int_con_reg), 
                         as.numeric(pred3_int_con_reg), 
                         as.numeric(pred4_int_con_reg)))


#Tabla pronósticos intercambio -----

pronosticos_int<-round(as.data.frame(cbind( 
                                     c( pred_int_sin_cont_con_reg,
                                        pred1_int_con_reg, 
                                        pred2_int_con_reg, 
                                        pred3_int_con_reg, 
                                        pred4_int_con_reg, 
                                        pred_int_con_reg) 
)),3)

rownames(pronosticos_int)<-c("Estimación principal - Sin Controles", 
                             "Estimación principal - AICc sin efectos fijos de tiempo", 
                             "Estimación principal - BIC sin efectos fijos de tiempo", 
                             "Estimación principal - AICc con efectos fijos de tiempo", 
                             "Estimación principal - BIC con efectos fijos de tiempo", 
                             "Estimación principal - Promedio de estimaciones")
names(pronosticos_int)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_int, caption = "Comisión de intercambio estimada para Costa Rica al estimar un modelo de regresión lineal múltiple")

```

### Truncamiento en 0:

```{r}
pred_int_trunc_0_aicc_con_reg<-predict(modelo_truncado_int_0_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_trunc_0_bic_con_reg<-predict(modelo_truncado_int_0_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_trunc_0_aicc_ef_con_reg<-predict(modelo_truncado_int_0_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_trunc_0_bic_ef_con_reg<-predict(modelo_truncado_int_0_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_trunc0<-mean(c(as.numeric(pred_int_trunc_0_aicc_con_reg),
                     as.numeric(pred_int_trunc_0_bic_con_reg), 
                     as.numeric(pred_int_trunc_0_aicc_ef_con_reg), 
                     as.numeric(pred_int_trunc_0_bic_ef_con_reg)))

pronosticos_int_trunc0<-round(as.data.frame(cbind( 
                                     c(pred_int_trunc_0_aicc_con_reg,
                                       pred_int_trunc_0_bic_con_reg, 
                                       pred_int_trunc_0_aicc_ef_con_reg,
                                       pred_int_trunc_0_bic_ef_con_reg,
                                       pred_int_trunc0))),3)

rownames(pronosticos_int_trunc0)<-c("Modelo Truncado en 0 - AICc sin efectos fijos de tiempo", 
                             "Modelo Truncado en 0 - BIC sin efectos fijos de tiempo", 
                             "Modelo Truncado en 0 - AICc con efectos fijos de tiempo", 
                             "Modelo Truncado en 0 - BIC con efectos fijos de tiempo", 
                             "Modelo Truncado en 0 - Promedio de estimaciones")
names(pronosticos_int_trunc0)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_int_trunc0, caption = "Comisión de intercambio estimada para Costa Rica al ajustar un modelo con truncamiento en 0")
```

### Truncamiento en 0.26:

```{r}
pred_int_trunc_0.26_aicc_con_reg<-predict(modelo_truncado_int_0.26_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_trunc_0.26_bic_con_reg<-predict(modelo_truncado_int_0.26_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_trunc_0.26_aicc_ef_con_reg<-predict(modelo_truncado_int_0.26_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_trunc_0.26_bic_ef_con_reg<-predict(modelo_truncado_int_0.26_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_trunc0.26<-mean(c(as.numeric(pred_int_trunc_0.26_aicc_con_reg),
                     as.numeric(pred_int_trunc_0.26_bic_con_reg), 
                     as.numeric(pred_int_trunc_0.26_aicc_ef_con_reg), 
                     as.numeric(pred_int_trunc_0.26_bic_ef_con_reg)))

pronosticos_int_trunc0.26<-round(as.data.frame(cbind( 
                                     c(pred_int_trunc_0.26_aicc_con_reg,
                                       pred_int_trunc_0.26_bic_con_reg, 
                                       pred_int_trunc_0.26_aicc_ef_con_reg, 
                                       pred_int_trunc_0.26_bic_ef_con_reg,
                                       pred_int_trunc0.26))),3)

rownames(pronosticos_int_trunc0.26)<-c("Modelo Truncado en 0,26 - AICc sin efectos fijos de tiempo", 
                             "Modelo Truncado en 0,26 - BIC sin efectos fijos de tiempo", 
                             "Modelo Truncado en 0,26 - AICc con efectos fijos de tiempo", 
                             "Modelo Truncado en 0,26 - BIC con efectos fijos de tiempo", 
                             "Modelo Truncado en 0,26 - Promedio de estimaciones")
names(pronosticos_int_trunc0.26)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_int_trunc0.26, caption = "Comisión de intercambio estimada para Costa Rica al ajustar un modelo con truncamiento en el valor de la observación mínima")
```

### Transformación logarítmica de la variable dependiente:

```{r}
#Con regulación
pred_log_int_con_reg=mean(c(pred_log_int_con_cont_con_reg_aicc,             
                            pred_log_int_con_cont_con_reg_aicc_ef,
                            pred_log_int_con_cont_con_reg_bic,
                            pred_log_int_con_cont_con_reg_bic_ef)
                          )

#Tabla
pronosticos_int_alt_log<-round(as.data.frame(cbind(c(pred_log_int_con_cont_con_reg_aicc,             
                            pred_log_int_con_cont_con_reg_bic,
                            pred_log_int_con_cont_con_reg_aicc_ef,
                            pred_log_int_con_cont_con_reg_bic_ef,
                            pred_log_int_con_reg))),3)

rownames(pronosticos_int_alt_log)<-c(
                                     "Modelo con transformación logarítmica - AICc sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - BIC sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - AICc con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - BIC con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Promedio de estimaciones")
names(pronosticos_int_alt_log)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_int_alt_log, caption = "Comisión de intercambio estimado para Costa Rica al ajustar un modelo aplicando una transformación logarítmica a la variable respuesta")
```

### Inclusión de efectos no lineales en la regresión:

```{r}
pred_int_nolineal_con_reg_aicc<-predict(modelo_int_nolineal_con_cont_aicc, newdata = data_CR, 
                                        interval = "prediction", level = 0.95, 
                                        type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred_int_nolineal_con_reg_con_cont_bic<-predict(modelo_int_nolineal_con_cont_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_nolineal_con_reg_con_cont_aicc_ef<-predict(modelo_int_nolineal_con_cont_ef_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_nolineal_con_reg_con_cont_bic_ef<<-predict(modelo_int_nolineal_con_cont_ef_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_nolineal=mean(c(pred_int_nolineal_con_reg_aicc,
                    pred_int_nolineal_con_reg_con_cont_bic,
                    pred_int_nolineal_con_reg_con_cont_aicc_ef,
                    pred_int_nolineal_con_reg_con_cont_bic_ef)
                  )

pronosticos_int_nolineal<-round(as.data.frame(cbind(c( pred_int_nolineal_con_reg_aicc,                                                pred_int_nolineal_con_reg_con_cont_bic,
                                          pred_int_nolineal_con_reg_con_cont_aicc_ef,                                           pred_int_nolineal_con_reg_con_cont_bic_ef,
                                                      pred_int_nolineal) )),3)

rownames(pronosticos_int_nolineal)<-c(
                                     "Modelo con variables no lineales - AICc sin efectos fijos de tiempo", 
                                     "Modelo con variables no lineales - BIC sin efectos fijos de tiempo", 
                                     "Modelo con variables no lineales-  AICc con efectos fijos de tiempo", 
                                     "Modelo con variables no lineales - MBIC con efectos fijos de tiempo", 
                                     "Modelo con variables no lineales - Promedio de estimaciones")
names(pronosticos_int_nolineal)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_int_nolineal, caption = "Comisión de intercambio estimada para Costa Rica al ajustar un modelo añadiendo variables predictoras no lineales")
```

### Regresión Robusta:

```{r}
pred_int_con_cont_con_reg_robusto_aicc=predict(modelo_robusto_int_con_cont_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Pronóstico CR:
pred_int_con_cont_con_reg_robusto_bic<-predict(modelo_robusto_int_con_cont_bic,newdata = data_CR,interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred_int_con_cont_con_reg_robusto_aicc_ef=predict(modelo_robusto_int_con_cont_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_con_reg_robusto_bic_ef=predict(modelo_robusto_int_con_cont_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_robusto=mean(c(pred_int_con_cont_con_reg_robusto_aicc,
                    pred_int_con_cont_con_reg_robusto_bic,
                    pred_int_con_cont_con_reg_robusto_aicc_ef,
                    pred_int_con_cont_con_reg_robusto_bic_ef)
                  )

pronosticos_int_robusto<-round(as.data.frame(cbind(c( pred_int_con_cont_con_reg_robusto_aicc,
                    pred_int_con_cont_con_reg_robusto_bic,
                    pred_int_con_cont_con_reg_robusto_aicc_ef,
                    pred_int_con_cont_con_reg_robusto_bic_ef,
                    pred_int_robusto) )),3)

rownames(pronosticos_int_robusto)<-c(
                                     "Modelo de Regresión Robusta - AICc sin efectos fijos de tiempo", 
                                     "Modelo de Regresión Robusta - BIC sin efectos fijos de tiempo", 
                                     "Modelo de Regresión Robusta - AICc con efectos fijos de tiempo", 
                                     "Modelo de Regresión Robusta - BIC con efectos fijos de tiempo", 
                                     "Modelo de Regresión Robusta - Promedio de estimaciones")
names(pronosticos_int_robusto)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_int_robusto, caption = "Comisión de intercambio estimada para Costa Rica al ajustar un modelo de Regresión Robusta")
```

### Omitiendo al Espacio Económico Europeo (EEE) de la estimación:

```{r}
pred_int_con_cont_con_reg_sin_EEE_aicc<-predict(modelo_int_con_cont_sin_EEE_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_con_reg_sin_EEE_BIC<-predict(modelo_int_con_cont_sin_EEE_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_con_reg_sin_EEE_ef_aic<-predict(modelo_int_con_cont_sin_EEE_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_con_reg_sin_EEE_bic_ef<-predict(modelo_int_con_cont_sin_EEE_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]


pred_int_sin_EEE_con_reg<-mean(c(as.numeric(pred_int_con_cont_con_reg_sin_EEE_aicc),
                                 as.numeric(pred_int_con_cont_con_reg_sin_EEE_BIC), 
                                 as.numeric(pred_int_con_cont_con_reg_sin_EEE_ef_aic),
                                 as.numeric(pred_int_con_cont_con_reg_sin_EEE_bic_ef)))

pronosticos_int_sin_EEE<-round(as.data.frame(cbind(c(pred_int_con_cont_con_reg_sin_EEE_aicc,                                                pred_int_con_cont_con_reg_sin_EEE_BIC,                                              pred_int_con_cont_con_reg_sin_EEE_ef_aic,                                                 pred_int_con_cont_con_reg_sin_EEE_bic_ef,
                                                     pred_int_sin_EEE_con_reg)) ),3)

rownames(pronosticos_int_sin_EEE)<-c("Modelo Sin el EEE - AICc sin efectos fijos de tiempo", 
                                     "Modelo Sin el EEE - BIC sin efectos fijos de tiempo", 
                                     "Modelo Sin el EEE - AICc con efectos fijos de tiempo", 
                                     "Modelo Sin el EEE - BIC con efectos fijos de tiempo", 
                                     "Modelo Sin el EEE - Promedio de estimaciones")
names(pronosticos_int_sin_EEE)<-c("Estimación para Costa Rica")

# Visualización
DT::datatable(pronosticos_int_sin_EEE, caption = "Comisión de intercambio estimada para Costa Rica al ajustar un modelo sin considerar las observaciones de países del Espacio Económico Europero (EEE)")
```

### Restringiendo la muestra a solo países regulados:
```{r}
#Pronósticos:
pred1_int_regulados<-predict(modelo_int_reg_con_cont_aicc, newdata = data_CR,
                       interval = "prediction", level = 0.95,
                       type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred2_int_regulados<-predict(modelo_int_reg_con_cont_bic, newdata = data_CR,
                       interval = "prediction", level = 0.95,
                       type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred3_int_regulados<-predict(modelo_int_reg_con_cont_aicc_ef, newdata = data_CR,
                       interval = "prediction", level = 0.95,
                       type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred4_int_regulados<-predict(modelo_int_reg_con_cont_bic_ef, newdata = data_CR,
                       interval = "prediction", level = 0.95,
                       type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_int_regulados<-mean(c(as.numeric(pred1_int_regulados),
                     as.numeric(pred2_int_regulados), 
                     as.numeric(pred3_int_regulados), 
                     as.numeric(pred4_int_regulados)))

pronosticos_int_regulados<-round(as.data.frame(cbind(c(pred1_int_regulados,
                                                     pred2_int_regulados,
                                                     pred3_int_regulados,
                                                     pred4_int_regulados,
                                                     pred_int_regulados)) ),3)
rownames(pronosticos_int_regulados)<-c(
  "Restringido a países con regulación - AICc sin efectos fijos de tiempo", 
  "Restringido a países con regulación - BIC sin efectos fijos de tiempo", 
  "Restringido a países con regulación - AICc con efectos fijos de tiempo",
  "Restringido a países con regulación - BIC con efectos fijos de tiempo", 
  "Restringido a países con regulación - Promedio de estimaciones")
names(pronosticos_int_regulados)<-c("Estimación para Costa Rica")

# Visualización
DT::datatable(pronosticos_int_regulados, caption = "Comisión de intercambio estimada para Costa Rica al ajustar un modelo restringiendo la muestra a solo países con regulación de intercambio")
```

### Ampliando la definición de regulación de intercambio o adquirencia:

```{r}
pred_int_con_cont_aicc_con_reg_ampli<-predict(modelo_int_con_cont_aicc_ampli, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_bic_con_reg_ampli<-predict(modelo_int_con_cont_bic_ampli, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_modelo_int_con_cont_aicc_ef_amp_con_reg<-predict(modelo_int_con_cont_ef_aicc_amp, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_modelo_int_con_cont_bic_ef_amp_con_reg<-predict(modelo_int_con_cont_ef_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_reg_ampli<-mean(c(as.numeric(pred_int_con_cont_aicc_con_reg_ampli),
                                 as.numeric(pred_int_con_cont_bic_con_reg_ampli), 
                                 as.numeric(pred_modelo_int_con_cont_aicc_ef_amp_con_reg),
                                 as.numeric(pred_modelo_int_con_cont_bic_ef_amp_con_reg)))

pronosticos_int_ampli<-round(as.data.frame(cbind(c(pred_int_con_cont_aicc_con_reg_ampli,pred_int_con_cont_bic_con_reg_ampli,
pred_modelo_int_con_cont_aicc_ef_amp_con_reg,
pred_modelo_int_con_cont_bic_ef_amp_con_reg,
pred_int_reg_ampli)) ),3)

rownames(pronosticos_int_ampli)<-c("Regulación Ampliada - Modelo AICc sin efectos fijos de tiempo", 
                                     "Regulación Ampliada - Modelo BIC sin efectos fijos de tiempo", 
                                     "Regulación Ampliada - Modelo AICc con efectos fijos de tiempo", 
                                     "Regulación Ampliada - Modelo BIC con efectos fijos de tiempo", 
                                     "Regulación Ampliada - Promedio de estimaciones")
names(pronosticos_int_ampli)<-c("Estimación para Costa Rica")

# Visualización
DT::datatable(pronosticos_int_ampli, caption = "Comisión de intercambio esperada para Costa Rica al estimar un modelo ampliando la definición de regulación de intercambio o adquirencia")
```

### Utilizando las características observadas más recientes para cada país:

```{r}
pred_int_con_cont_aicc_con_reg_2023<-predict(modelo_int_con_cont_aicc_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_bic_con_reg_2023<-predict(modelo_int_con_cont_bic_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_reg_2023<-mean(c(as.numeric(pred_int_con_cont_aicc_con_reg_2023),
                                 as.numeric(pred_int_con_cont_bic_con_reg_2023)))

pronosticos_int_2023<-round(as.data.frame(cbind(c(pred_int_con_cont_aicc_con_reg_2023,
                                                  pred_int_con_cont_bic_con_reg_2023,
                                                  pred_int_reg_2023)) ),3)

rownames(pronosticos_int_2023)<-c("AICc sin efectos fijos de tiempo", 
                                   "BIC sin efectos fijos de tiempo", 
                                    "Promedio de estimaciones")
names(pronosticos_int_2023)<-c("Estimación para Costa Rica")

# Visualización
DT::datatable(pronosticos_int_2023, caption = "Comisión de intercambio esperada para Costa Rica al ajustar un modelo restringiendo la muestra a las observaciones más recientes para cada país")
```

### Regresión lineal múltiple con variables propuestas por el Fondo Monetario Internacional (FMI):

```{r}
pred_int_con_cont_aicc_con_reg_FMI<-predict(modelo_int_con_cont_aicc_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_bic_con_reg_FMI<-predict(modelo_int_con_cont_bic_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_con_cont_ef_aic_con_reg_FMI<-predict(modelo_int_con_cont_ef_aicc_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_modelo_int_con_cont_bic_ef_con_reg_FMI<-predict(modelo_int_con_cont_ef_bic_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]


pred_int_reg_FMI<-mean(c(as.numeric(pred_int_con_cont_aicc_con_reg_FMI),
                         as.numeric(pred_int_con_cont_bic_con_reg_FMI),
                         as.numeric(pred_int_con_cont_ef_aic_con_reg_FMI),
                         as.numeric(pred_modelo_int_con_cont_bic_ef_con_reg_FMI)))

pronosticos_int_FMI<-round(as.data.frame(cbind(c(pred_int_con_cont_aicc_con_reg_FMI,
pred_int_con_cont_bic_con_reg_FMI,
pred_int_con_cont_ef_aic_con_reg_FMI,
pred_modelo_int_con_cont_bic_ef_con_reg_FMI,
pred_int_reg_FMI))),3)

rownames(pronosticos_int_FMI)<-c("FMI - AICc sin efectos fijos de tiempo", 
                                     "FMI - BIC sin efectos fijos de tiempo",
                                     "FMI - AICc con efectos fijos de tiempo", 
                                     "FMI - BIC con efectos fijos de tiempo",
                                     "FMI - Promedio de estimaciones")
names(pronosticos_int_FMI)<-c("Estimación para Costa Rica")

# Visualización
DT::datatable(pronosticos_int_FMI, caption = "Comisión de intercambio esperada para Costa Rica al ajustar un modelo añadiendo las variables propuestas por el Fondo Monetario Internacional (FMI)")
```

### Regresión sin variables relacionadas al uso de tarjetas:

```{r}
pred_int_sin_tarj_aicc_con_reg<-predict(modelo_int_sin_tarj_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_sin_tarj_bic_con_reg<-predict(modelo_int_sin_tarj_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_sin_tarj_aicc_ef_con_reg<-predict(modelo_int_sin_tarj_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
pred_int_sin_tarj_bic_ef_con_reg<-predict(modelo_int_sin_tarj_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

pred_int_reg_tarj<-mean(c(as.numeric(pred_int_sin_tarj_aicc_con_reg),
                                 as.numeric(pred_int_sin_tarj_bic_con_reg), 
                                 as.numeric(pred_int_sin_tarj_aicc_ef_con_reg),
                                 as.numeric(pred_int_sin_tarj_bic_ef_con_reg)))

pronosticos_int_tarj<-round(as.data.frame(cbind(c(pred_int_sin_tarj_aicc_con_reg,
pred_int_sin_tarj_bic_con_reg,
pred_int_sin_tarj_aicc_ef_con_reg,
pred_int_sin_tarj_bic_ef_con_reg,
pred_int_reg_tarj)) ),3)

rownames(pronosticos_int_tarj)<-c("Sin Variables de Tarjetas - AICc sin efectos fijos de tiempo",
                                     "Sin Variables de Tarjetas - BIC sin efectos fijos de tiempo", 
                                     "Sin Variables de Tarjetas - AICc con efectos fijos de tiempo", 
                                     "Sin Variables de Tarjetas - BIC con efectos fijos de tiempo",
                                     "Sin Variables de Tarjetas - Promedio de estimaciones")
names(pronosticos_int_tarj)<-c("Estimación para Costa Rica")

# Visualización
DT::datatable(pronosticos_int_tarj, caption = "Comisión de intercambio esperada para Costa Rica al ajustar un modelo que no considera las variables relacionadas a tarjetas")
```

### Modelos con Variables Instrumentales:

```{r}
pred_iv_int_con_reg <- predict(modelo_iv_int, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred_iv_int_ef_con_reg <- predict(modelo_iv_int_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_int_reg_iv<-mean(c(as.numeric(pred_iv_int_con_reg),
                                 as.numeric(pred_iv_int_ef_con_reg)))

pronosticos_int_iv<-round(as.data.frame(cbind(c(pred_iv_int_con_reg,
pred_iv_int_ef_con_reg,
pred_int_reg_iv)) ),3)

rownames(pronosticos_int_iv)<-c("Variables Instrumentales - Sin efectos fijos de tiempo", "Variables Instrumentales - Con efectos fijos de tiempo", "Variables Instrumentales - Promedio de estimaciones")
names(pronosticos_int_iv)<-c("Estimación para Costa Rica")

# Visualización
DT::datatable(pronosticos_int_iv, caption = "Comisión de intercambio esperada para Costa Rica al ajustar un modelo de variables instrumentales")
```

### Modelo de panel de datos con efectos aleatorios:

```{r}
pred_int_reg_panel<-mean(c(as.numeric(pre_int_con_cont_aicc_ef_al),
                                 as.numeric(pre_int_con_cont_bic_ef_al),
                                 as.numeric(pre_int_con_cont_aicc_tiem_ef_al),
                                 as.numeric(pre_int_con_cont_bic_tiem_ef_al)))

pronosticos_int_panel<-round(as.data.frame(cbind(c(pre_int_con_cont_aicc_ef_al,
pre_int_con_cont_bic_ef_al,
pre_int_con_cont_aicc_tiem_ef_al,
pre_int_con_cont_bic_tiem_ef_al,
pred_int_reg_panel)) ),3)

rownames(pronosticos_int_panel)<-c("Modelo de Panel de Datos - AICc sin efectos fijos de tiempo", "Modelo de Panel de Datos - BIC sin efectos fijos de tiempo", "Modelo de Panel de Datos - AICc con efectos fijos de tiempo", "Modelo de Panel de Datos - BIC con efectos fijos de tiempo", "Modelo de Panel de Datos - Promedio de estimaciones")
names(pronosticos_int_panel)<-c("Estimación para Costa Rica")

# Visualización
DT::datatable(pronosticos_int_panel, caption = "Comisión de intercambio esperada para Costa Rica al ajustar un modelo de panel de datos con efectos aleatorios")
```

## Pruebas estadísticas a regresiones tasa de intercambio

```{r}
datos <- read_excel("D:/Documentos Usuarios/RODRIGUEZGJ/OneDrive - Banco Central de Costa Rica/Documentos/Base_datos_adquirencia_intercambio.xlsx")
#Elimino los casos con NA en los predictores y/o la variable respuesta:
datos_int=datos[,-5] # quita adquirencia para que no afecte en la eliminación de NA´s
datos_int=na.omit(datos_int)
#sum(table(unique(Pais)))
```


### Modelo sin controles

```{r}
### Modelo sin controles.
#modelo_int_sin_cont

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_sin_cont<-resid(modelo_int_sin_cont)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_sin_cont)
car::qqPlot(modelo_int_sin_cont)

#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values no tiene sentido sin controles
#vif(modelo_int_sin_cont)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
library(skedastic)
#white_lm(modelo_int_sin_cont, interactions = TRUE)
white(modelo_int_sin_cont, interactions = TRUE)
#Prueba de especificación lineal RESET Nula: especificación correcta lineal.
#resettest(modelo_int_sin_cont, power = 2:3, type = c("fitted"), data = datos)#No se realiza porque solo tiene una dummy
```


### Modelo AICc sin efectos fijos de tiempo

```{r pruebas regresiones intercambio3, include=TRUE}
#modelo_int_con_cont_aicc

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_con_cont_aicc<-resid(modelo_int_con_cont_aicc)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_con_cont_aicc)
car::qqPlot(modelo_int_con_cont_aicc)

#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
print("El VIF del modelo es:")
vif(modelo_int_con_cont_aicc)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_int_con_cont_aicc, interactions = TRUE)
white(modelo_int_con_cont_aicc, interactions = TRUE)
plot(modelo_int_con_cont_aicc$fit,modelo_int_con_cont_aicc$res,xlab="Valores ajustados",ylab="Residuales")

#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_int_con_cont_aicc, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#Corregido por heterocedasticidad)

```

### Modelo AICc con efectos fijos de tiempo:

```{r pruebas regresiones intercambio4, include=TRUE}

#modelo_int_con_cont_ef_aicc

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_con_cont_ef_aicc<-resid(modelo_int_con_cont_ef_aicc)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_con_cont_ef_aicc)
car::qqPlot(residuos_modelo_int_con_cont_ef_aicc)

#Se obtiene el resultado del índice de condición de multicolinealidad no aplica para dummies extra
#create vector of VIF values
#vif(modelo_int_con_cont_ef_aicc)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_int_con_cont_ef_aicc, interactions = TRUE)
white(modelo_int_con_cont_ef_aicc, interactions = TRUE)
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_int_con_cont_ef_aicc, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

```

### Modelo BIC sin efectos fijos de tiempo

```{r pruebas regresiones intercambio5, include=TRUE}

#modelo_int_con_cont_bic
#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_con_cont_bic<-resid(modelo_int_con_cont_bic)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_con_cont_bic)

#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
print("El VIF del modelo es:")
vif(modelo_int_con_cont_bic)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_int_con_cont_bic, interactions = TRUE)
white(modelo_int_con_cont_bic, interactions = TRUE)
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_int_con_cont_bic, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#Corregido por heterocedasticidad)

```


### Modelo BIC con efectos fijos de tiempo

```{r pruebas regresiones intercambio6, include=TRUE}
modelo_int_con_cont_bic_ef=lm(Intercambio ~ Regulacion_intercambio + Cuenta + Credito +
                                Asia_Este + Am_lat + Año_2013 + Año_2014 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024,
                              data = datos_int)
#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_int_con_cont_bic_ef<-resid(modelo_int_con_cont_bic_ef)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_int_con_cont_bic_ef)
white(modelo_int_con_cont_bic_ef, interactions = TRUE)
```


# Regresiones ajustadas para estimar la tasa de adquirencia

::: {style="text-align: justify"}
De manera similar al caso de la comisión de intercambio, se llevan a cabo múltiples especificaciones de regresión lineal para determinar la tasa de adquirencia esperada para Costa Rica. Primero,  se realizan estimaciones sin variables de control. Posteriormente, se utilizan criterios de información para seleccionar los controles a partir de una comparación entre la bondad de ajuste y la complejidad del modelo. En particular, estos criterios de información son el criterio de información de Akaike con una corrección para tamaños de muestra pequeños (AICc) y el criterio de información bayesiana (BIC).
:::

```{r cargar datos, include=FALSE, message=FALSE}
library(readxl) # para leerlo los datos
datos <- read_excel("D:/Documentos Usuarios/RODRIGUEZGJ/OneDrive - Banco Central de Costa Rica/Documentos/Datos y Estimación - Adquirencia e intercambio - Esteban/Base_datos_adquirencia_intercambio.xlsx")
```

::: {style="text-align: justify"}
La cantidad de países con información de la tasa de adquierencia en la muestra es la siguiente:  
:::

```{r datos deadquirencia, include=TRUE}
misc<-datos %>% dplyr::select(c("Pais","Codigo_Pais","Año","Adquirencia")) %>% na.omit()
misc<-misc[!duplicated(misc[,1]),]
#Se elimina Costa Rica
misc<-misc[misc$Codigo_Pais!="CRI",]
#Cantidad de países con información de la tasa de adquirencia en la muestra
nrow(misc)
```

## Modelos base, AICc y BIC

::: {style="text-align: justify"}
La cantidad de países con información de la tasa de adquierencia en la muestra es la siguiente:  
:::

```{r datos adquirencia, include=TRUE}
misc<-datos %>% dplyr::select(c("Pais","Codigo_Pais","Año","Adquirencia")) %>% na.omit()
misc<-misc[!duplicated(misc[,1]),]
#Se elimina Costa Rica
misc<-misc[misc$Codigo_Pais!="CRI",]
#Cantidad de países con información de la tasa de adquirencia en la muestra
nrow(misc)
```

```{r regresiones adquirencia, include=TRUE, results='asis', warning=FALSE}

#Con toda la muestra sin logaritmo

#Regresión sin controles ----
modelo_adq_sin_cont<-lm(Adquirencia ~ Regulacion_intercambio, datos)

modelo_adq_sin_cont_corr_hc<-coeftest(modelo_adq_sin_cont, vcov. = vcovHC(modelo_adq_sin_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_sin_cont_corr_hac<-coeftest(modelo_adq_sin_cont, vcov. = vcovHAC(modelo_adq_sin_cont, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_sin_cont, modelo_adq_sin_cont_corr_hc, type = "html", title = "Estimación principal - Modelo sin controles", 
          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")

#Pronóstico para CR
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1 # le pone a CRI reg por adquirencia para generar un pronóstico.
pred_adq_sin_cont_con_reg<-predict(modelo_adq_sin_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[ which(data_CR$Codigo_Pais=="CRI")]

#Regresión con todos los controles ----
attach(datos)
modelo_adq_con_cont<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                          Am_lat + Valor_prom + Pago_digital, data = datos)

modelo_adq_con_cont_corr_hc<-coeftest(modelo_adq_con_cont, vcov. = vcovHC(modelo_adq_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_corr_hac<-coeftest(modelo_adq_con_cont, vcov. = vcovHAC(modelo_adq_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_adq_con_cont, modelo_adq_con_cont_corr_hc, modelo_adq_con_cont_corr_hac, type = "html", title = "Regresión sobre la tasa de adquirencia para con todos los controles", 
#          column.labels = c("MCO","MCO HC", "MCO HAC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
#Sin regulación
pred_adq_con_cont_sin_reg<-predict(modelo_adq_con_cont, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_con_cont_con_reg<-predict(modelo_adq_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Regresión con todos los controles más efectos fijos de tiempo
modelo_adq_con_cont_ef<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                            Asia_Este + Am_lat + Año_2010 + Año_2011 + Año_2012 + 
                            Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                            Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022  + Año_2023 + Año_2024, 
                            datos)

modelo_adq_con_cont_ef_corr_hc<-coeftest(modelo_adq_con_cont_ef, vcov. = vcovHC(modelo_adq_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_ef_corr_hac<-coeftest(modelo_adq_con_cont_ef, vcov. = vcovHAC(modelo_adq_con_cont_ef, adjust = TRUE, sandwich = TRUE))


#stargazer(modelo_adq_con_cont_ef, modelo_adq_con_cont_ef_corr_hc, type = "html", 
#          title = "Regresión sobre la tasa de adquirencia con controles y efectos fijos de tiempo", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
pred_adq_con_cont_ef_con_reg<-predict(modelo_adq_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```


* Selección de variables mediante AICc **sin** efectos fijos de tiempo:  

```{r selección por AICc, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña)
#Se elimina la variable intercambio de los datos para evitar sus NAs
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

modelo_adq_con_cont_aicc<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                            Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor se debe eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor se debe eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor se debe eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor se debe eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor se debe eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor se debe eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor se debe eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor se debe eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor se debe eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))
#variables a usar
modelo_adq_con_cont_aicc<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Am_lat, datos_adq)

modelo_adq_con_cont_aicc_corr_hc<-coeftest(modelo_adq_con_cont_aicc, vcov. = vcovHC(modelo_adq_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_aicc_corr_hac<-coeftest(modelo_adq_con_cont_aicc, vcov. = vcovHAC(modelo_adq_con_cont_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_aicc, modelo_adq_con_cont_aicc_corr_hc, type = "html", 
          title = "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante BIC **sin** efectos fijos de tiempo:  

```{r selección por BIC, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el BIC
modelo_adq_con_cont_bic<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                            Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 8
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 2
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 2
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 3
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#Ya no se eliminan columnas
controles2<-controles

#variables a usar
#print(paste0("Este criterio deja las siguientes variables: ",variables_controles))
# Estimación del modelo con lsa variables seleccionadas con BIC
modelo_adq_con_cont_bic<-lm(Adquirencia ~ Regulacion_intercambio + Cuenta + Asia_Este + Am_lat, datos_adq)

modelo_adq_con_cont_bic_corr_hc<-coeftest(modelo_adq_con_cont_bic, vcov. = vcovHC(modelo_adq_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_bic_corr_hac<-coeftest(modelo_adq_con_cont_bic, vcov. = vcovHAC(modelo_adq_con_cont_bic, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_bic, modelo_adq_con_cont_bic_corr_hc, type = "html", title = "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```


* Selección de variables mediante AICc **con** efectos fijos de tiempo:  

```{r AICc para efectos fijos tiempo, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_adq_con_cont_aicc_ef<-lm(Adquirencia ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Cajero_Autom + Crimen + 
                                  Cuenta + Pago_digital + Debito + Credito + Densidad_Pob + 
                                  Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013",
                       "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020",
                       "Año_2021", "Año_2022", "Año_2023", "Año_2024", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom",
                       "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# Cantidad de variables de años más regulación:
nvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_con_cont_aicc_ef)

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 19
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]
controles3<-controles

#variables a usar
#print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

# Estimación del modelo seleccionado
# sin las variables 2010 al 2012 y 2013 por problemas de multicolinealidad
modelo_adq_con_cont_aicc_ef<-lm(Adquirencia ~ Regulacion_intercambio + 
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
                                  Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Am_lat, datos_adq)

modelo_adq_con_cont_aicc_ef_corr_hc<-coeftest(modelo_adq_con_cont_aicc_ef, vcov. = vcovHC(modelo_adq_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_aicc_ef_corr_hac<-coeftest(modelo_adq_con_cont_aicc_ef, vcov. = vcovHAC(modelo_adq_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_aicc_ef, modelo_adq_con_cont_aicc_ef_corr_hc,
          type = "html", title = "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante BIC **con** efectos fijos de tiempo:  

```{r BIC para efectos fijos tiempo, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_adq_con_cont_bic_ef<-lm(Adquirencia ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + Cajero_Autom + Crimen + 
                                  Cuenta + Pago_digital + Debito + Credito + Densidad_Pob + 
                                  Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013",
                       "Año_2014", "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020",
                       "Año_2021", "Año_2022", "Año_2023", "Año_2024", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom",
                       "Europa", "Asia_Este", "Am_lat")
controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# Cantidad de variables
nvar<-16
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_con_cont_bic_ef)

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente vairable
controles<-controles[,-(which.min(BIC)+nvar)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#No se eliminan más columnas
controles4<-controles

#variables a usar
#print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

modelo_adq_con_cont_bic_ef<-lm(Adquirencia ~ Regulacion_intercambio + 
                                 Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                 Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
                                 Cuenta + Asia_Este + Am_lat, datos_adq)

modelo_adq_con_cont_bic_ef_corr_hc<-coeftest(modelo_adq_con_cont_bic_ef, vcov. = vcovHC(modelo_adq_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_bic_ef_corr_hac<-coeftest(modelo_adq_con_cont_bic_ef, vcov. = vcovHAC(modelo_adq_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_bic_ef, modelo_adq_con_cont_bic_ef_corr_hc,
          type = "html", title = "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```


## Regresiones con truncamiento tasa de adquirencia

<div style="text-align: justify">
Al igual que con la tasa de intercambio, se estiman modelos con truncamiento. Se utilizan valores mínimos de 0 y 0.34 (tasa de adquirencia mínima en la muestra, dada en España).  
</div>

### Truncamiento en 0:

* Selección de variables mediante AICc sin efectos fijos de tiempo:  

```{r regresiones truncadas adquirencia 0 AICc, include=TRUE, warning=FALSE}
#AICc

modelo_truncado_adq_0_aicc<-truncreg(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Am_lat, 
                                     data = datos_adq, point = 0, direction = "left", model = TRUE, 
                                     y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0_aicc)

#Pronóstico para CR
#Sin regulación
pred_adq_trunc_0_aicc_sin_reg<-predict(modelo_truncado_adq_0_aicc, newdata = datos, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
#Con regulación
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_trunc_0_aicc_con_reg<-predict(modelo_truncado_adq_0_aicc, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
```

* Selección de variables mediante BIC sin efectos fijos de tiempo:  

```{r regresiones truncadas adquirencia 0 BIC, include=TRUE, warning=FALSE}
#BIC
modelo_truncado_adq_0_bic<-truncreg(Adquirencia ~ Regulacion_intercambio + Cuenta + Asia_Este + Am_lat, 
                                    data = datos_adq, point = 0, direction = "left", model = TRUE, y = FALSE,
                                    x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0_bic)

#Pronóstico para CR
pred_adq_trunc_0_bic_con_reg<-predict(modelo_truncado_adq_0_bic, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
```

* Selección de variables mediante AICc con efectos fijos de tiempo:  

```{r regresiones truncadas adquirencia 0 AICc EF, include=TRUE, warning=FALSE}
modelo_truncado_adq_0_aicc_ef<-truncreg(Adquirencia ~  Regulacion_intercambio + 
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
                                  Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Am_lat, data = datos_adq, point = 0, 
                                        direction = "left", model = TRUE, y = FALSE, 
                                        x = FALSE, scaled = TRUE, fixed = TRUE)

summary(modelo_truncado_adq_0_aicc_ef)

#Pronóstico para CR
pred_adq_trunc_0_aicc_ef_con_reg<-predict(modelo_truncado_adq_0_aicc_ef, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]

```

* Selección de variables mediante BIC con efectos fijos de tiempo:  

```{r regresiones truncadas adquirencia 0 BIC EF, include=TRUE, warning=FALSE}
modelo_truncado_adq_0_bic_ef<-truncreg(Adquirencia ~ Regulacion_intercambio + 
                                 Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                 Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
                                 Cuenta + Asia_Este + Am_lat, data = datos_adq, point = 0, 
                                       direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0_bic_ef)

#Pronóstico para CR
pred_adq_trunc_0_bic_ef_con_reg<-predict(modelo_truncado_adq_0_bic_ef, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
```

### Truncamiento en 0.34 (obervación mínima de comisión de adquirencia):

* Selección de variables mediante AICc sin efectos fijos de tiempo:  

```{r regresiones truncadas adquirencia 0.34 AICc, include=TRUE, warning=FALSE}
modelo_truncado_adq_0.34_aicc<-truncreg(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Am_lat, 
                                        data = datos_adq, point = 0.34, direction = "left", model = TRUE,
                                       y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0.34_aicc)

#Pronóstico para CR
pred_adq_trunc_0.34_aicc_con_reg<-predict(modelo_truncado_adq_0.34_aicc, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
```

* Selección de variables mediante BIC sin efectos fijos de tiempo:  

```{r regresiones truncadas adquirencia 0.34 BIC, include=TRUE, warning=FALSE}
modelo_truncado_adq_0.34_bic<-truncreg(Adquirencia ~ Regulacion_intercambio + Cuenta + Asia_Este + Am_lat, 
                                       data = datos_adq, point = 0.34, direction = "left", model = TRUE, 
                                       y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0.34_bic)

#Pronóstico para CR
pred_adq_trunc_0.34_bic_con_reg<-predict(modelo_truncado_adq_0.34_bic, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
```

* Selección de variables mediante AICc con efectos fijos de tiempo: 

```{r regresiones truncadas adquirencia 0.34 AICc EF, include=TRUE, warning=FALSE}
modelo_truncado_adq_0.34_aicc_ef<-truncreg(Adquirencia ~ Regulacion_intercambio + 
                                  Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
                                  Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Am_lat, data = datos_adq, point = 0.34, 
                                          direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0.34_aicc_ef)

#Pronóstico para CR
pred_adq_trunc_0.34_aicc_ef_con_reg<-predict(modelo_truncado_adq_0.34_aicc_ef, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
```

* Selección de variables mediante BIC con efectos fijos de tiempo: 

```{r regresiones truncadas adquirencia 0.34 BIC EF, include=TRUE, warning=FALSE}
modelo_truncado_adq_0.34_bic_ef<-truncreg(Adquirencia ~ Regulacion_intercambio + 
                                 Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                 Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
                                 Cuenta + Asia_Este + Am_lat, data = datos_adq, point = 0.34, 
                                         direction = "left", model = TRUE, y = FALSE, x = FALSE, scaled = TRUE)

summary(modelo_truncado_adq_0.34_bic_ef)

#Pronóstico para CR
pred_adq_trunc_0.34_bic_ef_con_reg<-predict(modelo_truncado_adq_0.34_bic_ef, newdata = data_CR, type = c("response"))[which(datos$Codigo_Pais=="CRI")]
```

## Transformación logarítmica de la variable dependiente:

*Regresión sin controles:

```{r regresiones adquirencia log, include=TRUE, results='asis', warning=FALSE}
#Con toda la muestra con logaritmo

modelo_log_adq_sin_cont<-lm(log(Adquirencia) ~ Regulacion_intercambio, datos)

modelo_log_adq_sin_cont_corr_hc<-coeftest(modelo_log_adq_sin_cont, vcov. = vcovHC(modelo_log_adq_sin_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_sin_cont_corr_hac<-coeftest(modelo_log_adq_sin_cont, vcov. = vcovHAC(modelo_log_adq_sin_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_log_adq_sin_cont, modelo_log_adq_sin_cont_corr_hc,
#          type = "html", title = "Regresión sobre el logaritmo de la tasa de adquirencia sin controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
#
#Pronóstico para CR
pred_log_adq_sin_cont_con_reg<-exp(predict(modelo_log_adq_sin_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")])

#Regresión con todos los controles
modelo_log_adq_con_cont<-lm(log(Adquirencia) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta + Debito +
                              Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                              Am_lat +Valor_prom + Pago_digital, datos)

modelo_log_adq_con_cont_corr_hc<-coeftest(modelo_log_adq_con_cont, vcov. = vcovHC(modelo_log_adq_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_corr_hac<-coeftest(modelo_log_adq_con_cont, vcov. = vcovHAC(modelo_log_adq_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_log_adq_con_cont, modelo_log_adq_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre el logaritmo de la tasa de adquirencia con todos los controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable #dependiente")

#Pronóstico para CR
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_log_adq_con_cont_con_reg<-exp(predict(modelo_log_adq_con_cont, newdata = data_CR, 
                                           interval = "prediction", level = 0.95, 
                                           type = "response")[which(datos$Codigo_Pais=="CRI")])

#Regresión con todos los controles más efectos fijos de tiempo
modelo_log_adq_con_cont_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                 Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + 
                                 ICH + Valor_prom + Europa + Asia_Este + Am_lat + Año_2010 + Año_2011 + Año_2012 +
                                 Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + 
                                 Año_2020 + Año_2021 + Año_2022  + Año_2023 + Año_2024, datos)

modelo_log_adq_con_cont_ef_corr_hc<-coeftest(modelo_log_adq_con_cont_ef, vcov. = vcovHC(modelo_log_adq_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_ef_corr_hac<-coeftest(modelo_log_adq_con_cont_ef, vcov. = vcovHAC(modelo_log_adq_con_cont_ef, adjust = TRUE, sandwich = TRUE))#

#stargazer(modelo_log_adq_con_cont_ef, modelo_log_adq_con_cont_ef_corr_hc, type = "html", title = "Regresión sobre el logaritmo de la tasa de #adquirencia con controles y efectos fijos de tiempo", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_log_adq_con_cont_ef_con_reg<-exp(predict(modelo_log_adq_con_cont_ef, newdata = data_CR, 
                                              interval = "prediction", level = 0.95, 
                                              type = "response")[which(datos$Codigo_Pais=="CRI")])
```

* Selección de variables mediante AICc sin efectos fijos de tiempo: 

```{r regresiones adquirencia log AICc, include=TRUE, results='asis', warning=FALSE}

#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña)
#Se elimina la tasa de adquirencia en los datos para evitar sus NAs

datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

modelo_log_adq_con_cont_aicc<-lm(log(Adquirencia) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                   Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                   ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_log_adq_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimna la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimna la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimna la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimna la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimna la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimna la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimna la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimna la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#Ya no se eliminan columnas
controles1<-controles

#variables a usar
#variables_controles

# Estimación del modelo seleccionado

modelo_log_adq_con_cont_aicc<-lm(log(Adquirencia) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Pago_digital + 
                                   Valor_prom + Europa + Asia_Este, datos_adq)

modelo_log_adq_con_cont_aicc_corr_hc<-coeftest(modelo_log_adq_con_cont_aicc, vcov. = vcovHC(modelo_log_adq_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_aicc_corr_hac<-coeftest(modelo_log_adq_con_cont_aicc, vcov. = vcovHAC(modelo_log_adq_con_cont_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_log_adq_con_cont_aicc, modelo_log_adq_con_cont_aicc_corr_hc,
          type = "html", title = "Modelo con transformación logarítmica - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante BIC sin efectos fijos de tiempo: 

```{r regresiones adquirencia log BIC, include=TRUE, results='asis', warning=FALSE}
modelo_log_adq_con_cont_bic<-lm(log(Adquirencia) ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                   Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH +
                                   Valor_prom + Europa + Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_log_adq_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
##El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
##El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
##El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
##El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
##El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
##El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
##El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#Ya no se eliminan columnas
controles2<-controles
#variables a usar
#variables_controles
# Estimación
modelo_log_adq_con_cont_bic<-lm(log(Adquirencia) ~ Regulacion_intercambio + Pago_digital + Valor_prom + Europa, datos_adq)

modelo_log_adq_con_cont_bic_corr_hc<-coeftest(modelo_log_adq_con_cont_bic, vcov. = vcovHC(modelo_log_adq_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_bic_corr_hac<-coeftest(modelo_log_adq_con_cont_bic, vcov. = vcovHAC(modelo_log_adq_con_cont_bic, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_log_adq_con_cont_bic, modelo_log_adq_con_cont_bic_corr_hc,
          type = "html", title = "Modelo con transformación logarítmica - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante AICc con efectos fijos de tiempo: 

```{r regresiones adquirencia log AICc EF, include=TRUE, results='asis', warning=FALSE}
modelo_log_adq_con_cont_aicc_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                      Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 +
                                      Año_2020 + Año_2021  + Año_2022 + Año_2023 + Año_2024 + Cajero_Autom + Crimen + Cuenta + 
                                      Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + 
                                      ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014",
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021",
                       "Año_2022","Año_2023","Año_2024","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito",
                       "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este",
                       "Am_lat")
controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# Cantidad de variables
nvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_log_adq_con_cont_aicc_ef)

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#Ya no se eliminan columnas
controles3<-controles

#variables a usar
#variables_controles
# Se omiten los años 2010 al 2012  y 2024 por colinealidad.
modelo_log_adq_con_cont_aicc_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                                      Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
                                      Cuenta + Valor_prom + Europa, datos_adq)

modelo_log_adq_con_cont_aicc_ef_corr_hc<-coeftest(modelo_log_adq_con_cont_aicc_ef, vcov. = vcovHC(modelo_log_adq_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_aicc_ef_corr_hac<-coeftest(modelo_log_adq_con_cont_aicc_ef, vcov. = vcovHAC(modelo_log_adq_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_log_adq_con_cont_aicc_ef, modelo_log_adq_con_cont_aicc_ef_corr_hc, type = "html", 
          title = "Modelo con transformación logarítmica - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante BIC con efectos fijos de tiempo: 

```{r regresiones adquirencia log BIC EF, include=TRUE, results='asis', warning=FALSE}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_log_adq_con_cont_bic_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Año_2010 + Año_2011 + Año_2012 +
                                      Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 +
                                      Año_2020 + Año_2021  + Año_2022 + Año_2023 + Año_2024 + Cajero_Autom + Crimen + Cuenta + 
                                      Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + 
                                      ICH + Valor_prom + Europa + Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014",
                       "Año_2015", "Año_2016", "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021",
                       "Año_2022","Año_2023","Año_2024","Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito",
                       "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este",
                       "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_log_adq_con_cont_bic_ef)

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 13
BIC<-c()
BIC[1]<-BIC(lm(log(Adquirencia) ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(log(Adquirencia) ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#No se eliminan más columnas
controles4<-controles

#Variables a usar
#variables_controles
# Se omiten los años 2010 al 2012 y 2024 por colinealidad.
modelo_log_adq_con_cont_bic_ef<-lm(log(Adquirencia) ~ Regulacion_intercambio + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 +
                                     Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + 
                                     Cuenta + Europa, datos_adq)

modelo_log_adq_con_cont_bic_ef_corr_hc<-coeftest(modelo_log_adq_con_cont_bic_ef, vcov. = vcovHC(modelo_log_adq_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_log_adq_con_cont_bic_ef_corr_hac<-coeftest(modelo_log_adq_con_cont_bic_ef, vcov. = vcovHAC(modelo_log_adq_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_log_adq_con_cont_bic_ef, modelo_log_adq_con_cont_bic_ef_corr_hc, type = "html", 
          title = "Modelo con transformación logarítmica - Modelo BIC con efectos fijos de tiempo",
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

## Inclusión de efectos no lineales en la regresión

* Selección de variables mediante AICc sin efectos fijos de tiempo: 

```{r seleccion de modelos no lineales int adq, results='asis', include=TRUE}
# creación de variables cuadráticas:
datos<-datos %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)
# Base para adquirencia
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

# Selección variables con AICC:  ----
modelo_adq_nolineal_con_cont_aicc<-lm(formula = Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                        Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                        ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                        Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                        Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                        Valor_prom_sqr, data= datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", 
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt",
                       "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt", "Valor_prom_sqr")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_nolineal_con_cont_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 13
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 14
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 15
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles

# Deja las siguiente variables:
#variables_controles

# Estimación del modelo
modelo_adq_nolineal_con_cont_aicc<-lm(formula = Adquirencia ~ Regulacion_intercambio + Crimen + Credito + PIB_pc_PPA + ICH + Am_lat + 
                                                Credito_sqrt + Debito_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt, data= datos_adq)

modelo_adq_nolineal_con_cont_aicc_corr_hc<-coeftest(modelo_adq_nolineal_con_cont_aicc, vcov. = vcovHC(modelo_adq_nolineal_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_nolineal_con_cont_aicc_corr_hac<-coeftest(modelo_adq_nolineal_con_cont_aicc, vcov. = vcovHAC(modelo_adq_nolineal_con_cont_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_nolineal_con_cont_aicc, modelo_adq_nolineal_con_cont_aicc_corr_hc, type = "html", title = "Modelo con efectos no lineales - Modelo AICc sin efectos fijos de tiempo", column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")

# Pronóstico
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1

pred_adq_nolineal_con_reg_aicc<-predict(modelo_adq_nolineal_con_cont_aicc, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]
```

* Selección de variables mediante BIC sin efectos fijos de tiempo: 

```{r seleccion de modelos no lineales int adq BIC, results='asis', include=TRUE}
modelo_adq_nolineal_con_cont_bic<-lm(formula = Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Crimen + Cuenta +
                                        Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                        ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                        Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                        Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                        Valor_prom_sqr, data= datos_adq)

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", 
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt",
                       "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt", "Valor_prom_sqr")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_nolineal_con_cont_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 13
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 14
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 15
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 16
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 17
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 18
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 19
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 20
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles
# Deja las siguiente variables:
#variables_controles

# Estimación del modelo
modelo_adq_nolineal_con_cont_bic<-lm(formula = Adquirencia ~ Regulacion_intercambio + Credito + ICH + Am_lat +  
                                       Credito_sqrt + Densidad_Neg_sqrt  + ICH_sqrt, data= datos_adq)

modelo_adq_nolineal_con_cont_bic_corr_hc<-coeftest(modelo_adq_nolineal_con_cont_aicc, vcov. = vcovHC(modelo_adq_nolineal_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_nolineal_con_cont_bic_corr_hac<-coeftest(modelo_adq_nolineal_con_cont_bic, vcov. = vcovHAC(modelo_adq_nolineal_con_cont_bic, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_nolineal_con_cont_bic, modelo_adq_nolineal_con_cont_bic_corr_hc, type = "html", title = "Modelo con efectos no lineales - Modelo BIC sin efectos fijos de tiempo",
          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"),
          dep.var.caption = "Variable dependiente")

# Pronóstico
#Con regulación
pred_adq_nolineal_con_reg_bic<-predict(modelo_adq_nolineal_con_cont_bic, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]
```

* Selección de variables mediante AICc con efectos fijos de tiempo: 

```{r seleccion de modelos no lineales int adq AIC ef, results='asis', include=TRUE}
# SELECCIÓN DE MODELOS CON EFECTOS DE TIEMPO: -----
datos<-datos %>% mutate(
  Cajero_Autom_sqrt = Cajero_Autom**2, 
  Crimen_sqrt = Crimen**2, 
  Cuenta_sqrt = Cuenta**2, 
  Credito_sqrt = Credito**2, 
  Debito_sqrt = Debito**2, 
  Densidad_Pob_sqrt = Densidad_Pob**2, 
  Densidad_Neg_sqrt = Densidad_Neg**2, 
  PIB_pc_PPA_sqrt = PIB_pc_PPA**2, 
  ICH_sqrt = ICH**2, 
  Pago_digital_sqrt = Pago_digital**2, 
  Valor_prom_sqr = Valor_prom**2
)
#Se elimina la variable intercambio de los datos para evitar sus NAs
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

# Selección variables con AICC:  
modelo_adq_nolineal_con_cont_ef_aicc<-lm(formula = Adquirencia ~ Regulacion_intercambio + Año_2010  + Año_2011
                                         + Año_2012 + Año_2013 + Año_2014 + Año_2015 + 
                                        Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                        Año_2022 + Año_2023 + Año_2024 + Cajero_Autom + Crimen + Cuenta +
                                        Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                        ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                        Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                        Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                        Valor_prom_sqr, data= datos_adq)

variables_controles<-c("Regulacion_intercambio","Año_2010","Año_2011","Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016",
                       "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022",  "Año_2023","Año_2024","Cajero_Autom", "Crimen",
                       "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom",
                       "Europa", "Asia_Este","Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt",
                       "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt",
                       "Valor_prom_sqr")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# Cantidad de variables
nvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_nolineal_con_cont_ef_aicc)

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]
#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]
#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]
#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]
#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]
#Paso 13
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 14
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 15
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 16
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 17
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(AICC)+nvar+1)]

#Paso 18
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
# El AICc ya no es menor, entonces no se eliminan columnas
controles1<-controles
# Deja las siguiente variables:
#variables_controles

# Estimación del modelo (cambiar con el modelo seleccionado)
# Problemas de multicolinealidad 2010 al 2012 y 2023
modelo_adq_nolineal_con_cont_ef_aicc<-lm(formula = Adquirencia ~ Regulacion_intercambio + Año_2013 + Año_2014 + Año_2015 + 
                                        Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                        Año_2022 + Año_2023 + Credito + ICH + Valor_prom + Am_lat + Credito_sqrt + Densidad_Neg_sqrt + ICH_sqrt + Valor_prom_sqr, 
                                        data= datos_adq)

modelo_adq_nolineal_con_cont_ef_aicc_corr_hc<-coeftest(modelo_adq_nolineal_con_cont_ef_aicc, vcov. = vcovHC(modelo_adq_nolineal_con_cont_ef_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_nolineal_con_cont_ef_aicc_corr_hac<-coeftest(modelo_adq_nolineal_con_cont_ef_aicc, vcov. = vcovHAC(modelo_adq_nolineal_con_cont_ef_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_nolineal_con_cont_ef_aicc, modelo_adq_nolineal_con_cont_ef_aicc_corr_hc, 
          type = "html", 
          title = "Modelo con efectos no lineales - Modelo AICc con efectos fijos de tiempo",
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")

# Pronóstico
pred_adq_nolineal_con_reg_ef_aicc<-predict(modelo_adq_nolineal_con_cont_ef_aicc, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]
```

* Selección de variables mediante BIC con efectos fijos de tiempo: 

```{r seleccion de modelos no lineales int adq BIC ef, results='asis', include=TRUE}
modelo_adq_nolineal_con_cont_ef_bic<-lm(formula = Adquirencia ~ Regulacion_intercambio + Año_2010  + Año_2011
                                         + Año_2012 + Año_2013 + Año_2014 + Año_2015 + 
                                        Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                        Año_2022 + Año_2023 + Año_2024 + Cajero_Autom + Crimen + Cuenta +
                                        Pago_digital + Debito + Credito + Densidad_Pob + Densidad_Neg + PIB_pc_PPA +
                                        ICH + Valor_prom + Europa + Asia_Este + Am_lat +
                                        Cajero_Autom_sqrt + Crimen_sqrt + Cuenta_sqrt + Credito_sqrt + Debito_sqrt + 
                                        Densidad_Pob_sqrt + Densidad_Neg_sqrt + PIB_pc_PPA_sqrt + ICH_sqrt + Pago_digital_sqrt + 
                                        Valor_prom_sqr, data= datos_adq)

variables_controles<-c("Regulacion_intercambio","Año_2010","Año_2011","Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016",
                       "Año_2017", "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022",  "Año_2023","Año_2024","Cajero_Autom", "Crimen",
                       "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom",
                       "Europa", "Asia_Este","Am_lat", "Cajero_Autom_sqrt", "Crimen_sqrt", "Cuenta_sqrt", "Credito_sqrt", "Debito_sqrt",
                       "Densidad_Pob_sqrt", "Densidad_Neg_sqrt", "PIB_pc_PPA_sqrt", "ICH_sqrt", "Pago_digital_sqrt",
                       "Valor_prom_sqr")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

# Cantidad de variables de tiempo + regulación
nvar<-16
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_nolineal_con_cont_ef_bic)

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 13
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 14
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 15
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 16
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 17
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 18
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 19
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+nvar+1)]
variables_controles<-variables_controles[-(which.min(BIC)+nvar+1)]
#Paso 20
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-nvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+nvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles
# Deja las siguiente variables:
#variables_controles

# Estimación del modelo (cambiar con el modelo seleccionado)
# Se quitan 2010 al 2012 y 2023 por problemas de multicolinealidad
modelo_adq_nolineal_con_cont_ef_bic<-lm(formula = Adquirencia ~ Regulacion_intercambio + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + 
                                                                Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Credito + ICH + Am_lat + Credito_sqrt + 
                                                                Densidad_Neg_sqrt + ICH_sqrt, data= datos_adq)

modelo_adq_nolineal_con_cont_ef_bic_corr_hc<-coeftest(modelo_adq_nolineal_con_cont_ef_bic, vcov. = vcovHC(modelo_adq_nolineal_con_cont_ef_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_nolineal_con_cont_ef_bic_corr_hac<-coeftest(modelo_adq_nolineal_con_cont_ef_bic, vcov. = vcovHAC(modelo_adq_nolineal_con_cont_ef_bic, adjust = TRUE, sandwich = TRUE))

#Visualización
stargazer(modelo_adq_nolineal_con_cont_ef_bic, modelo_adq_nolineal_con_cont_ef_bic_corr_hc, type = "html", 
          title = "Modelo con efectos no lineales - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia","Tasa adquirencia"), dep.var.caption = "Variable dependiente")

# Pronóstico ----
#Con regulación
pred_adq_nolineal_con_reg_ef_bic<-predict(modelo_adq_nolineal_con_cont_ef_bic, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]
```

## Método bootstrap

En este caso se usan los criterios de información AIC (no tiene corrección de muestras pequeñas) y BIC para su comparación. Ambos criterios brindan resultados similares. Además, no se incluyen efectos fijos de tiempo. Esto difiere respecto a su implementación en Stata, donde también se estiman también los modelos que incorporan efectos fijos de tiempo, y se utiliza el AICc. Sin embargo, los resultados son similares.

```{r Método de bootstrap, warning=FALSE}
# Datos
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

library(bootStepAIC)
### SELECCIÓN CON AIC
set.seed(1)
#modelo inicial con todos los controles
modelo_adq_con_cont<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                          Am_lat + Valor_prom + Pago_digital, data = datos_adq)

# SIN REGLUACIÓN
n=1000 # cantidad de reemuestreos con bootstrap
m=bootStepAIC::boot.stepAIC(modelo_adq_con_cont,data = datos_adq,B=n)
predicciones<-as.numeric()
for (i in 1:n) {
coefs = m$BootStepAIC[[i]]  
#Sin regulación
predicciones[i]<-predict(coefs,newdata=datos_adq,type="response")[which(data_CR$Codigo_Pais=="CRI")]
}
pred_adq_bootstrap_sin_reg_con_cont_aic<-median(predicciones)

# CON REGULACIÓN
n=1000 # cantidad de reemuestreos con bootstrap
m=bootStepAIC::boot.stepAIC(modelo_adq_con_cont,data = datos_adq,B=n)
predicciones<-as.numeric()
for (i in 1:n) {
coefs = m$BootStepAIC[[i]]  
#con regulación
predicciones[i]<-predict(coefs,newdata=data_CR,type="response")[which(data_CR$Codigo_Pais=="CRI")]
}
# Ajustes por fuera de rango:
# mayor a 2
#gen Adquirencia_adj =  (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) - (2*0.08))/(0.71)
predicciones2<-ifelse(predicciones>2,
                      (predicciones- (1*0.02) - (1.25*0.04) - (1.5*0.02) - (1.75*0.07) - (2*0.08))/(0.77),
                      predicciones) 
# mayor a 1.75 y menor o igual a 2
#if Adquirencia_adj<=2
#replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) )/(0.71 + 0.08)
predicciones2<-ifelse(predicciones2> 1.75 & predicciones2<=2,
                      (predicciones2 - (1*0.02) - (1.25*0.04) - (1.5*0.02) - (1.75*0.07) )/(0.77 + 0.08),
                      predicciones2)
# mayor a 1.5 y menor o igual a 1.75
#if Adquirencia_adj<=1.75
#replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) )/(0.71 + 0.08 + 0.05)
predicciones2<-ifelse(predicciones2> 1.5 & predicciones2<=1.75,
                      (predicciones2 - (1*0.02) - (1.25*0.04) - (1.5*0.02) )/(0.77 + 0.08 + 0.07),
                      predicciones2)
# mayor a 1.25 y menor o igual a 1.5
#if Adquirencia_adj<=1.5: replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) )/(0.71 + 0.08 + 0.05 + 0.02)
predicciones2<-ifelse(predicciones2> 1.25 & predicciones2<=1.5,
                      (predicciones2 - (1*0.02) - (1.25*0.04) )/(0.77 + 0.08 + 0.07 + 0.02),
                      predicciones2)

# mayor a 1 y menor o igual a 1.25 
#if Adquirencia_adj<=1.25: replace Adquirencia_adj = (Adquirencia- (1*0.09))/(0.71 + 0.08 + 0.05 + 0.02 + 0.05)
predicciones2<-ifelse(predicciones2> 1 & predicciones2<=1.25,
                      (predicciones2 - (1*0.02))/(0.77 + 0.08 + 0.07 + 0.02 + 0.04),
                      predicciones2)
# menor a 1 se deja igual.
#if Adquirencia_adj<=1 # sin ajuste
# mostrar solo con ajustes.

#Visualización
resul<-as.data.frame(cbind(mean(predicciones2),
                           median(predicciones2),
                           mean(predicciones2)-1.96*sd(predicciones2),
                           mean(predicciones2)+1.96*sd(predicciones2)
                           )) %>% round(3)
names(resul)<-c("Promedio","Mediana","2.5%","97.5%")
DT::datatable(resul,rownames=c("Tasa de adquirencia ajustada"),caption = "Resultados de bootstrap para modelo lineal de adquirencia con regulación y con la selección de controles por AIC", options = list(dom = 't'))
# pronóstico promedio con regulación
pred_adq_bootstrap_con_reg_con_cont_aic<-median(predicciones2)
# Gráfica de los pronósticos
fig<-plot_ly(x = ~predicciones2, type = "histogram") %>%
  layout(xaxis = list(title = "Comisión de adquirencia"),
         yaxis = list(title ="Frecuencia"),
         title = "Pronóstico AIC con boostrap (n=1000)")
fig
```


```{r}
## Selección con BIC modelo con controles
#Retomando el modelo inicial con controles
modelo_adq_con_cont<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                          Am_lat + Valor_prom + Pago_digital, data = datos_adq)
# Se debe fijar una semilla

# Bootrap con BIC
set.seed(1)
# SIN REGLUACIÓN
n=1000 # cantidad de reemuestreo con bootstrap
m=bootStepAIC::boot.stepAIC(modelo_adq_con_cont,data = datos_adq,B=n,
                              k=log(nrow(datos)) ) # con esto se hace el BIC
predicciones<-as.numeric()
for (i in 1:n) {
coefs = m$BootStepAIC[[i]]  
#con regulación
predicciones[i]<-predict(coefs,newdata=datos,type="response")[which(data_CR$Codigo_Pais=="CRI")]
}
pred_adq_bootstrap_sin_reg_con_cont_bic<-median(predicciones)
# CON REGULACIÓN
n=1000 # cantidad de reemuestreo con bootstrap
m=bootStepAIC::boot.stepAIC(modelo_adq_con_cont,data = datos_adq,B=n,
                              k=log(nrow(datos)) ) # con esto se hace el BIC
predicciones<-as.numeric()
for (i in 1:n) {
coefs = m$BootStepAIC[[i]]  
#con regulación
predicciones[i]<-predict(coefs,newdata=data_CR,type="response")[which(data_CR$Codigo_Pais=="CRI")]
}
# Ajustes por fuera de rango:
# mayor a 2
#gen Adquirencia_adj =  (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) - (2*0.08))/(0.71)
predicciones2<-ifelse(predicciones>2,
                      (predicciones- (1*0.02) - (1.25*0.04) - (1.5*0.02) - (1.75*0.07) - (2*0.08))/(0.77),
                      predicciones)
# mayor a 1.75 y menor o igual a 2
#if Adquirencia_adj<=2
#replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05) )/(0.71 + 0.08)
predicciones2<-ifelse(predicciones2> 1.75 & predicciones2<=2,
                      (predicciones2 - (1*0.02) - (1.25*0.04) - (1.5*0.02) - (1.75*0.07) )/(0.77 + 0.08),
                      predicciones2)
# mayor a 1.5 y menor o igual a 1.75
#if Adquirencia_adj<=1.75
#replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) - (1.5*0.02) )/(0.71 + 0.08 + 0.05)
predicciones2<-ifelse(predicciones2> 1.5 & predicciones2<=1.75,
                      (predicciones2 - (1*0.02) - (1.25*0.04) - (1.5*0.02) )/(0.77 + 0.08 + 0.07),
                      predicciones2)
# mayor a 1.25 y menor o igual a 1.5
#if Adquirencia_adj<=1.5: replace Adquirencia_adj = (Adquirencia - (1*0.09) - (1.25*0.05) )/(0.71 + 0.08 + 0.05 + 0.02)
predicciones2<-ifelse(predicciones2> 1.25 & predicciones2<=1.5,
                      (predicciones2 - (1*0.02) - (1.25*0.04) )/(0.77 + 0.08 + 0.07 + 0.02),
                      predicciones2)

# mayor a 1 y menor o igual a 1.25 
#if Adquirencia_adj<=1.25: replace Adquirencia_adj = (Adquirencia- (1*0.09))/(0.71 + 0.08 + 0.05 + 0.02 + 0.05)
predicciones2<-ifelse(predicciones2> 1 & predicciones2<=1.25,
                      (predicciones2 - (1*0.02))/(0.77 + 0.08 + 0.07 + 0.02 + 0.04),
                      predicciones2)
# menor a 1 se deja igual.
#if Adquirencia_adj<=1 # sin ajuste
# mostrar solo con ajustes.

#Visualización
resul<-as.data.frame(cbind(mean(predicciones2),
                           median(predicciones2),
                           mean(predicciones2)-1.96*sd(predicciones2),
                           mean(predicciones2)+1.96*sd(predicciones2)
                           )) %>% round(3)
names(resul)<-c("Promedio","Mediana","2.5%","97.5%")
DT::datatable(resul,rownames=c("Tasa de adquirencia ajustada"),caption = "Resultados de bootstrap para modelo lineal de adquirencia con regulación y con la selección de controles por BIC", options = list(dom = 't'))
# pronóstico promedio con regulación
pred_adq_bootstrap_con_reg_con_cont_bic<-median(predicciones2)
# Gráfica de los pronósticos
fig<-plot_ly(x = ~predicciones2, type = "histogram") %>%
  layout(xaxis = list(title = "Comisión de adquirencia"),
         yaxis = list(title ="Frecuencia"),
         title = "Pronóstico BIC con boostrap (n=1000)")
fig
```



## Regresión robusta

::: {style="text-align: justify"}
En este caso, pueden existir diferencias en la regresión respecto a los resultados en Stata debido a que el comando “rreg” en Stata combina dos funciones de ponderación, los pesos Huber y Biweights (<https://www.stata.com/manuals13/rrreg.pdf>). Por su parte, el comando “rlm” de R implementa cada ponderación por separado, y en este ejercicio se utiliza los pesos Huber (<https://www.rdocumentation.org/packages/MASS/versions/7.3-58.1/topics/rlm>). Sin embargo, las comisiones esperadas obtenidas para Costa Rica son similares. 

:::

* Selección de variables mediante AICc sin efectos fijos de tiempo: 

```{r adq robust aicc, results='asis', warning=FALSE}
# Estimación de regresión robusta
## Se mantiene el modelo seleccionado por AICC en el modelo de regresión lineal.
# Estimación del modelo seleccionado
modelo_robusto_adq_con_cont_aicc<-rlm(formula = Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Am_lat, data = datos_adq, 
                                      method="MM", maxit = 100)
# Pronóstico
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
pred_adq_con_cont_con_reg_robusto_aicc<-predict(modelo_robusto_adq_con_cont_aicc,newdata = data_CR,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]

# Con ajuste
#round((pred_adq_con_cont_con_reg_robusto_aicc-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)
# Visualización
stargazer(modelo_robusto_adq_con_cont_aicc, type = "html", 
          title = "Regresión robusta - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante BIC sin efectos fijos de tiempo: 

```{r adq robust bic, results='asis', warning=FALSE}
# Estimación del modelo seleccionado
# Se mantiene la selección del modelo lineal con el criterio BIC
modelo_robusto_adq_con_cont_bic<-rlm(formula = Adquirencia ~ Regulacion_intercambio + Cuenta +
                                   Asia_Este + Am_lat, data = datos_adq, method="MM", maxit = 100)
# Pronóstico
pred_adq_con_cont_con_reg_robusto_bic<-predict(modelo_robusto_adq_con_cont_bic,newdata = data_CR,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con ajuste
#round((pred_adq_con_cont_con_reg_robusto_bic+-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)

# Visualización
stargazer(modelo_robusto_adq_con_cont_bic, type = "html", 
          title = "Regresión robusta - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante AICc con efectos fijos de tiempo: 

```{r adq robust aicc ef, results='asis', warning=FALSE}
## Esitmación modelo robusto aic agregando efecto de tiempo: ----
# Se dejan las mismas variables seleccionadas con el aicc para modelo con controles. 
# Se omite 2010 al 2012 y 2023 por multicolinealidad
modelo_robusto_adq_con_cont_aicc_ef<-rlm(formula = Adquirencia ~ Regulacion_intercambio + Año_2013 + Año_2014 + 
                                           Año_2015 + Año_2016 + Año_2017 + 
                                           Año_2018 + Año_2019 +
                                           Año_2020 + Año_2021 + Año_2022 + Año_2023 + Cajero_Autom + Cuenta + Valor_prom + 
                                           Asia_Este + Am_lat, data = datos_adq, method="M" , maxit = 100) 
# Pronóstico
pred_adq_con_cont_con_reg_robusto_aicc_ef<-predict(modelo_robusto_adq_con_cont_aicc_ef,newdata = data_CR,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con ajuste
#round((pred_adq_con_cont_con_reg_robusto_aicc_ef-(1*0.02) - (1.25*0.04) - (1.5*0.02) - (1.75*0.07))/(0.77 + 0.08),2)

# Visualización
stargazer(modelo_robusto_adq_con_cont_aicc_ef, type = "html", 
          title = "Regresión robusta - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante BIC con efectos fijos de tiempo: 

```{r adq robust bic ef, results='asis'}
# Selección modelo con BIC y efectos de tiempo:
modelo_robusto_adq_con_cont_bic_ef<-rlm(formula = Adquirencia ~ Regulacion_intercambio + Año_2013 + 
                                            Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                                          Año_2018 + Año_2019 + Año_2020 + Año_2021  + Año_2022 + Año_2023 +
                                          Cuenta + Asia_Este + Am_lat,  
                                        data = datos_adq, method="M", maxit = 100) 

#modelo_robusto_adq_con_cont_aicc_ef<-rlm(formula = Adquirencia ~ Regulacion_intercambio + Año_2013 + 
#                                           Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
#                                           Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 +
#                                           Cuenta + Valor_prom + Europa
#                                         , data = datos_adq, method="MM", maxit = 100)

# Pronóstico
pred_adq_con_cont_con_reg_robusto_bic_ef<-predict(modelo_robusto_adq_con_cont_bic_ef,newdata = data_CR,
                                               interval = "prediction", level = 0.95,
                                               type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# Con ajuste
#round((pred_adq_con_cont_con_reg_robusto_bic_ef-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)
# Visualización
stargazer(modelo_robusto_adq_con_cont_bic_ef, type = "html", 
          title = "Regresión robusta - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

## Restringiendo la muestra a solo países regulados:

* Selección de variables mediante AICc sin efectos fijos de tiempo: 

```{r regresiones adquirencia solo regulados AICc, include=TRUE, results='asis'}
#Con solo países regulados en intercambio sin logaritmo

datos_adq_reg<-datos_adq[datos_adq$Regulacion_intercambio==1,]

#Regresión sin controles no se hace acá

#Regresión con todos los controles
modelo_adq_reg_con_cont<-lm(Adquirencia ~ Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                              Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                              Am_lat, datos_adq_reg)

modelo_adq_reg_con_cont_corr_hc<-coeftest(modelo_adq_reg_con_cont, vcov. = vcovHC(modelo_adq_reg_con_cont, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_corr_hac<-coeftest(modelo_adq_reg_con_cont, vcov. = vcovHAC(modelo_adq_reg_con_cont, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_adq_reg_con_cont, modelo_adq_reg_con_cont_corr_hc, type = "html", title = "Regresión sobre la tasa de adquirencia con todos los controles, solo muestra con países regulados", 
#          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
pred_adq_reg_con_cont<-predict(modelo_adq_reg_con_cont, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Regresión con todos los controles más efectos fijos de tiempo
modelo_adq_reg_con_cont_ef<-lm(Adquirencia ~ Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                              Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                              Am_lat + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 +
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_adq_reg)

modelo_adq_reg_con_cont_ef_corr_hc<-coeftest(modelo_adq_reg_con_cont_ef, vcov. = vcovHC(modelo_adq_reg_con_cont_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_ef_corr_hac<-coeftest(modelo_adq_reg_con_cont_ef, vcov. = vcovHAC(modelo_adq_reg_con_cont_ef, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_adq_reg_con_cont_ef, modelo_adq_reg_con_cont_ef_corr_hc, type = "html",
#          title = "Regresión sobre la tasa de adquirencia con controles y efectos fijos de tiempo, solo muestra con países regulados", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
pred_adq_reg_con_cont_ef<-predict(modelo_adq_reg_con_cont_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña)
#Se elimina la tasa de adquirencia en los datos para evitar sus NAs

modelo_adq_reg_con_cont_aicc<-lm(Adquirencia ~ Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                                   Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                                   Asia_Este + Am_lat, datos_adq_reg)

variables_controles<-c("Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", 
                       "Asia_Este", "Am_lat")

controles<- datos_adq_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC1<-aicc(modelo_adq_reg_con_cont_aicc)

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(AICC)<AICC1
#Ya no se eliminan columnas
controles1<-controles

#variables a usar
#variables_controles

modelo_adq_reg_con_cont_aicc<-lm(Adquirencia ~ Cajero_Autom + Cuenta + Debito + Densidad_Pob + Densidad_Neg + ICH + Valor_prom +
                                   Europa + Asia_Este, datos_adq_reg)

modelo_adq_reg_con_cont_aicc_corr_hc<-coeftest(modelo_adq_reg_con_cont_aicc, vcov. = vcovHC(modelo_adq_reg_con_cont_aicc, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_aicc_corr_hac<-coeftest(modelo_adq_reg_con_cont_aicc, vcov. = vcovHAC(modelo_adq_reg_con_cont_aicc, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont_aicc, modelo_adq_reg_con_cont_aicc_corr_hc, type = "html",
          title = "Restringido a países con regulación - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante BIC sin efectos fijos de tiempo: 

```{r regresiones adquirencia solo regulados BIC, include=TRUE, results='asis'}
modelo_adq_reg_con_cont_bic<-lm(Adquirencia ~ Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito +
                                  Densidad_Pob + Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este +
                                  Am_lat, datos_adq_reg)

variables_controles<-c("Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob",
                       "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC1<-BIC(modelo_adq_reg_con_cont_bic)

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq_reg))  
}

#min(BIC)<BIC1
#Ya no se eliminan columnas
controles2<-controles
#variables a usar
#variables_controles

modelo_adq_reg_con_cont_bic<-lm(Adquirencia ~ Cajero_Autom + Cuenta + Debito + Densidad_Pob + Densidad_Neg + ICH + Valor_prom + Europa + 
                                  Asia_Este, datos_adq_reg)

modelo_adq_reg_con_cont_bic_corr_hc<-coeftest(modelo_adq_reg_con_cont_bic, vcov. = vcovHC(modelo_adq_reg_con_cont_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_bic_corr_hac<-coeftest(modelo_adq_reg_con_cont_bic, vcov. = vcovHAC(modelo_adq_reg_con_cont_bic, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont_bic, modelo_adq_reg_con_cont_bic_corr_hc, type = "html",
          title = "Restringido a países con regulación - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante AICc con efectos fijos de tiempo: 

```{r regresiones adquirencia solo regulados AIC ef, include=TRUE, results='asis'}

#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_adq_reg_con_cont_aicc_ef<-lm(Adquirencia ~ Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 +
                                      Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                      Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                                      Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + Am_lat,
                                    datos_adq_reg)

variables_controles<-c("Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017",
                       "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022", "Año_2023", "Año_2024", "Cajero_Autom", "Crimen", "Cuenta",
                       "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC1<-aicc(modelo_adq_reg_con_cont_aicc_ef)

for (i in 1:(ncol(controles)-16)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+16)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc es menor al eliminar la columna 16
controles<-controles[,-(which.min(AICC)+16)]
variables_controles<-variables_controles[-(which.min(AICC)+16)]

#Paso 2
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-16)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+16)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc es menor al eliminar la columna 18
controles<-controles[,-(which.min(AICC)+16)]
variables_controles<-variables_controles[-(which.min(AICC)+16)]

#Paso 3
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-16)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+16)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc es menor al eliminar la columna 21
controles<-controles[,-(which.min(AICC)+16)]
variables_controles<-variables_controles[-(which.min(AICC)+16)]

#Paso 4
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-16)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+16)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc es menor al eliminar la columna 24
controles<-controles[,-(which.min(AICC)+16)]
variables_controles<-variables_controles[-(which.min(AICC)+16)]

#Paso 5
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-16)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+16)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc es menor al eliminar la columna 24
controles<-controles[,-(which.min(AICC)+16)]
variables_controles<-variables_controles[-(which.min(AICC)+16)]

#Paso 6
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-16)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+16)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc es menor al eliminar la columna 24
controles<-controles[,-(which.min(AICC)+16)]
variables_controles<-variables_controles[-(which.min(AICC)+16)]

#Paso 7
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-16)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+16)], datos_adq_reg))  
}

#min(AICC)<AICC1
#El AICc es menor al eliminar la columna 24
controles<-controles[,-(which.min(AICC)+16)]
variables_controles<-variables_controles[-(which.min(AICC)+16)]

#Paso 8
AICC<-c()
AICC1<-aicc(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-16)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+16)], datos_adq_reg))  
}

#min(AICC)<AICC1
#Ya no se eliminan columnas
controles3<-controles

#variables a usar
#variables_controles
# Se omiten los los Años 2010 al 2013, 2015 y 2022 por colinealidad
modelo_adq_reg_con_cont_aicc_ef<-lm(Adquirencia ~ Año_2023 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 +
                                      Año_2022 + Cajero_Autom + Cuenta + Debito + Densidad_Pob + Pago_digital +
                                      Europa + Asia_Este, datos_adq_reg)

modelo_adq_reg_con_cont_aicc_ef_corr_hc<-coeftest(modelo_adq_reg_con_cont_aicc_ef, vcov. = vcovHC(modelo_adq_reg_con_cont_aicc_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_aicc_ef_corr_hac<-coeftest(modelo_adq_reg_con_cont_aicc_ef, vcov. = vcovHAC(modelo_adq_reg_con_cont_aicc_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont_aicc_ef, modelo_adq_reg_con_cont_aicc_ef_corr_hc, type = "html", 
          title = "Restringido a países con regulación - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante BIC con efectos fijos de tiempo: 

```{r regresiones adquirencia solo regulados BIC ef, include=TRUE, results='asis'}

#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_adq_reg_con_cont_bic_ef<-lm(Adquirencia ~ Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 +
                                      Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                      Cajero_Autom + Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                                      Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + Asia_Este + Am_lat,
                                    datos_adq_reg)

variables_controles<-c("Año_2010", "Año_2011", "Año_2012", "Año_2013", "Año_2014", "Año_2015", "Año_2016", "Año_2017",
                       "Año_2018", "Año_2019", "Año_2020", "Año_2021", "Año_2022", "Año_2023", "Año_2024", "Cajero_Autom", "Crimen", "Cuenta",
                       "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq_reg %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
BIC<-c()
BIC1<-BIC(modelo_adq_reg_con_cont_bic_ef)

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 7
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

#min(BIC)<BIC1
#El BIC elimina la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 8
BIC<-c()
BIC1<-BIC(lm(Adquirencia ~ controles, datos_adq_reg))

for (i in 1:(ncol(controles)-13)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)], datos_adq_reg))  
}

#min(BIC)<BIC1
#No se eliminan más columnas
controles4<-controles
#Variables a usar
#variables_controles
# Se omiten los años 2010 al 2013, 2015 y 2022 por colinealidad
modelo_adq_reg_con_cont_bic_ef<-lm(Adquirencia ~ Año_2023 + Año_2015 + 
                                     Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 +
                                     Cajero_Autom + Cuenta + Debito + Densidad_Pob + Pago_digital + Europa + Asia_Este, 
                                   datos_adq_reg)

modelo_adq_reg_con_cont_bic_ef_corr_hc<-coeftest(modelo_adq_reg_con_cont_bic_ef, vcov. = vcovHC(modelo_adq_reg_con_cont_bic_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_reg_con_cont_bic_ef_corr_hac<-coeftest(modelo_adq_reg_con_cont_bic_ef, vcov. = vcovHAC(modelo_adq_reg_con_cont_bic_ef, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_reg_con_cont_bic_ef, modelo_adq_reg_con_cont_bic_ef_corr_hc, type = "html", 
          title = "Restringido a países con regulación - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), dep.var.caption = "Variable dependiente")
```

## Ampliando la definición de regulación de intercambio o adquirencia:
::: {style="text-align: justify"}

En el análisis principal, la variable regulación hace referencia a regulación en las comisiones de Adquirencia. Esto se debe a que son relativamente pocos los países que regulan adquirencia. Sin embargo, es posible generar una variable dicotómica que haga referencia a que el país en cuestión tiene regulación sobre Adquirencia o adquirencia. 

:::

```{r ampliar regulacion adq}
# Creaci{on de la variable de regulación ampliada
datos<-datos %>% mutate( Regulacion_inter_adq = if_else(Regulacion_adquirencia==1 | Regulacion_intercambio == 1
                                                       ,1,0)
)
table(datos$Regulacion_inter_adq)
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_inter_adq") ]<-1
```

* Selección de variables con AICc:  

```{r ampliada aicc adq}
# Selección con AICc
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()
# Estimación modelo
modelo_adq_con_cont_aicc_ampli<-lm(formula = Adquirencia ~ Regulacion_inter_adq + Cajero_Autom +
                               Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                               Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                               Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_inter_adq", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_con_cont_aicc_ampli)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 13
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 8
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]


#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación
modelo_adq_con_cont_aicc_ampli=lm(Adquirencia ~ Regulacion_inter_adq + ICH + Pago_digital + Valor_prom + Asia_Este + Am_lat, datos_adq)
#Pronóstico para CR
#Sin regulación
pred_adq_con_cont_aicc_sin_reg_ampli<-predict(modelo_adq_con_cont_aicc_ampli, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_adq_con_cont_aicc_con_reg_ampli<-predict(modelo_adq_con_cont_aicc_ampli, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```


```{r, warning=FALSE, include=TRUE, results='asis'}
modelo_adq_con_cont_aicc_ampli_corr_hc<-coeftest(modelo_adq_con_cont_aicc_ampli, vcov. = vcovHC(modelo_adq_con_cont_aicc_ampli, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_aicc_ampli_corr_hac<-coeftest(modelo_adq_con_cont_aicc_ampli, vcov. = vcovHAC(modelo_adq_con_cont_aicc_ampli, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_adq_con_cont_aicc_ampli, modelo_adq_con_cont_aicc_ampli_corr_hc, type = "html",
          title = "Regulación en intercambio o adquirencia - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
```


* Selección de variables con BIC:  

```{r ampliada bic adq}
# Selección con AICc
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()
#modelo inicial
modelo_adq_con_cont_bic_ampli<-lm(Adquirencia ~ Regulacion_inter_adq + Cajero_Autom +
                              Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                              Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                              Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_inter_adq", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# método BIC
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_con_cont_bic_ampli)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#Ya no se eliminan columnas
controles2<-controles
print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))
# Estimación
modelo_adq_con_cont_bic_ampli=lm(Adquirencia ~ Regulacion_inter_adq + ICH + Pago_digital + Valor_prom + Asia_Este + Am_lat, datos_adq)
#Pronóstico para CR
#Con regulación
pred_adq_con_cont_bic_con_reg_ampli<-predict(modelo_adq_con_cont_bic_ampli, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, warning=FALSE, include=TRUE, results='asis'}
modelo_adq_con_cont_bic_ampli_corr_hc<-coeftest(modelo_adq_con_cont_bic_ampli, vcov. = vcovHC(modelo_adq_con_cont_bic_ampli, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_bic_ampli_corr_hac<-coeftest(modelo_adq_con_cont_bic_ampli, vcov. = vcovHAC(modelo_adq_con_cont_bic_ampli, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_adq_con_cont_bic_ampli, modelo_adq_con_cont_bic_ampli_corr_hc, type = "html",
          title = "Regulación en intercambio o adquirencia - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
```


* Selección de variables mediante AICc **con** efectos fijos de tiempo:   

```{r AICC ef adq amp, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_adq_con_cont_ef_aicc_amp<-lm(Adquirencia ~ Regulacion_inter_adq + Año_2010 + 
                                  Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                                  Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                  Cajero_Autom + Crimen + Cuenta + Pago_digital + 
                                  Debito + Credito + Densidad_Pob + Densidad_Neg +
                                  PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_inter_adq", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de años + regulación
cvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_con_cont_ef_aicc_amp)

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 19
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#Ya no se eliminan columnas
controles3<-controles

#variables a usar
#print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

# Estimación del modelo:
modelo_adq_con_cont_ef_aicc_amp=lm(Adquirencia ~ Regulacion_inter_adq + Debito + ICH + Valor_prom + Asia_Este + Am_lat + 
                                 Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                 Año_2021 + Año_2022 + Año_2023, 
                               data = datos_adq)

modelo_adq_con_cont_ef_aicc_amp_corr_hc<-coeftest(modelo_adq_con_cont_ef_aicc_amp, vcov. = vcovHC(modelo_adq_con_cont_ef_aicc_amp, "HC1",
                                                                                                  adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_ef_aicc_amp_corr_hac<-coeftest(modelo_adq_con_cont_ef_aicc_amp, vcov. = vcovHAC(modelo_adq_con_cont_ef_aicc_amp, 
                                                                                                    adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_ef_aicc_amp, modelo_adq_con_cont_ef_aicc_amp_corr_hc,type = "html", 
          title = "Regulación en intercambio o adquirencia - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
pred_modelo_adq_con_cont_aicc_ef_amp_con_reg<-predict(modelo_adq_con_cont_ef_aicc_amp, newdata = data_CR, interval = "prediction", 
                                                     level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```



* Selección de variables mediante BIC **con** efectos fijos de tiempo:   

```{r BIC int ef tiempo ampl adq, include=TRUE, results='asis', warning=FALSE}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_adq_con_cont_bic_ef_amp<-lm(Adquirencia ~ Regulacion_inter_adq + Año_2010 + 
                                  Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                                  Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                                  Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                                  Cajero_Autom + Crimen + Cuenta + Pago_digital + 
                                  Debito + Credito + Densidad_Pob + Densidad_Neg +
                                  PIB_pc_PPA + ICH + Valor_prom + Europa +
                                  Asia_Este + Am_lat, datos_adq)

variables_controles<-c("Regulacion_inter_adq", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat")


controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables año y regulación
cvar<-16
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_con_cont_bic_ef_amp)

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]
#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(BIC)<BIC[1]
#No se eliminan más columnas
controles4<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación del modelo
modelo_adq_con_cont_ef_bic=lm(Adquirencia ~ Regulacion_inter_adq + Debito + ICH + Valor_prom + Asia_Este + Am_lat + 
                                 Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                                 Año_2021 + Año_2022 + Año_2023,
                              data = datos_adq)


modelo_adq_con_cont_ef_bic_corr_hc<-coeftest(modelo_adq_con_cont_ef_bic, vcov. = vcovHC(modelo_adq_con_cont_ef_bic, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_ef_bic_corr_hac<-coeftest(modelo_adq_con_cont_ef_bic, vcov. = vcovHAC(modelo_adq_con_cont_ef_bic, adjust = TRUE, sandwich = TRUE))
# Visualización de resultados
stargazer(modelo_adq_con_cont_ef_bic, modelo_adq_con_cont_ef_bic_corr_hc,type = "html", 
          title = "Regulación en intercambio o adquirencia - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
pred_modelo_adq_con_cont_bic_ef_amp_con_reg<-predict(modelo_adq_con_cont_ef_bic, newdata = data_CR, interval = "prediction", 
                                                     level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

```

## Utilizando las características observadas más recientes para cada país:

```{r}
library(dplyr)
datos_2023=read_excel("D:/Documentos Usuarios/RODRIGUEZGJ/OneDrive - Banco Central de Costa Rica/Documentos/Base_datos_adquirencia_intercambio_2023.xlsx")
datos_2023=datos_2023[,-4]
datos_2023=na.omit(datos_2023)
```


```{r , include=TRUE, results='asis'}
modelo_adq_sin_cont_2023<-lm(Adquirencia ~ Regulacion_adquirencia, datos_2023)

# Errores robustos
modelo_adq_sin_cont_corr_2023_hc<-coeftest(modelo_adq_sin_cont_2023, vcov. = vcovHC(modelo_adq_sin_cont_2023, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_sin_cont_corr_2023_hac<-coeftest(modelo_adq_sin_cont_2023, vcov. = vcovHAC(modelo_adq_sin_cont_2023, adjust = TRUE, sandwich = TRUE))
# Visualización
#stargazer(modelo_int_sin_cont_2023, modelo_int_sin_cont_corr_2023_hc, type = "html", 
 #         title = "Estimación principal - Modelo sin controles", 
  #        column.labels = c("MCO","MCO HC"), model.names = F, 
   #       dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
    #      dep.var.caption = "Variable dependiente")
```

```{r}
#Pronóstico para CR
pred_adq_sin_cont_con_reg_2023<-predict(modelo_adq_sin_cont_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r modelo con controles 2023 adq, include=TRUE, results='asis'}
# Modelo con los controles
modelo_adq_con_cont_2023<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Credito +
                          Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_2023)
# Errores robustos
modelo_adq_con_cont_corr_2023_hc<-coeftest(modelo_adq_con_cont_2023, vcov. = vcovHC(modelo_adq_con_cont_2023, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_corr_2023_hac<-coeftest(modelo_adq_con_cont_2023, vcov. = vcovHAC(modelo_adq_con_cont_2023, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_int_con_cont, modelo_int_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre la tasa de intercambio con todos los controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
pred_adq_con_cont_con_reg_2023<-predict(modelo_adq_con_cont_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r seleccion aicc adq 2023, include=TRUE, results='asis', warning=FALSE}
# Selección con AICc
modelo_adq_con_cont_aicc_2023<-lm(formula = Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_2023)


variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_2023 %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_con_cont_aicc_2023)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 13
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 8
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}
#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 12
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
```

```{r}
# Estimación
modelo_adq_con_cont_aicc_2023=lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Am_lat,datos_2023)

#Pronóstico para CR
pred_adq_con_cont_aicc_con_reg_2023<-predict(modelo_adq_con_cont_aicc_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r,include=TRUE, results='asis'}
# Errores robustos
modelo_adq_con_cont_aicc_corr_2023_hc<-coeftest(modelo_adq_con_cont_aicc_2023, vcov. = vcovHC(modelo_adq_con_cont_aicc_2023, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_aicc_corr_2023_hac<-coeftest(modelo_adq_con_cont_aicc_2023, vcov. = vcovHAC(modelo_adq_con_cont_aicc_2023, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_adq_con_cont_aicc_2023, modelo_adq_con_cont_aicc_corr_2023_hc,
          type = "html", 
          title = "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F,
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:** 

```{r seleccion BIC int 2023 adq, include=TRUE, results='asis'}
# modelo inicial o saturado
modelo_adq_con_cont_bic_2023<-lm(formula = Adquirencia ~ Regulacion_intercambio + Cajero_Autom +
                          Crimen + Cuenta + Pago_digital + Debito + Credito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat, datos_2023)


variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat")

controles<- datos_2023 %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# método BIC
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_con_cont_bic_2023)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 12
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_2023))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_2023))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Ya no se eliminan columnas
controles2<-controles
#print(paste0("Las variables que seleccionó el criterio son: ",variables_controles))
# Estimación del modelo
modelo_adq_con_cont_bic_2023=lm(formula = Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Am_lat, 
    data = datos_2023)

#Pronóstico para CR
pred_adq_con_cont_bic_con_reg_2023<-predict(modelo_adq_con_cont_bic_2023, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]


modelo_adq_con_cont_bic_corr_2023_hc<-coeftest(modelo_adq_con_cont_bic_2023, vcov. = vcovHC(modelo_adq_con_cont_bic_2023, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_bic_corr_2023_hac<-coeftest(modelo_adq_con_cont_bic_2023, vcov. = vcovHAC(modelo_adq_con_cont_bic_2023, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_adq_con_cont_bic_2023, modelo_adq_con_cont_bic_corr_2023_hc, type = "html",
          title = "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa intercambio", "Tasa intercambio"), 
          dep.var.caption = "Variable dependiente")
```

## Regresión lineal múltiple con variables propuestas por el Fondo Monetario Internacional (FMI):

```{r modelo con controles FMI adq, include=TRUE, results='asis'}
# Modelo con los controles
modelo_adq_con_cont_FMI<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Credito +
                          Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat + Margen_neto + Concentracion_bancaria, datos_adq)
# Errores robustos
modelo_adq_con_cont_corr_FMI_hc<-coeftest(modelo_adq_con_cont_FMI, vcov. = vcovHC(modelo_adq_con_cont_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_corr_FMI_hac<-coeftest(modelo_adq_con_cont_FMI, vcov. = vcovHAC(modelo_adq_con_cont_FMI, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_adq_con_cont, modelo_adq_con_cont_corr_hc, type = "html", 
#          title = "Regresión sobre la tasa de adqercambio con todos los controles", 
#          column.labels = c("MCO","MCO HC"), model.names = F, 
#          dep.var.labels = c("Tasa adqercambio", "Tasa adqercambio"), 
#          dep.var.caption = "Variable dependiente")
#Pronóstico para CR
pred_adq_con_cont_con_reg_FMI<-predict(modelo_adq_con_cont_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante AICc sin efectos fijos de tiempo:** 

```{r seleccion aicc Adquirencia FMI adq , include=TRUE, results='asis', warning=FALSE}
# Selección con AICc
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()

modelo_adq_con_cont_aicc_FMI<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Credito +
                          Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                          Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa + 
                          Asia_Este + Am_lat + Margen_neto + Concentracion_bancaria, datos_adq)


variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat","Margen_neto","Concentracion_bancaria")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()

#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_con_cont_aicc_FMI)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 13
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 8
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc elimina la siguiente variable
controles<-controles[,-which.min(AICC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)],"' "))
variables_controles<-variables_controles[-which.min(AICC)]
```

```{r}
# Estimación
modelo_adq_con_cont_aicc_FMI=lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Margen_neto,datos_adq)

#Pronóstico para CR
pred_adq_con_cont_aicc_con_reg_FMI<-predict(modelo_adq_con_cont_aicc_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r,include=TRUE, results='asis'}
# Errores robustos
modelo_adq_con_cont_aicc_corr_FMI_hc<-coeftest(modelo_adq_con_cont_aicc_FMI, vcov. = vcovHC(modelo_adq_con_cont_aicc_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_aicc_corr_FMI_hac<-coeftest(modelo_adq_con_cont_aicc_FMI, vcov. = vcovHAC(modelo_adq_con_cont_aicc_FMI, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_adq_con_cont_aicc_FMI, modelo_adq_con_cont_aicc_corr_FMI_hc,
          type = "html", 
          title = "Estimacion principal - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = FALSE,
          dep.var.labels = c("Tasa Adquirencia", "Adquirencia"), 
          dep.var.caption = "Variable dependiente")
```

* **Usando las variables obtenidas mediante BIC sin efectos fijos de tiempo:** 

```{r seleccion BIC adq FMI BIC, include=TRUE, results='asis'}
# modelo inicial o saturado
modelo_adq_con_cont_bic_FMI<-modelo_adq_con_cont_FMI

variables_controles<-c("Regulacion_intercambio", "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito", "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Valor_prom", "Europa", "Asia_Este", "Am_lat","Margen_neto","Concentracion_bancaria")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# método BIC
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_con_cont_bic_FMI)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 14
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 9
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 6
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 5
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}

#min(BIC)<BIC[1]
controles<-controles[,-which.min(BIC)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)],"' "))
variables_controles<-variables_controles[-which.min(BIC)]

#Ya no se eliminan columnas
controles2<-controles
#pradq(paste0("Las variables que seleccionó el criterio son: ",variables_controles))
# Estimación del modelo
modelo_adq_con_cont_bic_FMI=lm(formula = Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Margen_neto, 
    data = datos_adq)

modelo_adq_con_cont_bic_corr_FMI_hc<-coeftest(modelo_adq_con_cont_bic_FMI, vcov. = vcovHC(modelo_adq_con_cont_bic_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_bic_corr_FMI_hac<-coeftest(modelo_adq_con_cont_bic_FMI, vcov. = vcovHAC(modelo_adq_con_cont_bic_FMI, adjust = TRUE, sandwich = TRUE))
# Visualización
stargazer(modelo_adq_con_cont_bic_FMI, modelo_adq_con_cont_bic_corr_FMI_hc, type = "html",
          title = "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
```

```{r adq pronostico bic con controles FMI}
#Pronóstico para CR
pred_adq_con_cont_bic_con_reg_FMI<-predict(modelo_adq_con_cont_bic_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

```{r, include=TRUE, results='asis'}
# Modelo con los controles con efectos fijos de tiempo: 
modelo_adq_con_cont_ef_FMI<-lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Credito +
                             Crimen + Cuenta + Pago_digital + Debito + Densidad_Pob +
                             Densidad_Neg + PIB_pc_PPA + ICH + Valor_prom + Europa +
                             Asia_Este + Am_lat + Margen_neto + Concentracion_bancaria + Año_2010 + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 +
                             Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + 
                             Año_2021 + Año_2022 + Año_2023 + Año_2024, datos_adq)

# errores robustos
modelo_adq_con_cont_ef_corr_FMI_hc<-coeftest(modelo_adq_con_cont_ef_FMI, vcov. = vcovHC(modelo_adq_con_cont_ef_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_ef_corr_FMI_hac<-coeftest(modelo_adq_con_cont_ef_FMI, vcov. = vcovHAC(modelo_adq_con_cont_ef_FMI, adjust = TRUE, sandwich = TRUE))

#stargazer(modelo_adq_con_cont_ef, modelo_adq_con_cont_ef_corr_hc,
#          type = "html", title = "Regresión sobre la tasa de Adquirencia con controles y efectos fijos de tiempo", 
#          column.labels = c("MCO","MCO HC"), model.names = F, dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), dep.var.caption = "Variable dependiente")

#Pronóstico para CR
pred_adq_con_cont_ef_con_reg_FMI<-predict(modelo_adq_con_cont_ef_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante AICc con efectos fijos de tiempo:** 

```{r, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el AICc (corrige por tamaño de muestra pequeña), más efectos fijos de tiempo
modelo_adq_con_cont_ef_aicc_FMI<-modelo_adq_con_cont_ef_FMI

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat","Margen_neto","Concentracion_bancaria")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de años + regulación
cvar<-16
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_con_cont_ef_aicc_FMI)

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 15
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la columna 19
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]
#Paso 7
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 8
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#variables a usar
#print(paste0("Este criterio deja las siguientes variables: ",variables_controles))

#Paso 9
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 10
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

#Paso 11
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(AICC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(AICC)+cvar+1)]

# Estimación del modelo:
modelo_adq_con_cont_ef_aicc_FMI=lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Valor_prom + Margen_neto + Asia_Este + 
                                Año_2014 + Año_2015 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024, 
                               data = datos_adq)

modelo_adq_con_cont_ef_aicc_corr_FMI_hc<-coeftest(modelo_adq_con_cont_ef_aicc_FMI, vcov. = vcovHC(modelo_adq_con_cont_ef_aicc_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_ef_aicc_corr_FMI_hac<-coeftest(modelo_adq_con_cont_ef_aicc_FMI, vcov. = vcovHAC(modelo_adq_con_cont_ef_aicc_FMI, adjust = TRUE, sandwich = TRUE))

stargazer(modelo_adq_con_cont_ef_aicc_FMI, modelo_adq_con_cont_ef_aicc_corr_FMI_hc,type = "html", 
          title = "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
```

```{r pronostico adq con aicc ef tiempo FMI}
#Pronóstico para CR
pred_adq_con_cont_ef_aic_con_reg_FMI<-predict(modelo_adq_con_cont_ef_aicc_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

* **Usando las variables obtenidas mediante BIC con efectos fijos de tiempo:** 

```{r BIC adq ef tiempo FMI, include=TRUE, results='asis'}
#Seleccionar el modelo utilizando el BIC, más efectos fijos de tiempo
modelo_adq_con_cont_bic_ef_FMI<-modelo_adq_con_cont_ef_FMI

variables_controles<-c("Regulacion_intercambio", "Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Cajero_Autom", "Crimen", "Cuenta", "Pago_digital", "Debito",
                       "Credito", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH",
                       "Valor_prom","Europa", "Asia_Este", "Am_lat","Margen_neto","Concentracion_bancaria")

controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
# cantidad de variables año y regulación
cvar<-16
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_con_cont_bic_ef_FMI)

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}
#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 7
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 8
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]
#Paso 9
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 10
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]

#Paso 11
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:(ncol(controles)-cvar)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+cvar+1)], datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 17
controles<-controles[,-(which.min(BIC)+cvar+1)]
#print(paste0("Se elimina por este criterio la variable: ","'",variables_controles[which.min(BIC)+cvar+1],"' "))
variables_controles<-variables_controles[-(which.min(BIC)+cvar+1)]


# Estimación del modelo
modelo_adq_con_cont_ef_bic_FMI=lm(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Valor_prom +
                                Asia_Este + Margen_neto + Año_2014 + Año_2015 + Año_2016 + 
                                Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + 
                                Año_2022 + Año_2023 + Año_2024,
                              data = datos_adq)


modelo_adq_con_cont_ef_bic_corr_FMI_hc<-coeftest(modelo_adq_con_cont_ef_bic_FMI, vcov. = vcovHC(modelo_adq_con_cont_ef_bic_FMI, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_adq_con_cont_ef_bic_corr_FMI_hac<-coeftest(modelo_adq_con_cont_ef_bic_FMI, vcov. = vcovHAC(modelo_adq_con_cont_ef_bic_FMI, adjust = TRUE, sandwich = TRUE))
# Visualización de resultados
stargazer(modelo_adq_con_cont_ef_bic_FMI, modelo_adq_con_cont_ef_bic_corr_FMI_hc,type = "html", 
          title = "Estimación principal - Modelo BICc con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
```

```{r pronostico adq con bic ef tiempo FMI}
#Pronóstico para CR
pred_modelo_adq_con_cont_bic_ef_con_reg_FMI<-predict(modelo_adq_con_cont_ef_bic_FMI, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
```

## Regresión sin variables uso de tarjetas

::: {style="text-align: justify"}
A continuación se muestran los modelos para tasa de intercambio sin considerar las variables control relacionadas con tarjetas. Siguiendo la metodología anterior, se procede a seleccionar las variables con los criterios de información AICc y BIC.  
:::
 
* Selección de variables mediante AICc **sin** efectos fijos de tiempo:    

```{r mod adq sin tarjetas aicc, results='asis'}
# Selección con AICc
variables_controles<-c("Regulacion_intercambio","Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Europa", "Asia_Este", "Am_lat")
datos_adq<-datos %>% dplyr::select(c("Adquirencia",variables_controles)) %>% na.omit()
# Estimación modelo inicial
modelo_adq_sin_tarj_aicc<-lm(Adquirencia ~ Regulacion_intercambio + Crimen + Densidad_Pob + 
                               Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_adq)
controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_sin_tarj_aicc)

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(AICC)<AICC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(AICC)<AICC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(AICC)<AICC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(AICC)<AICC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(AICC)<AICC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(AICC)]
variables_controles<-variables_controles[-which.min(AICC)]
#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(AICC)<AICC[1]
# El AICC ya no es menor, entonces no se eliminan columnas
controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación
modelo_adq_sin_tarj_aicc<-lm(Adquirencia ~ Regulacion_intercambio + ICH + Europa + Am_lat, data =  datos_adq)


modelo_adq_sin_tarj_aicc_corr_hc<-coeftest(modelo_adq_sin_tarj_aicc, vcov. = vcovHC(modelo_adq_sin_tarj_aicc, "HC1",
                                                                                                  adjust = TRUE, sandwich = TRUE))

modelo_adq_sin_tarj_aicc_corr_hac<-coeftest(modelo_adq_sin_tarj_aicc, vcov. = vcovHAC(modelo_adq_sin_tarj_aicc, 
                                                                                                    adjust = TRUE, sandwich = TRUE))
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_adq_sin_tarj_aicc_sin_reg<-predict(modelo_adq_sin_tarj_aicc, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_adq_sin_tarj_aicc_con_reg<-predict(modelo_adq_sin_tarj_aicc, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
#summary(modelo_int_sin_tarj_aicc)
stargazer(modelo_adq_sin_tarj_aicc, modelo_adq_sin_tarj_aicc_corr_hc, type = "html", 
          title = "Modelo sin uso de tarjetas - Modelo AICc sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia","Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
```

* Selección de variables mediante BIC **sin** efectos fijos de tiempo: 

```{r mod adq sin tarjetas BIC, results='asis'}
# Selección con BIC
variables_controles<-c("Regulacion_intercambio","Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", "ICH", "Europa", "Asia_Este", "Am_lat")
datos_adq<-datos %>% dplyr::select(c("Adquirencia",variables_controles)) %>% na.omit()
# Estimación modelo inicial
modelo_adq_sin_tarj_bic<-lm(Adquirencia ~ Regulacion_intercambio + Crimen + Densidad_Pob + 
                               Densidad_Neg + PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =  datos_adq)
controles<- datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()
#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_sin_tarj_bic)

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(BIC)<BIC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(BIC)<BIC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]
#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(BIC)<BIC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]
#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(BIC)<BIC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(BIC)<BIC[1]
#El criterio excluye la siguiente variable
controles<-controles[,-which.min(BIC)]
variables_controles<-variables_controles[-which.min(BIC)]
#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles, datos_adq))

for (i in 2:ncol(controles)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i)], datos_adq))  
}
#min(BIC)<BIC[1]
# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación
modelo_adq_sin_tarj_bic<-lm(Adquirencia ~ Regulacion_intercambio + ICH + Europa + Am_lat, data =  datos_adq)

modelo_adq_sin_tarj_bic_corr_hc<-coeftest(modelo_adq_sin_tarj_bic, vcov. = vcovHC(modelo_adq_sin_tarj_bic, "HC1",
                                                                                                  adjust = TRUE, sandwich = TRUE))

modelo_adq_sin_tarj_bic_corr_hac<-coeftest(modelo_adq_sin_tarj_bic, vcov. = vcovHAC(modelo_adq_sin_tarj_bic, 
                                                                                                    adjust = TRUE, sandwich = TRUE))
#Pronóstico para CR
#Con solo una variable:
data_CR<-datos
data_CR[ which(datos$Codigo_Pais=="CRI"), which(names(datos)=="Regulacion_intercambio") ]<-1
#Sin regulación
pred_adq_sin_tarj_bic_sin_reg<-predict(modelo_adq_sin_tarj_bic, newdata = datos, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
#Con regulación
pred_adq_sin_tarj_bic_con_reg<-predict(modelo_adq_sin_tarj_bic, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
#summary(modelo_int_sin_tarj_bic)
stargazer(modelo_adq_sin_tarj_bic, modelo_adq_sin_tarj_bic_corr_hc, type = "html", 
          title = "Modelo sin uso de tarjetas - Modelo BIC sin efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia","Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
```

**A continuación se presentan los resultados de usar los criterios de información AICc y BIC incluyendo efectos fijos en los modelos:**  

* Selección de variables mediante AICc **con** efectos fijos de tiempo:   

```{r mod adq sin tar ef aicc, results='asis', message=FALSE, warning=FALSE}
## Modelo con efectos fijos sin variables de uso tarjetas

# Selección con AICc
variables_controles<-c("Regulacion_intercambio","Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022","Año_2023","Año_2024",
                       "Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Europa", "Asia_Este", "Am_lat")

datos_adq<-datos %>% dplyr::select("Adquirencia",variables_controles) %>% na.omit()
# Estimación modelo inicial
modelo_adq_sin_tarj_aicc_ef<-lm(Adquirencia ~ Regulacion_intercambio  + Año_2010 + 
                               Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                               Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                               Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + 
                               Crimen + Densidad_Pob + Densidad_Neg + 
                               PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =   datos_adq)

controles<-  datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
AICC<-c()
AICC[1]<-aicc(modelo_adq_sin_tarj_aicc_ef)

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 2
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 3
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 4
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 5
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(AICC)<AICC[1]
#El AICc es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(AICC)+13)]
variables_controles<-variables_controles[-(which.min(AICC)+13)]

#Paso 6
AICC<-c()
AICC[1]<-aicc(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  AICC[i]<-aicc(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(AICC)<AICC[1]
# El AICc ya no es menor, entonces no se eliminan columnas
controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación del modelo:
# se omite la variable2023 por multicolinealidad
modelo_adq_sin_tarj_aicc_ef<-lm(Adquirencia ~ Regulacion_intercambio + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                                              Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + ICH + Europa + Am_lat, 
                                data = datos_adq)

modelo_adq_sin_tarj_aicc_ef_corr_hc<-coeftest(modelo_adq_sin_tarj_aicc_ef, vcov. = vcovHC(modelo_adq_sin_tarj_aicc_ef, "HC1",
                                                                                                  adjust = TRUE, sandwich = TRUE))

modelo_adq_sin_tarj_aicc_ef_corr_hac<-coeftest(modelo_adq_sin_tarj_aicc_ef, vcov. = vcovHAC(modelo_adq_sin_tarj_aicc_ef, 
                                                                                                    adjust = TRUE, sandwich = TRUE))

#Pronóstico para CR
pred_adq_sin_tarj_aicc_ef_con_reg<-predict(modelo_adq_sin_tarj_aicc_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

# Visualización
stargazer(modelo_adq_sin_tarj_aicc_ef, modelo_adq_sin_tarj_aicc_ef_corr_hc, type = "html", 
          title = "Modelo sin uso de tarjetas - Modelo AICc con efectos fijos de tiempo", 
          column.labels = c("MCO", "MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
```


* Selección de variables mediante BIC **con** efectos fijos de tiempo:   

```{r mod adq sin tar ef bic, results='asis', message=FALSE, warning=FALSE}
# Selección con BIC
variables_controles<-c("Regulacion_intercambio","Año_2010", "Año_2011", "Año_2012",
                       "Año_2013","Año_2014", "Año_2015", "Año_2016", "Año_2017", 
                       "Año_2018", "Año_2019", "Año_2020","Año_2021", "Año_2022", "Año_2023", "Año_2024",
                       "Crimen", "Densidad_Pob", "Densidad_Neg", "PIB_pc_PPA", 
                       "ICH", "Europa", "Asia_Este", "Am_lat")

datos_adq<-datos %>% dplyr::select(c("Adquirencia",variables_controles)) %>% na.omit()
# Estimación modelo inicial
modelo_adq_sin_tarj_bic_ef<-lm(Adquirencia ~ Regulacion_intercambio  + Año_2010 + 
                               Año_2011 + Año_2012 + Año_2013 + Año_2014 + 
                               Año_2015 + Año_2016 + Año_2017 + Año_2018 +
                               Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 +
                               Crimen + Densidad_Pob + Densidad_Neg + 
                               PIB_pc_PPA + ICH + Europa + Asia_Este + 
                               Am_lat, data =   datos_adq)

controles<-  datos_adq %>% dplyr::select(c(variables_controles)) %>% as.matrix()


#Paso 1
BIC<-c()
BIC[1]<-BIC(modelo_adq_sin_tarj_bic_ef)

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la siguiente variable
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 2
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 3
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 4
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 5
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(BIC)<BIC[1]
#El BIC es menor al eliminar la columna 15
controles<-controles[,-(which.min(BIC)+13)]
variables_controles<-variables_controles[-(which.min(BIC)+13)]

#Paso 6
BIC<-c()
BIC[1]<-BIC(lm(Adquirencia ~ controles,  datos_adq))

for (i in 2:(ncol(controles)-12)) {
  BIC[i]<-BIC(lm(Adquirencia ~ controles[,-c(i+13)],  datos_adq))  
}

#min(BIC)<BIC[1]
# El BIC ya no es menor, entonces no se eliminan columnas
controles1<-controles
#print(paste0("El criterio deja las siguientes variables: ","'",variables_controles,"' "))

# Estimación del modelo:
# Se omite 2023 por multicolinealidad
modelo_adq_sin_tarj_bic_ef<-lm(Adquirencia ~ Regulacion_intercambio + Año_2011 + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + 
                                              Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 + Año_2024 + ICH + Europa + Am_lat, 
                                data = datos_adq)

modelo_adq_sin_tarj_bic_ef_corr_hc<-coeftest(modelo_adq_sin_tarj_bic_ef, vcov. = vcovHC(modelo_adq_sin_tarj_bic_ef, "HC1",
                                                                                                  adjust = TRUE, sandwich = TRUE))

modelo_adq_sin_tarj_bic_ef_corr_hac<-coeftest(modelo_adq_sin_tarj_bic_ef, vcov. = vcovHAC(modelo_adq_sin_tarj_bic_ef, 
                                                                                                    adjust = TRUE, sandwich = TRUE))

#Pronóstico para CR
pred_adq_sin_tarj_bic_ef_sin_reg<-predict(modelo_adq_sin_tarj_bic_ef, newdata = datos, interval = "prediction",
                                        level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]

#Con regulación
pred_adq_sin_tarj_bic_ef_con_reg<-predict(modelo_adq_sin_tarj_bic_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(datos$Codigo_Pais=="CRI")]
# Visualización
stargazer(modelo_adq_sin_tarj_bic_ef, modelo_adq_sin_tarj_bic_ef_corr_hc, type = "html", 
          title = "Modelo sin uso de tarjetas - Modelo BIC con efectos fijos de tiempo", 
          column.labels = c("MCO","MCO HC"), model.names = F, 
          dep.var.labels = c("Tasa Adquirencia", "Tasa Adquirencia"), 
          dep.var.caption = "Variable dependiente")
```


## Regresión con variables instrumentales

```{r, warning=FALSE, results='asis'}
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()
#Sin los efectos del tiempo:
modelo_iv_adq<-ivreg(formula = Adquirencia ~ Valor_prom + Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg +  PIB_pc_PPA + Europa + Asia_Este + Am_lat | Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + Am_lat + ICH, data = datos_adq)

# Prueba de Hausman:
# Al realizar la prueba de Hausman vemos que el valor en p-value es menor a 0.05,lo cual aceptamos la hipótesis alternativa, esto quiere decir que existe endogenidad.
#summary(modelo_iv_int, diagnostics = TRUE)
# Errores robustos
modelo_iv_adq_corr_hc<-coeftest(modelo_iv_adq, vcov. = vcovHC(modelo_iv_adq, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_iv_adq_corr_hac<-coeftest(modelo_iv_adq, vcov. = vcovHAC(modelo_iv_adq, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_iv_adq, modelo_iv_adq_corr_hc, type = "html", 
          title = "Regresión sobre la tasa de adquirencia variables instrumentales", 
          column.labels = c("Instrumental","Instrumental HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
#Como la probabilidad asociada es menor al nivel de significancia de la prueba de Wu-Hausman, determina que hay #endogenidad. Es decir, hay correlación entre las variables y el término de error y por lo tanto, la variable ICH #no es un instrumento débil.
#Pronósticos para Costa Rica
#Con regulación
# data_CR: se le asigna a CR la regulación.
pred_iv_adq_con_reg <- predict(modelo_iv_adq, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
summary(modelo_iv_adq)
```


```{r, warning=FALSE, results='asis'}
# Agregando efectos de tiempo:  
# Se omiten 2010 al 2011 y 2023 por problemas de colinealidad
modelo_iv_adq_ef<-ivreg(formula = Adquirencia ~ Valor_prom + Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg +  PIB_pc_PPA + Europa + Asia_Este + Am_lat + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023 | Regulacion_intercambio + Crimen + Densidad_Pob + Densidad_Neg + PIB_pc_PPA + Europa + Asia_Este + Am_lat + ICH + Año_2012 + Año_2013 + Año_2014 + Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + Año_2023, 
                        data = datos)

# Prueba de Hausman:
# Al realizar la prueba de Hausman vemos que el valor en p-value es menor a 0.05,lo cual aceptamos la hipótesis alternativa, esto quiere decir que existe endogenidad.
#summary(modelo_iv_int_ef, diagnostics = TRUE)

#coeftest(modelo_iv_int_ef, vcov.=vcovHAC(modelo_iv_int_ef))

# Errores robustos
modelo_iv_adq_ef_corr_hc<-coeftest(modelo_iv_adq_ef, vcov. = vcovHC(modelo_iv_adq_ef, "HC1", adjust = TRUE, sandwich = TRUE))

modelo_iv_adq_ef_corr_hac<-coeftest(modelo_iv_adq_ef, vcov. = vcovHAC(modelo_iv_adq_ef, adjust = TRUE, sandwich = TRUE))

# Visualización
stargazer(modelo_iv_adq_ef, modelo_iv_adq_ef_corr_hc, type = "html", 
          title = "Regresión sobre la tasa de adquirencia variables instrumentales con efectos fijos de tiempo", 
          column.labels = c("Instrumental","Instrumental HC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia", "Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")

#Pronósticos para Costa Rica

# sin efectos de tiempo
pred_iv_adq_ef_con_reg <- predict(modelo_iv_adq_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
# con efectos de tiempo
pred_iv_adq_ef_con_reg_ef<-round((predict(modelo_iv_adq_ef, newdata = data_CR, interval = "prediction", level = 0.95, type = "response")[which(data_CR$Codigo_Pais=="CRI")]-(1*0.09) - (1.25*0.05) - (1.5*0.02) - (1.75*0.05))/(0.71 + 0.08),2)
```


## Modelo de panel de datos con efectos aleatorios

A continuación modelo seleccionado con AICc:  

```{r efectos aleatorios aicc adq, message=FALSE, results='asis'}
# datos
datos_adq<-datos %>% dplyr::select(-Intercambio) %>% na.omit()
# se usa el modelo seleccionado por el AICC
modelo_adq_con_cont_aicc_ef_al<-lmer(Adquirencia ~ Regulacion_intercambio + Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Am_lat + (1 | Codigo_Pais), 
                                                   data = datos_adq)
#summary(modelo_adq_con_cont_aicc_ef_al)
# almacenando el resultado del modelo para usar los coeficientes
resultado_aicc<-summary(modelo_adq_con_cont_aicc_ef_al)
#Pronóstico para CR
#Con regulación
# stata agarra la matriz xb para predecir.

#nombre de variables
variables<-names(modelo_adq_con_cont_aicc_ef_al@frame)[2:(length(names(modelo_adq_con_cont_aicc_ef_al@frame))-1)]
#### pronóstico
Caso_CR<-datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(variables)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pre_adq_con_cont_aicc_ef_al<-sum(resultado_aicc$coefficients[,1]*Caso_CR)
#pre_int_con_cont_aicc_ef_al

# Visualización
stargazer(modelo_adq_con_cont_aicc_ef_al, type = "html", 
          title = "Modelo efectos aleatorios - AICc sin efectos fijos de tiempo", 
          column.labels = c("Efectos Aleatorios AICc"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")

```


A continuación modelo seleccionado con BIC:   

```{r efectos aleatorios bic adq, message=FALSE, results='asis'}
# se usa el modelo seleccionado por el BIC
modelo_adq_con_cont_bic_ef_al<-lmer(Adquirencia ~ Regulacion_intercambio + Cuenta +
                                      Asia_Este + Am_lat + (1 | Codigo_Pais), 
                                     data = datos_adq)

#summary(modelo_int_con_cont_bic_ef_al)
# almacenando el resultado del modelo para usar los coeficientes
resultado_bic<-summary(modelo_adq_con_cont_bic_ef_al)
#Pronóstico para CR
#Con regulación
# stata agarra la matriz xb para predecir.

#nombre de variables
variables<-names(modelo_adq_con_cont_bic_ef_al@frame)[2:(length(names(modelo_adq_con_cont_bic_ef_al@frame))-1)]
#### pronóstico
Caso_CR<-datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(variables)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pre_adq_con_cont_bic_ef_al<-sum(resultado_bic$coefficients[,1]*Caso_CR)
#pre_int_con_cont_bic_ef_al

# Visualización
stargazer(modelo_adq_con_cont_bic_ef_al, type = "html", 
          title = "Modelo efectos aleatorios - BIC sin efectos fijos de tiempo", 
          column.labels = c("Efectos Aleatorios BIC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
```


A continuación modelo seleccionado con AICc y efectos de tiempo:   

```{r efectos aleatorios aicc tiempo adq, message=FALSE, results='asis'}
# se usa el modelo seleccionado por el AICC y variables de tiempo
# 2010 al 2012 se eliminan por multicolinealidad
modelo_adq_con_cont_aicc_tiem_ef_al<-lmer(Adquirencia ~ Regulacion_intercambio + Año_2013 + Año_2014 + 
                                                        Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
                                                        Año_2023 + Cajero_Autom + Cuenta + Valor_prom + Asia_Este + Am_lat + (1 | Codigo_Pais), 
                                                        data = datos_adq )
#summary(modelo_adq_con_cont_aicc_tiem_ef_al)
# almacenando el resultado del modelo para usar los coeficientes
resultado_aicc_ef<-summary(modelo_adq_con_cont_aicc_tiem_ef_al)
#Pronóstico para CR
#Con regulación
# stata agarra la matriz xb para predecir.

#nombre de variables
variables<-names(modelo_adq_con_cont_aicc_tiem_ef_al@frame)[2:(length(names(modelo_adq_con_cont_aicc_tiem_ef_al@frame))-1)]
#### pronóstico
Caso_CR<-datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(variables)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pre_adq_con_cont_aicc_tiem_ef_al<-sum(resultado_aicc_ef$coefficients[,1]*Caso_CR)
#pre_adq_con_cont_aicc_tiem_ef_al

# Visualización
stargazer(modelo_adq_con_cont_aicc_tiem_ef_al, type = "html", 
          title = "Modelo efectos aleatorios - AICc con efectos fijos de tiempo", 
          column.labels = c("Efectos Aleatorios AICc"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
```


A continuación modelo seleccionado con bic y efectos de tiempo:   

```{r efectos aleatorios bic tiempo adq, message=FALSE, results='asis'}
# se usa el modelo seleccionado por el BIC y variables de tiempo
modelo_adq_con_cont_bic_tiem_ef_al<-lmer(Adquirencia ~ Regulacion_intercambio + Año_2013 + Año_2014 + 
                                                        Año_2015 + Año_2016 + Año_2017 + Año_2018 + Año_2019 + Año_2020 + Año_2021 + Año_2022 + 
                                                        Año_2023 + Cuenta + Asia_Este + Am_lat + (1 | Codigo_Pais), 
                                     data = datos_adq)
#summary(modelo_int_con_cont_bic_tiem_ef_al)
# almacenando el resultado del modelo para usar los coeficientes
resultado_bic_ef<-summary(modelo_adq_con_cont_bic_tiem_ef_al)
#Pronóstico para CR
#Con regulación
# stata agarra la matriz xb para predecir.

#nombre de variables
variables<-names(modelo_adq_con_cont_bic_tiem_ef_al@frame)[2:(length(names(modelo_adq_con_cont_bic_tiem_ef_al@frame))-1)]
#### pronóstico
Caso_CR<-datos %>% filter(Codigo_Pais=="CRI") %>% dplyr::select(variables)
Caso_CR<-cbind(1,Caso_CR) # agregar un 1 para que se multiple con el intercepto general

pre_adq_con_cont_bic_tiem_ef_al<-sum(resultado_bic_ef$coefficients[,1]*Caso_CR)
#pre_adq_con_cont_bic_tiem_ef_al
# Visualización
stargazer(modelo_adq_con_cont_bic_tiem_ef_al, type = "html", 
          title = "Modelo efectos aleatorios - BIC con efectos fijos de tiempo", 
          column.labels = c("Efectos Aleatorios BIC"), model.names = F, 
          dep.var.labels = c("Tasa adquirencia"), 
          dep.var.caption = "Variable dependiente")
```


## Estimación de las comisiones de adquirencia:
Dado que la mayoría de los países no regulan adquirencia, la información en la base de datos puede corresponder a comisiones promedio. De ser ese el caso, se necesitaría ajustar la estimación por la estructura de comisiones de adquirencia en Costa Rica. En particular, durante el 2023:

* Las actividades con una adquirencia de entre 0 a 1% representaban el 10% de los ingresos de los adquirentes.
* Las actividades con una adquirencia de entre 1,01% a 1,25% representaban el 5% de los ingresos de los adquirentes.
* Las actividades con una adquirencia de entre 1,26% a 1,50% representaban el 2% de los ingresos de los adquirentes.
* Las actividades con una adquirencia de entre 1,51% a 1,75% representaban el 12% de los ingresos de los adquirentes.
* Las actividades con una adquirencia de entre 1,76% a 2% representaban el 71% de los ingresos de los adquirentes.

A continuación, se presenta para cada modelo las comisiones de adquirencia estimadas para Costa Rica sin y con este ajuste.

### Pronósticos de la estimación principal:

#### Sin Ajuste:

```{r pronosticos tasa adquirencia, include=TRUE, warning=FALSE}
pred1_adq_con_reg<-predict(modelo_adq_con_cont_aicc, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred2_adq_con_reg<-predict(modelo_adq_con_cont_bic, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred3_adq_con_reg<-predict(modelo_adq_con_cont_aicc_ef, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred4_adq_con_reg<-predict(modelo_adq_con_cont_bic_ef, newdata = data_CR, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_adq_con_reg<-mean(c(as.numeric(pred1_adq_con_reg), 
                         as.numeric(pred2_adq_con_reg), 
                         as.numeric(pred3_adq_con_reg),
                         as.numeric(pred4_adq_con_reg)))

####################################
#Tabla pronósticos -----

pronosticos_adq<-as.data.frame(round(
                               cbind(
                                     c( pred_adq_sin_cont_con_reg,
                                        pred1_adq_con_reg, 
                                        pred2_adq_con_reg, 
                                        pred3_adq_con_reg, 
                                        pred4_adq_con_reg, 
                                        pred_adq_con_reg) 
                                     ),2))

rownames(pronosticos_adq)<-c("Estimación principal - Modelo sin controles", 
                             "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
                             "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
                             "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
                             "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
                             "Estimación principal - Promedio modelos AICc y BIC")

names(pronosticos_adq)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq, caption = "Comisión de adquirencia esperada para Costa Rica al estimar un modelo de regresión lineal múltiple (sin ajuste)") 
```

#### Con ajuste:
```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno

pronosticos_adq_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_adq_sin_cont_con_reg - num) / deno,
        as.numeric(pred1_adq_con_reg - num) / deno,
        as.numeric(pred2_adq_con_reg - num) / deno,
        as.numeric(pred3_adq_con_reg - num) / deno,
        as.numeric(pred4_adq_con_reg - num) / deno,
        as.numeric(pred_adq_con_reg - num) / deno)),2))
rownames(pronosticos_adq_ajus)<-c("Estimación principal - Modelo sin controles", 
                             "Estimación principal - Modelo AICc sin efectos fijos de tiempo", 
                             "Estimación principal - Modelo BIC sin efectos fijos de tiempo", 
                             "Estimación principal - Modelo AICc con efectos fijos de tiempo", 
                             "Estimación principal - Modelo BIC con efectos fijos de tiempo", 
                             "Estimación principal - Promedio modelos AICc y BIC")

names(pronosticos_adq_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al estimar un modelo de regresión lineal múltiple (con ajuste)") 
```

### Truncamiento en 0:

#### Sin ajuste:

```{r}
pred_adq_trunc_0_con_reg<-mean(c(as.numeric(pred_adq_trunc_0_aicc_con_reg), 
                                as.numeric(pred_adq_trunc_0_bic_con_reg), 
                                as.numeric(pred_adq_trunc_0_aicc_ef_con_reg), 
                                as.numeric(pred_adq_trunc_0_bic_ef_con_reg)))

####################################
#Tabla pronósticos -----

pronosticos_adq_trunc_0<-as.data.frame(round(
                               cbind(
                                     c(pred_adq_trunc_0_aicc_con_reg,
                                        pred_adq_trunc_0_bic_con_reg,
                                        pred_adq_trunc_0_aicc_ef_con_reg,
                                        pred_adq_trunc_0_bic_ef_con_reg,
                                        pred_adq_trunc_0_con_reg)),2))

rownames(pronosticos_adq_trunc_0)<-c("Truncado en 0 - Modelo AICc sin efectos fijos de tiempo", 
                             "Truncado en 0 - Modelo BIC sin efectos fijos de tiempo", 
                             "Truncado en 0 - Modelo AICc con efectos fijos de tiempo", 
                             "Truncado en 0 - Modelo BIC con efectos fijos de tiempo", 
                             "Truncado en 0 - Promedio modelos AICc y BIC")

names(pronosticos_adq_trunc_0)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_trunc_0, caption = "Comisión de adquirencia esperada para Costa Rica al estimar un modelo de regresión lineal múltiple truncado en 0 (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_ajus_trunc_0<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_adq_trunc_0_aicc_con_reg - num) / deno,
        as.numeric(pred_adq_trunc_0_bic_con_reg - num) / deno,
        as.numeric(pred_adq_trunc_0_aicc_ef_con_reg - num) / deno,
        as.numeric(pred_adq_trunc_0_bic_ef_con_reg - num) / deno,
        as.numeric(pred_adq_trunc_0_con_reg - num) / deno)),2))    

rownames(pronosticos_adq_ajus_trunc_0)<-c("Truncado en 0 - Modelo AICc sin efectos fijos de tiempo", 
                             "Truncado en 0 - Modelo BIC sin efectos fijos de tiempo", 
                             "Truncado en 0 - Modelo AICc con efectos fijos de tiempo", 
                             "Truncado en 0 - Modelo BIC con efectos fijos de tiempo", 
                             "Truncado en 0 - Promedio modelos AICc y BIC")

names(pronosticos_adq_ajus_trunc_0)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_ajus_trunc_0, caption = "Comisión de adquirencia esperada para Costa Rica al estimar un modelo de regresión lineal múltiple truncado en 0 (con ajuste)") 
```

### Truncamiento en 0.34:

#### Sin ajuste:

```{r}
pred_adq_trunc_0.34_con_reg<-mean(c(as.numeric(pred_adq_trunc_0.34_aicc_con_reg), 
                                    as.numeric(pred_adq_trunc_0.34_bic_con_reg), 
                                    as.numeric(pred_adq_trunc_0.34_aicc_ef_con_reg), 
                                    as.numeric(pred_adq_trunc_0.34_bic_ef_con_reg)))

####################################
#Tabla pronósticos -----

pronosticos_adq_trunc_0.34<-as.data.frame(round(
                               cbind(
                                     c(pred_adq_trunc_0.34_aicc_con_reg,
                                        pred_adq_trunc_0.34_bic_con_reg,
                                        pred_adq_trunc_0.34_aicc_ef_con_reg,
                                        pred_adq_trunc_0.34_bic_ef_con_reg,
                                        pred_adq_trunc_0.34_con_reg)),2))

rownames(pronosticos_adq_trunc_0.34)<-c("Truncado en 0.34 - Modelo AICc sin efectos fijos de tiempo", 
                             "Truncado en 0.34 - Modelo BIC sin efectos fijos de tiempo", 
                             "Truncado en 0.34 - Modelo AICc con efectos fijos de tiempo", 
                             "Truncado en 0.34 - Modelo BIC con efectos fijos de tiempo", 
                             "Truncado en 0.34 - Promedio modelos AICc y BIC")

names(pronosticos_adq_trunc_0.34)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_trunc_0.34, caption = "Comisión de adquirencia esperada para Costa Rica al estimar un modelo de regresión lineal múltiple truncado en 0.34 (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_ajus_trunc_0.34<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_adq_trunc_0.34_aicc_con_reg - num) / deno,
        as.numeric(pred_adq_trunc_0.34_bic_con_reg - num) / deno,
        as.numeric(pred_adq_trunc_0.34_aicc_ef_con_reg - num) / deno,
        as.numeric(pred_adq_trunc_0.34_bic_ef_con_reg - num) / deno,
        as.numeric(pred_adq_trunc_0.34_con_reg - num) / deno)),2))      

rownames(pronosticos_adq_ajus_trunc_0.34)<-c("Truncado en 0.34 - Modelo AICc sin efectos fijos de tiempo", 
                             "Truncado en 0.34 - Modelo BIC sin efectos fijos de tiempo", 
                             "Truncado en 0.34 - Modelo AICc con efectos fijos de tiempo", 
                             "Truncado en 0.34 - Modelo BIC con efectos fijos de tiempo", 
                             "Truncado en 0.34 - Promedio modelos AICc y BIC")

names(pronosticos_adq_ajus_trunc_0.34)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_ajus_trunc_0.34, caption = "Comisión de adquirencia esperada para Costa Rica al estimar un modelo de regresión lineal múltiple truncado en 0.34 (con ajuste)") 
```


### Transformación logarítmica de la variable dependiente:
 
#### Sin ajuste:

```{r}
#Sin Ajuste:
pred1_log_adq_sin_reg<-exp(predict(modelo_log_adq_con_cont_aicc, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")])

pred2_log_adq_sin_reg<-exp(predict(modelo_log_adq_con_cont_bic, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")])

pred3_log_adq_sin_reg<-exp(predict(modelo_log_adq_con_cont_aicc_ef, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")])
pred4_log_adq_sin_reg<-exp(predict(modelo_log_adq_con_cont_bic_ef, newdata = datos, 
                                      interval = "prediction", level = 0.95, 
                                      type = "response")[which(datos$Codigo_Pais=="CRI")])

pred_log_adq_sin_reg<-mean(c(as.numeric(pred1_log_adq_sin_reg),     
                             as.numeric(pred2_log_adq_sin_reg), 
                             as.numeric(pred3_log_adq_sin_reg), 
                             as.numeric(pred4_log_adq_sin_reg)))

#Tabla pronósticos
pronosticos_adq_alt_log<-as.data.frame(round(
                                        cbind(
                                             c(
                                                pred1_log_adq_sin_reg, 
                                                pred2_log_adq_sin_reg, 
                                                pred3_log_adq_sin_reg, 
                                                pred4_log_adq_sin_reg, 
                                                pred_log_adq_sin_reg) ),2))

rownames(pronosticos_adq_alt_log)<-c(
                                     "Modelo con transformación logarítmica - Modelo AICc sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo BIC sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo AICc con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo BIC con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Promedio modelos AICc y BIC")

names(pronosticos_adq_alt_log)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_alt_log, caption = "Comisión de adquirencia esperada para Costa Rica de acuerdo con el modelo con transformación logarítmica (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_log_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred1_log_adq_sin_reg - num) / deno,
        as.numeric(pred2_log_adq_sin_reg - num) / deno,
        as.numeric(pred3_log_adq_sin_reg - num) / deno,
        as.numeric(pred4_log_adq_sin_reg - num) / deno,
        mean(as.numeric(pred1_log_adq_sin_reg - num) / deno,
        as.numeric(pred2_log_adq_sin_reg - num) / deno,
        as.numeric(pred3_log_adq_sin_reg - num) / deno,
        as.numeric(pred4_log_adq_sin_reg - num) / deno))),2))    
rownames(pronosticos_adq_log_ajus)<-c("Modelo con transformación logarítmica - Modelo AICc sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo BIC sin efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo AICc con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Modelo BIC con efectos fijos de tiempo", 
                                     "Modelo con transformación logarítmica - Promedio modelos AICc y BIC")

names(pronosticos_adq_log_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_log_ajus, caption = "Comisión de adquirencia esperada para Costa Rica de acuerdo con el modelo con transformación logarítmica (con ajuste)") 
```

### Inclusión de los efectos no lineales en la regresión:

#### Sin ajuste:

```{r}
pred_adq_nolineal<-mean(c(as.numeric(pred_adq_nolineal_con_reg_aicc),     
                             as.numeric(pred_adq_nolineal_con_reg_bic), 
                             as.numeric(pred_adq_nolineal_con_reg_ef_aicc), 
                             as.numeric(pred_adq_nolineal_con_reg_ef_bic)))

#Tabla pronósticos
pronosticos_adq_nolineal<-as.data.frame(round(
                                        cbind(
                                             c(pred_adq_nolineal_con_reg_aicc,
                                                pred_adq_nolineal_con_reg_bic,
                                                pred_adq_nolineal_con_reg_ef_aicc,
                                                pred_adq_nolineal_con_reg_ef_bic,
                                                pred_adq_nolineal) ),2))

rownames(pronosticos_adq_nolineal)<-c(
                                     "Efectos no lineales - Modelo AICc sin efectos fijos de tiempo", 
                                     "Efectos no lineales - Modelo BIC sin efectos fijos de tiempo", 
                                     "Efectos no lineales - Modelo AICc con efectos fijos de tiempo", 
                                     "Efectos no lineales - Modelo BIC con efectos fijos de tiempo", 
                                     "Efectos no lineales - Promedio modelos AICc y BIC")

names(pronosticos_adq_nolineal)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_nolineal, caption = "Comisión de adquirencia esperada para Costa Rica al añadir efectos no lineales a la regresión (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_nolineal_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_adq_nolineal_con_reg_aicc - num) / deno,
        as.numeric(pred_adq_nolineal_con_reg_bic - num) / deno,
        as.numeric(pred_adq_nolineal_con_reg_ef_aicc - num) / deno,
        as.numeric(pred_adq_nolineal_con_reg_ef_bic - num) / deno,
        mean(as.numeric(pred_adq_nolineal_con_reg_aicc - num) / deno,
        as.numeric(pred_adq_nolineal_con_reg_bic - num) / deno,
        as.numeric(pred_adq_nolineal_con_reg_ef_aicc - num) / deno,
        as.numeric(pred_adq_nolineal_con_reg_ef_bic - num) / deno))),2))    
rownames(pronosticos_adq_nolineal_ajus)<-c("Efectos no lineales - Modelo AICc sin efectos fijos de tiempo", 
                                     "Efectos no lineales - Modelo BIC sin efectos fijos de tiempo", 
                                     "Efectos no lineales - Modelo AICc con efectos fijos de tiempo", 
                                     "Efectos no lineales - Modelo BIC con efectos fijos de tiempo", 
                                     "Efectos no lineales - Promedio modelos AICc y BIC")

names(pronosticos_adq_nolineal_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_nolineal_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al añadir efectos no lineales a la regresión (con ajuste)") 
```

### Regresión Robusta:

#### Sin ajuste:

```{r}
pred_adq_robusta<-mean(c(as.numeric(pred_adq_con_cont_con_reg_robusto_aicc),     
                             as.numeric(pred_adq_con_cont_con_reg_robusto_bic), 
                             as.numeric(pred_adq_con_cont_con_reg_robusto_aicc_ef), 
                             as.numeric(pred_adq_con_cont_con_reg_robusto_bic_ef)))

#Tabla pronósticos
pronosticos_adq_robusta<-as.data.frame(round(
                                        cbind(
                                             c(pred_adq_con_cont_con_reg_robusto_aicc,
                                              pred_adq_con_cont_con_reg_robusto_bic,
                                              pred_adq_con_cont_con_reg_robusto_aicc_ef,
                                              pred_adq_con_cont_con_reg_robusto_bic_ef,
                                              pred_adq_robusta) ),2))

rownames(pronosticos_adq_robusta)<-c(
                                     "Regresión Robusta - Modelo AICc sin efectos fijos de tiempo", 
                                     "Regresión Robusta - Modelo BIC sin efectos fijos de tiempo", 
                                     "Regresión Robusta - Modelo AICc con efectos fijos de tiempo", 
                                     "Regresión Robusta - Modelo BIC con efectos fijos de tiempo", 
                                     "Regresión Robusta - Promedio modelos AICc y BIC")

names(pronosticos_adq_robusta)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_robusta, caption = "Comisión de adquirencia esperada para Costa Rica al ajustara un modelo de regresión robusta (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pred_adq_robusta_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_adq_con_cont_con_reg_robusto_aicc - num) / deno,
        as.numeric(pred_adq_con_cont_con_reg_robusto_bic - num) / deno,
        as.numeric(pred_adq_con_cont_con_reg_robusto_aicc_ef - num) / deno,
        as.numeric(pred_adq_con_cont_con_reg_robusto_bic_ef - num) / deno,
        mean(as.numeric(pred_adq_con_cont_con_reg_robusto_aicc - num) / deno,
        as.numeric(pred_adq_con_cont_con_reg_robusto_bic - num) / deno,
        as.numeric(pred_adq_con_cont_con_reg_robusto_aicc_ef - num) / deno,
        as.numeric(pred_adq_con_cont_con_reg_robusto_bic_ef - num) / deno))),2))    
rownames(pred_adq_robusta_ajus)<-c("Regresión Robusta - Modelo AICc sin efectos fijos de tiempo", 
                                     "Regresión Robusta - Modelo BIC sin efectos fijos de tiempo", 
                                     "Regresión Robusta - Modelo AICc con efectos fijos de tiempo", 
                                     "Regresión Robusta - Modelo BIC con efectos fijos de tiempo", 
                                     "Regresión Robusta - Promedio modelos AICc y BIC")

names(pred_adq_robusta_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pred_adq_robusta_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al ajustara un modelo de regresión robusta (con ajuste)") 
```

### Restringiendo la muestra a solo países regulados:

#### Sin ajuste:

```{r}
pred1_adq_reg<-predict(modelo_adq_reg_con_cont_aicc, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred2_adq_reg<-predict(modelo_adq_reg_con_cont_bic, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
pred3_adq_reg<-predict(modelo_adq_reg_con_cont_aicc_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]
  
pred4_adq_reg<-predict(modelo_adq_reg_con_cont_bic_ef, newdata = data_CR,
                                   interval = "prediction", level = 0.95,
                                   type = "response")[which(data_CR$Codigo_Pais=="CRI")]

pred_adq_reg<-mean(c(as.numeric(pred1_adq_reg), 
                     as.numeric(pred2_adq_reg), 
                     as.numeric(pred3_adq_reg), 
                     as.numeric(pred4_adq_reg)))

#Tabla pronósticos alternativos solo muestra regulados ----

pronosticos_adq_alt_reg<-as.data.frame(cbind(round( c(pred1_adq_reg, 
                                                 pred2_adq_reg, 
                                                 pred3_adq_reg, 
                                                 pred4_adq_reg, 
                                                 pred_adq_reg),3)))

rownames(pronosticos_adq_alt_reg)<-c("Solo países regulados - Modelo AICc sin efectos fijos de tiempo", 
                                     "Solo países regulados - Modelo BIC sin efectos fijos de tiempo", 
                                     "Solo países regulados - Modelo AICc con efectos fijos de tiempo", 
                                     "Solo países regulados - Modelo BIC con efectos fijos de tiempo", 
                                     "Solo países regulados - Promedio modelos AICc y BIC")

names(pronosticos_adq_alt_reg)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_alt_reg, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo tomando en cuenta solo a países con regulación (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_alt_reg_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred1_adq_reg - num) / deno,
        as.numeric(pred2_adq_reg - num) / deno,
        as.numeric(pred3_adq_reg - num) / deno,
        as.numeric(pred4_adq_reg - num) / deno,
        as.numeric(pred_adq_reg - num) / deno)),2))    
rownames(pronosticos_adq_alt_reg_ajus)<-c("Solo países regulados - Modelo AICc sin efectos fijos de tiempo", 
                                     "Solo países regulados - Modelo BIC sin efectos fijos de tiempo", 
                                     "Solo países regulados - Modelo AICc con efectos fijos de tiempo", 
                                     "Solo países regulados - Modelo BIC con efectos fijos de tiempo", 
                                     "Solo países regulados - Promedio modelos AICc y BIC")

names(pronosticos_adq_alt_reg_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_alt_reg_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo tomando en cuenta solo a países con regulación (con ajuste)") 
```

### Ampliando la definición de regulación de intercambio o adquirencia:

#### Sin ajuste:

```{r}
pred_adq_ampli<-mean(c(as.numeric(pred_adq_con_cont_aicc_con_reg_ampli), 
                     as.numeric(pred_adq_con_cont_bic_con_reg_ampli), 
                     as.numeric(pred_modelo_adq_con_cont_aicc_ef_amp_con_reg), 
                     as.numeric(pred_modelo_adq_con_cont_bic_ef_amp_con_reg)))

#Tabla pronósticos alternativos solo muestra regulados ----

pronosticos_adq_ampli<-as.data.frame(cbind(round( c(pred_adq_con_cont_aicc_con_reg_ampli,
                                                      pred_adq_con_cont_bic_con_reg_ampli,
                                                      pred_modelo_adq_con_cont_aicc_ef_amp_con_reg,
                                                      pred_modelo_adq_con_cont_bic_ef_amp_con_reg,
                                                      pred_adq_ampli),3)))

rownames(pronosticos_adq_ampli)<-c("Regulación en intercambio o adquirencia - Modelo AICc sin efectos fijos de tiempo", 
                                     "Regulación en intercambio o adquirencia - Modelo BIC sin efectos fijos de tiempo", 
                                     "Regulación en intercambio o adquirencia - Modelo AICc con efectos fijos de tiempo", 
                                     "Regulación en intercambio o adquirencia - Modelo BIC con efectos fijos de tiempo", 
                                     "Regulación en intercambio o adquirencia - Promedio modelos AICc y BIC")

names(pronosticos_adq_ampli)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_ampli, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo ampliando la definición de regulación (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_ampli_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_adq_con_cont_aicc_con_reg_ampli - num) / deno,
        as.numeric(pred_adq_con_cont_bic_con_reg_ampli - num) / deno,
        as.numeric(pred_modelo_adq_con_cont_aicc_ef_amp_con_reg - num) / deno,
        as.numeric(pred_modelo_adq_con_cont_bic_ef_amp_con_reg - num) / deno,
        as.numeric(pred_adq_ampli - num) / deno)),2))    
rownames(pronosticos_adq_ampli_ajus)<-c("Regulación en intercambio o adquirencia - Modelo AICc sin efectos fijos de tiempo", 
                                         "Regulación en intercambio o adquirencia - Modelo BIC sin efectos fijos de tiempo", 
                                         "Regulación en intercambio o adquirencia - Modelo AICc con efectos fijos de tiempo", 
                                         "Regulación en intercambio o adquirencia - Modelo BIC con efectos fijos de tiempo", 
                                         "Regulación en intercambio o adquirencia - Promedio modelos AICc y BIC")

names(pronosticos_adq_ampli_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_ampli_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo ampliando la definición de regulación (con ajuste)") 
```

### Utilizando las características más recientes para cada país:

#### Sin ajuste:

```{r}
pred_adq_2023<-mean(c(as.numeric(pred_adq_con_cont_aicc_con_reg_2023), 
                     as.numeric(pred_adq_con_cont_bic_con_reg_2023)))

#Tabla pronósticos alternativos solo muestra regulados ----

pronosticos_adq_2023<-as.data.frame(cbind(round( c(pred_adq_con_cont_aicc_con_reg_2023,
                                                    pred_adq_con_cont_bic_con_reg_2023,
                                                    pred_adq_2023),3)))

rownames(pronosticos_adq_2023)<-c("Observaciones más recientes - Modelo AICc sin efectos fijos de tiempo", 
                                     "Observaciones más recientes - Modelo BIC sin efectos fijos de tiempo",
                                        "Observaciones más recientes - Promedio modelos AICc y BIC")

names(pronosticos_adq_2023)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_2023, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo utilizando las características más recientes para cada país (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_2023_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_adq_con_cont_aicc_con_reg_2023 - num) / deno,
        as.numeric(pred_adq_con_cont_bic_con_reg_2023 - num) / deno,
        as.numeric(pred_adq_2023 - num) / deno)),2))    
rownames(pronosticos_adq_2023_ajus)<-c("Observaciones más recientes - Modelo AICc sin efectos fijos de tiempo", 
                                     "Observaciones más recientes - Modelo BIC sin efectos fijos de tiempo",
                                        "Observaciones más recientes - Promedio modelos AICc y BIC")

names(pronosticos_adq_2023_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_2023_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo utilizando las características más recientes para cada país (con ajuste)") 
```

### Regresión lineal múltiple con variables propuestas por el FMI:

##### Sin ajuste:

```{r}
pred_adq_FMI<-mean(c(as.numeric(pred_adq_con_cont_aicc_con_reg_FMI), 
                     as.numeric(pred_adq_con_cont_bic_con_reg_FMI), 
                     as.numeric(pred_adq_con_cont_ef_aic_con_reg_FMI), 
                     as.numeric(pred_modelo_adq_con_cont_bic_ef_con_reg_FMI)))

#Tabla pronósticos alternativos solo muestra regulados ----

pronosticos_adq_FMI<-as.data.frame(cbind(round( c(pred_adq_con_cont_aicc_con_reg_FMI,
                                                    pred_adq_con_cont_bic_con_reg_FMI,
                                                    pred_adq_con_cont_ef_aic_con_reg_FMI,
                                                    pred_modelo_adq_con_cont_bic_ef_con_reg_FMI,
                                                    pred_adq_FMI),3)))

rownames(pronosticos_adq_FMI)<-c("FMI - Modelo AICc sin efectos fijos de tiempo", 
                                     "FMI - Modelo BIC sin efectos fijos de tiempo", 
                                     "FMI - Modelo AICc con efectos fijos de tiempo", 
                                     "FMI - Modelo BIC con efectos fijos de tiempo", 
                                     "FMI - Promedio modelos AICc y BIC")

names(pronosticos_adq_FMI)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_FMI, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo con variables propuestas por el FMI (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_FMI_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_adq_con_cont_aicc_con_reg_FMI - num) / deno,
        as.numeric(pred_adq_con_cont_bic_con_reg_FMI - num) / deno,
        as.numeric(pred_adq_con_cont_ef_aic_con_reg_FMI - num) / deno,
        as.numeric(pred_modelo_adq_con_cont_bic_ef_con_reg_FMI - num) / deno,
        as.numeric(pred_adq_FMI - num) / deno)),2))    
rownames(pronosticos_adq_FMI_ajus)<-c("FMI - Modelo AICc sin efectos fijos de tiempo", 
                                     "FMI - Modelo BIC sin efectos fijos de tiempo", 
                                     "FMI - Modelo AICc con efectos fijos de tiempo", 
                                     "FMI - Modelo BIC con efectos fijos de tiempo", 
                                     "FMI - Promedio modelos AICc y BIC")

names(pronosticos_adq_FMI_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_FMI_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo con variables propuestas por el FMI (con ajuste)") 
```

### Sin Variables de Uso de Tarjetas:

##### Sin ajuste:

```{r}
pred_adq_tarj<-mean(c(as.numeric(pred_adq_sin_tarj_aicc_con_reg), 
                     as.numeric(pred_adq_sin_tarj_bic_con_reg), 
                     as.numeric(pred_adq_sin_tarj_aicc_ef_con_reg), 
                     as.numeric(pred_adq_sin_tarj_bic_ef_con_reg)))

#Tabla pronósticos alternativos solo muestra regulados ----

pronosticos_adq_tarj<-as.data.frame(cbind(round( c(pred_adq_sin_tarj_aicc_con_reg,
                                                  pred_adq_sin_tarj_bic_con_reg,
                                                  pred_adq_sin_tarj_aicc_ef_con_reg,
                                                  pred_adq_sin_tarj_bic_ef_con_reg,
                                                    pred_adq_tarj),3)))

rownames(pronosticos_adq_tarj)<-c("Sin variables de tarjetas - Modelo AICc sin efectos fijos de tiempo", 
                                     "Sin variables de tarjetas - Modelo BIC sin efectos fijos de tiempo", 
                                     "Sin variables de tarjetas - Modelo AICc con efectos fijos de tiempo", 
                                     "Sin variables de tarjetas - Modelo BIC con efectos fijos de tiempo", 
                                     "Sin variables de tarjetas - Promedio modelos AICc y BIC")

names(pronosticos_adq_tarj)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_tarj, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo Sin Variables de Uso de Tarjetas (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_tarj_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_adq_sin_tarj_aicc_con_reg - num) / deno,
        as.numeric(pred_adq_sin_tarj_bic_con_reg - num) / deno,
        as.numeric(pred_adq_sin_tarj_aicc_ef_con_reg- num) / deno,
        as.numeric(pred_adq_sin_tarj_bic_ef_con_reg - num) / deno,
        as.numeric(pred_adq_tarj - num) / deno)),2))    
rownames(pronosticos_adq_tarj_ajus)<-c("Sin variables de tarjetas - Modelo AICc sin efectos fijos de tiempo", 
                                     "Sin variables de tarjetas - Modelo BIC sin efectos fijos de tiempo", 
                                     "Sin variables de tarjetas - Modelo AICc con efectos fijos de tiempo", 
                                     "Sin variables de tarjetas - Modelo BIC con efectos fijos de tiempo", 
                                     "Sin variables de tarjetas - Promedio modelos AICc y BIC")

names(pronosticos_adq_tarj_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_tarj_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo Sin Variables de Uso de Tarjetas (con ajuste)") 
```

### Regresión con variables instrumentales:

##### Sin ajuste:

```{r}
pred_adq_iv<-mean(c(as.numeric(pred_iv_adq_con_reg), 
    as.numeric(pred_iv_adq_ef_con_reg)))

#Tabla pronósticos alternativos solo muestra regulados ----

pronosticos_adq_iv<-as.data.frame(cbind(round( c(pred_iv_adq_con_reg,
                                                 pred_iv_adq_ef_con_reg,
                                                 pred_adq_iv),3)))

rownames(pronosticos_adq_iv)<-c("Variables Instrumentales - Modelo AICc sin efectos fijos de tiempo", 
                                     "Variables Instrumentales - Modelo BIC sin efectos fijos de tiempo",
                                        "Variables Instrumentales - Promedio modelos AICc y BIC")

names(pronosticos_adq_iv)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_iv, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo con variables instrumentales (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_iv_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pred_iv_adq_con_reg - num) / deno,
        as.numeric(pred_iv_adq_ef_con_reg - num) / deno,
        as.numeric(pred_adq_iv - num) / deno)),2))    
rownames(pronosticos_adq_iv_ajus)<-c("Observaciones más recientes - Modelo AICc sin efectos fijos de tiempo", 
                                     "Observaciones más recientes - Modelo BIC sin efectos fijos de tiempo",
                                        "Observaciones más recientes - Promedio modelos AICc y BIC")

names(pronosticos_adq_iv_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_iv_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un modelo con variables instrumentales (con ajuste)") 
```

### Modelo de panel de datos con efectos aleatorios:

##### Sin ajuste:
```{r}



pred_adq_al<-mean(c(as.numeric(pre_adq_con_cont_aicc_ef_al), 
                     as.numeric(pre_adq_con_cont_bic_ef_al), 
                     as.numeric(pre_adq_con_cont_aicc_tiem_ef_al), 
                     as.numeric(pre_adq_con_cont_bic_tiem_ef_al)))

#Tabla pronósticos alternativos solo muestra regulados ----

pronosticos_adq_al<-as.data.frame(cbind(round( c(pre_adq_con_cont_aicc_ef_al,
                                                  pre_adq_con_cont_bic_ef_al,
                                                  pre_adq_con_cont_aicc_tiem_ef_al,
                                                  pre_adq_con_cont_bic_tiem_ef_al,
                                                  pred_adq_al),3)))

rownames(pronosticos_adq_al)<-c("Panel de Datos con Efectos Aleatorios - Modelo AICc sin efectos fijos de tiempo", 
                                     "Panel de Datos con Efectos Aleatorios - Modelo BIC sin efectos fijos de tiempo", 
                                     "Panel de Datos con Efectos Aleatorios - Modelo AICc con efectos fijos de tiempo", 
                                     "Panel de Datos con Efectos Aleatorios - Modelo BIC con efectos fijos de tiempo", 
                                     "Panel de Datos con Efectos Aleatorios - Promedio modelos AICc y BIC")

names(pronosticos_adq_al)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_al, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un Modelo de panel de datos con efectos aleatorios (sin ajuste)")
```

#### Con ajuste:

```{r}
#Tabla estimación principal con ajuste:
# factor numerico de ajuste en el númerador
num<-c((-(1*0.10) - (1.25*0.05) - (1.5*0.02) - (1.75*0.12))*-1)
deno<- c(0.71)  # deno
pronosticos_adq_al_ajus<-as.data.frame(round(
                               cbind(c(
        as.numeric(pre_adq_con_cont_aicc_ef_al - num) / deno,
        as.numeric(pre_adq_con_cont_bic_ef_al - num) / deno,
        as.numeric(pre_adq_con_cont_aicc_tiem_ef_al - num) / deno,
        as.numeric(pre_adq_con_cont_bic_tiem_ef_al - num) / deno,
        as.numeric(pred_adq_al - num) / deno)),2))    
rownames(pronosticos_adq_al_ajus)<-c("Panel de Datos con Efectos Aleatorios - Modelo AICc sin efectos fijos de tiempo", 
                                     "Panel de Datos con Efectos Aleatorios - Modelo BIC sin efectos fijos de tiempo", 
                                     "Panel de Datos con Efectos Aleatorios - Modelo AICc con efectos fijos de tiempo", 
                                     "Panel de Datos con Efectos Aleatorios - Modelo BIC con efectos fijos de tiempo", 
                                     "Panel de Datos con Efectos Aleatorios - Promedio modelos AICc y BIC")

names(pronosticos_adq_al_ajus)<-c("Estimación para Costa Rica")
# Visualización
DT::datatable(pronosticos_adq_al_ajus, caption = "Comisión de adquirencia esperada para Costa Rica al ajustar un Modelo de panel de datos con efectos aleatorios (con ajuste)") 
```

## Pruebas estadísticas a regresiones tasa de adquirencia

### Modelo sin controles.

```{r pruebas regresiones adquirencia0, include=TRUE}
#modelo_adq_sin_cont

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_sin_cont<-resid(modelo_adq_sin_cont)
#Se computa la prueba con la hipotesis Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_sin_cont)

#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values no tiene sentido sin controles
#vif(modelo_adq_sin_cont)
#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_adq_sin_cont, interactions = TRUE)
white(modelo_adq_sin_cont, interactions = TRUE)
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_adq_sin_cont, power = 2:3, type = c("fitted"), data = datos)#No se realiza porque solo incluye una dummy

```

### Modelo AICc sin efectos fijos de tiempo

```{r pruebas regresiones adquirencia3, include=TRUE}
#modelo_adq_con_cont_aicc

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_con_cont_aicc<-resid(modelo_adq_con_cont_aicc)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_con_cont_aicc)

#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
vif(modelo_adq_con_cont_aicc)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_adq_con_cont_aicc, interactions = TRUE)
white(modelo_adq_con_cont_aicc, interactions = TRUE)
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_adq_con_cont_aicc, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#Corregido por heterocedasticidad)

```

### Modelo AICc con efectos fijos de tiempo

```{r pruebas regresiones adquirencia4, include=TRUE}

#modelo_adq_con_cont_aicc_ef

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_con_cont_aicc_ef<-resid(modelo_adq_con_cont_aicc_ef)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_con_cont_aicc_ef)

#Se obtiene el resultado del índice de condición de multicolinealidad no aplica para las dummies extra
#create vector of VIF values
#vif(modelo_adq_con_cont_aicc_ef)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_adq_con_cont_aicc_ef, interactions = TRUE)
white(modelo_adq_con_cont_aicc_ef, interactions = TRUE)
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_adq_con_cont_aicc_ef, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

```

### Modelo BIC sin efectos fijos de tiempo

```{r pruebas regresiones adquirencia5, include=TRUE}

#modelo_adq_con_cont_bic

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_con_cont_bic<-resid(modelo_adq_con_cont_bic)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_con_cont_bic)

#Se obtiene el resultado del índice de condición de multicolinealidad
#create vector of VIF values
vif(modelo_adq_con_cont_bic)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_adq_con_cont_bic, interactions = TRUE)
white(modelo_adq_con_cont_bic, interactions = TRUE)
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
resettest(modelo_adq_con_cont_bic, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

```

### Modelo BIC con efectos fijos de tiempo

```{r pruebas regresiones adquirencia6, include=TRUE}

#modelo_adq_con_cont_bic_ef

#Prueba de normalidad
#Se guardan los residuos
residuos_modelo_adq_con_cont_bic_ef<-resid(modelo_adq_con_cont_bic_ef)
#Se computa la prueba con la función Nula: distribución normal residuos
jarque.test(residuos_modelo_adq_con_cont_bic_ef)

#Se obtiene el resultado del índice de condición de multicolinealidad no aplica para las dummies extra
#create vector of VIF values
#vif(modelo_adq_con_cont_bic_ef)

#Se ejecuta el test de White sobre el modelo original Nula: homocedasticidad
#white_lm(modelo_adq_con_cont_bic_ef, interactions = TRUE)
white(modelo_int_con_cont_ef_bic, interactions = TRUE)
#Prueba de especificación lineal RESET Nula: especificación correcta lineal
#resettest(modelo_adq_con_cont_bic_ef, power = 2:3, type = c("fitted"), data = datos, vcov = vcovHC)#No se realiza porque solo incluye extra los efectos fijos

```

