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