#Activo las librerias
library(ggplot2)
library(readxl)
library(gridExtra)

# Lectura de datos de excel 
Datos_Logistica <- read_excel("Z:/Mi unidad/3_Formación_Académica/13_Postgrados-Universidades/Especialización en estadistica/6-Modelos_de_Regresión/DataSET.xlsx")

# Grafica de cajas y bigotes para ambos niveles de inflación en un mismo plano
ggplot(data = Datos_Logistica, aes(x = factor(`Nivel de Inflacion`), y = TRM, fill = factor(`Nivel de Inflacion`))) +
  geom_boxplot(outlier.shape = NA) +
  geom_jitter(width = 0.1) +
  theme_bw() +
  labs(title = "Cajas de Bigotes para Nivel de Inflación") +
  scale_fill_manual(values = c("lightblue", "lightgreen"), name = "Nivel de Inflación") +
  theme(legend.position = "top")

#Generacion del modelo de regresión logistica
modelo<-glm(`Nivel de Inflacion` ~ TRM, data=Datos_Logistica, family="binomial")
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(modelo)
## 
## Call:
## glm(formula = `Nivel de Inflacion` ~ TRM, family = "binomial", 
##     data = Datos_Logistica)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)
## (Intercept) -337.37543  233.21577  -1.447    0.148
## TRM            0.08402    0.05813   1.445    0.148
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 71.5289  on 59  degrees of freedom
## Residual deviance:  5.1114  on 58  degrees of freedom
## AIC: 9.1114
## 
## Number of Fisher Scoring iterations: 12
residuos <- residuals(modelo)
summary(residuos)
##       Min.    1st Qu.     Median       Mean    3rd Qu.       Max. 
## -1.3183886 -0.0001501  0.0000000 -0.0048286  0.0000000  1.5745417
odds_predichos <- exp(predict(modelo, type = "link"))

#Graficacion del modelo

plot(`Nivel de Inflacion` ~ TRM, Datos_Logistica, col = "darkblue",
     main = "Modelo regresión logística",
     ylab = "P(Inflacion=1|trm)",
     xlab = "TRM", pch = "I")

# type = "response" devuelve las predicciones en forma de probabilidad en lugar de en log_ODDs
curve(predict(modelo, data.frame(TRM = x), type = "response"),
      col = "firebrick", lwd = 2.5, add = TRUE)

# Evaluacion del modelo

anova(modelo, test="Chisq")
## Analysis of Deviance Table
## 
## Model: binomial, link: logit
## 
## Response: Nivel de Inflacion
## 
## Terms added sequentially (first to last)
## 
## 
##      Df Deviance Resid. Df Resid. Dev  Pr(>Chi)    
## NULL                    59     71.529              
## TRM   1   66.418        58      5.111 3.648e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Comparacion de clasificación - Review Treshold concept


library(vcd)
## Loading required package: grid
predicciones <- ifelse(test = modelo$fitted.values > 0.5, yes = 1, no = 0)
matriz_confusion <- table(modelo$model$`Nivel de Inflacion`, predicciones,
                          dnn = c("observaciones", "predicciones"))
matriz_confusion
##              predicciones
## observaciones  0  1
##             0 42  1
##             1  1 16
#Grafica comparacion de clasificación


mosaic(matriz_confusion, shade = T, colorize = T,
       gp = gpar(fill = matrix(c("green3", "red2", "red2", "green3"), 2, 2)))

#Teniendo en cuenta los resultados de comparacion, se puede decir que el modelo es capaz de clasificar #correctamente ((42+16)/(42+16+1+1))= 0.96 = 96% de las observaciones cuando se emplean datos de entrenamiento.


#Conclusiones #El modelo logístico creado para predecir la probabilidad de que haya una inflacion de dos digitos considerando la TRM #es en conjunto significativo acorde al Likelihood ratio (p-value = 3.648e-16 ). Sin embargo el p-value del predictor TRM no es #significativo (p-value = 0.148).