El presente documento contiene dos ejercicios de simulación de regresiones generalizadas multiples con diferentes tematicas que se presentan a continuación:
rotacion <- read_excel("Datos_Rotación.xlsx")
names(rotacion)
## [1] "Rotación" "Edad"
## [3] "Viaje de Negocios" "Departamento"
## [5] "Distancia_Casa" "Educación"
## [7] "Campo_Educación" "Satisfacción_Ambiental"
## [9] "Genero" "Cargo"
## [11] "Satisfación_Laboral" "Estado_Civil"
## [13] "Ingreso_Mensual" "Trabajos_Anteriores"
## [15] "Horas_Extra" "Porcentaje_aumento_salarial"
## [17] "Rendimiento_Laboral" "Años_Experiencia"
## [19] "Capacitaciones" "Equilibrio_Trabajo_Vida"
## [21] "Antigüedad" "Antigüedad_Cargo"
## [23] "Años_ultima_promoción" "Años_acargo_con_mismo_jefe"
1.Seleccionar 3 variables categóricas (distintas de rotación) y 3 variables cuantitativas, que consideren estén relacionadas con la rotación. Nota: Justificar por que estas variables están relacionadas y que tipo de relación se espera (Hipótesis). Ejemplo: Se espera que las horas extra se relacionen con la rotación ya que las personas podrían desgastarse mas al trabajar horas extra y descuidan aspectos personales. La hipótesis es que las personas que trabajan horas extra tienen mayor posibilidad de rotar que las que no trabajan extra. (serian 6, una por variable).
hipotisis = read_excel("~/JAVERIANA/Actividad 2/hipotisis.xlsx")
head(hipotisis)
## # A tibble: 6 × 4
## Numeral Variable Tipo Hipótesis
## <dbl> <chr> <chr> <chr>
## 1 1 IngresoMensual Cuantitativa Se espera que el ingreso mes…
## 2 2 Porcentaje Aumento Salarial Cuantitativa Se espera que el porcentaje …
## 3 3 Edad Cuantitativa Se espera que la edad se rel…
## 4 4 Cargo Cualitativa Se espera que los trabajador…
## 5 5 Horas Extras Cualitativa Se espera que las horas extr…
## 6 6 Satisfación Laboral Cualitativa Se espera que la satisfacció…
g1=ggplot(rotacion,aes(x=Ingreso_Mensual))+geom_histogram(fill = "blue")+theme_bw()
g2=ggplot(rotacion,aes(x=Porcentaje_aumento_salarial))+geom_histogram(fill = "blue")+theme_bw()
g3=ggplot(rotacion,aes(x=Edad))+geom_histogram(fill = "blue")+theme_bw()
g4=ggplot(rotacion,aes(x=Satisfación_Laboral))+geom_bar(fill = "blue")+theme_bw()
g5=ggplot(rotacion,aes(x=Cargo))+geom_bar(fill = "blue")+theme_bw()+ theme(axis.text.x = element_text(angle = 90, hjust = 1))
g6=ggplot(rotacion,aes(x=Horas_Extra))+geom_bar(fill = "blue")+theme_bw()
ggarrange(g1, g2, g3, g4, g5, g6,labels = c("A", "B","C","D","E","F"),ncol = 2, nrow = 1)
## $`1`
##
## $`2`
##
## $`3`
##
## attr(,"class")
## [1] "list" "ggarrange"
Interpretación
A: según la grafica se evidencia mayor concentración en salirios menores a 5 millones, identificando que a mayor ingresos menor concentracion de funcionarios B: según la grafica se evidencia mayor concentración en incremento salarial del 15% y de menor representación del 25% , identicando que a mayor porcentaje incremento salarial menor es la concentracion de Funcionarios C:según la grafica se evidencia mayor concentración en las edades de25 hasta 40 años de los funcionarios D:según la grafica se evidencia mayor concentración en nivel de satisfacion 3 y 4 (satisfechos) E:según la grafica se evidencia mayor concentración en lso cargos: ejecutivo de ventas, investigador cientifico y tecnico laboratorio. F:según la grafica se evidencia mayor concentración en los funcionarios que no tranajan horas extras.
3.Realizar un análisis de bivariado en donde la variable respuesta sea la rotación codificada de la siguiente manera (y=1 es si rotación, y=0 es no rotación), con base en estos resultados identifique cuales son las variables determinantes de la rotación e interpretar el signo del coeficiente estimado. Compare estos resultados con la hipotesis planteada en el punto 2.
A continuación realizamos la codificación de 0 y uno para nuestra varible objetivo rotación.
rotacion$Rotacion <- factor(ifelse(rotacion$Rotación == "Si", 1, 0))
head(rotacion$Rotacion)
## [1] 1 0 1 0 0 0
## Levels: 0 1
graficocargo=PlotXTabs2(rotacion,Cargo, Rotacion,plottype = "percent")+ theme(axis.text.x = element_text(angle = 90, hjust = 1))
graficohoras=PlotXTabs2(rotacion,Horas_Extra, Rotacion,plottype = "percent")
graficosatisfaccion=PlotXTabs2(rotacion,Satisfación_Laboral, Rotacion,plottype = "percent")
graficocargo
Variable Rotación, se evidencia que se presenta mayor rotación en el cargo representantes de ventas y se demuestra que la hipotisis es verdara ” los cargos de menor rango tienen mayor posibilidad de rotar que los cargos de rango medio.
graficohoras
La variable Rotación se evidencia que se demuestra que la hipotisis es verdara “las personas que causan horas extras tienen mayor probabilidad de rotar que las que no”
graficosatisfaccion
Labora y variable rotación se prueba que la hipotisis es verdadera “las personas que se perciben menos satisfechas podrían considerar rotar a otro empleo más satisfactorio”.
graficoingreso=ggplot(rotacion,aes(x=Rotacion,y= Ingreso_Mensual,fill=Rotacion))+geom_boxplot()+theme_bw()
graficoaumento=ggplot(rotacion,aes(x=Rotacion,y= Porcentaje_aumento_salarial,fill=Rotacion))+geom_boxplot()+theme_bw()
graficoedad=ggplot(rotacion,aes(x=Rotacion,y= Edad,fill=Rotacion))+geom_boxplot()+theme_bw()
ggplotly(graficoingreso)
se evidencia que la variable ingresos y variable rotación se evidencia que demuestra la hipotisis menor salario, mayor rotación
ggplotly(graficoaumento)
de acuerdo con la variable porcentaje de aumento salarial y la variable rotación se evidencia que no presenta mucha variabilidad de los que rotan y los que no , por lo tanto no se demuestra la hipostisis
ggplotly(graficoedad)
De acuerdo con la variable edad y rotación se evidencia que la hipotisis es demostrada “los más jóvenes tienen mayor posibilidad de rotar que los más adultos”.
rotacion$Satisfación_Laboral= factor(rotacion$Satisfación_Laboral)
modelo_rotacion_a=glm(Rotacion~Ingreso_Mensual+Porcentaje_aumento_salarial+Edad+Cargo + Horas_Extra + Satisfación_Laboral,data = rotacion,family = binomial(link="logit"))
summary(modelo_rotacion_a)
##
## Call:
## glm(formula = Rotacion ~ Ingreso_Mensual + Porcentaje_aumento_salarial +
## Edad + Cargo + Horas_Extra + Satisfación_Laboral, family = binomial(link = "logit"),
## data = rotacion)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.8707 -0.5821 -0.4031 -0.2230 2.9806
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.374e+00 1.067e+00 -2.226 0.026044 *
## Ingreso_Mensual 1.152e-05 4.468e-05 0.258 0.796610
## Porcentaje_aumento_salarial -7.388e-03 2.143e-02 -0.345 0.730248
## Edad -3.585e-02 1.036e-02 -3.461 0.000539 ***
## CargoDirector_Manofactura 1.006e+00 8.760e-01 1.148 0.251017
## CargoEjecutivo_Ventas 2.083e+00 8.291e-01 2.513 0.011982 *
## CargoGerente 8.379e-01 8.643e-01 0.969 0.332318
## CargoInvestigador_Cientifico 1.818e+00 9.135e-01 1.990 0.046636 *
## CargoRecursos_Humanos 2.490e+00 9.425e-01 2.642 0.008248 **
## CargoRepresentante_Salud 1.030e+00 8.800e-01 1.171 0.241731
## CargoRepresentante_Ventas 3.193e+00 9.431e-01 3.385 0.000711 ***
## CargoTecnico_Laboratorio 2.531e+00 9.110e-01 2.778 0.005464 **
## Horas_ExtraSi 1.547e+00 1.603e-01 9.651 < 2e-16 ***
## Satisfación_Laboral2 -4.722e-01 2.351e-01 -2.009 0.044576 *
## Satisfación_Laboral3 -4.534e-01 2.078e-01 -2.182 0.029139 *
## Satisfación_Laboral4 -1.037e+00 2.210e-01 -4.693 2.69e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1298.6 on 1469 degrees of freedom
## Residual deviance: 1084.3 on 1454 degrees of freedom
## AIC: 1116.3
##
## Number of Fisher Scoring iterations: 6
Las covariables edad,cargo, horas extras y satisfacción laboral son significativas para el modelo y logran brindar una explicación de la variable respuesta rotación. Mientras que la variable ingreso y porcentaje ingreso no brindan valor dentro del modelo.
exp(modelo_rotacion_a$coefficients)
## (Intercept) Ingreso_Mensual
## 0.09313715 1.00001152
## Porcentaje_aumento_salarial Edad
## 0.99263890 0.96478169
## CargoDirector_Manofactura CargoEjecutivo_Ventas
## 2.73347560 8.03040029
## CargoGerente CargoInvestigador_Cientifico
## 2.31157712 6.15675524
## CargoRecursos_Humanos CargoRepresentante_Salud
## 12.05944050 2.80157161
## CargoRepresentante_Ventas CargoTecnico_Laboratorio
## 24.35150819 12.56595015
## Horas_ExtraSi Satisfación_Laboral2
## 4.69598980 0.62364502
## Satisfación_Laboral3 Satisfación_Laboral4
## 0.63545432 0.35446770
Cada año adicional que posea el empleado podría aumentar la posibilidad de generar una rotación de personal, por otro lado los cargos de ventas, laboratorio y recursos humanos son los cargos que tienen mayor posibilidad de generar rotación. Finalmente un valor representativo se encuentra en las horas extras, auqellos que han incurrido al uso de horas extras tienen una mayor posibilidad de aumentar su rotación en 4.6, finalmente un empleado que ha reportado una satisfacción laboral de 4 tiene una posibilidad menor de rotar frente a satisfación laboral de 3 y de 2.
Definición de modelo con unicamente variables significativas
modelo_rotacion_b=glm(Rotacion~Edad+Cargo + Horas_Extra + Satisfación_Laboral,data = rotacion,family = binomial(link="logit"))
summary(modelo_rotacion_b)
##
## Call:
## glm(formula = Rotacion ~ Edad + Cargo + Horas_Extra + Satisfación_Laboral,
## family = binomial(link = "logit"), data = rotacion)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.8537 -0.5853 -0.4020 -0.2223 2.9949
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -2.332772 0.847226 -2.753 0.005898 **
## Edad -0.035179 0.009791 -3.593 0.000327 ***
## CargoDirector_Manofactura 0.905516 0.800355 1.131 0.257889
## CargoEjecutivo_Ventas 1.986417 0.743553 2.672 0.007551 **
## CargoGerente 0.849375 0.863132 0.984 0.325085
## CargoInvestigador_Cientifico 1.676596 0.749750 2.236 0.025338 *
## CargoRecursos_Humanos 2.363980 0.809641 2.920 0.003503 **
## CargoRepresentante_Salud 0.937746 0.808051 1.161 0.245844
## CargoRepresentante_Ventas 3.044192 0.774669 3.930 8.51e-05 ***
## CargoTecnico_Laboratorio 2.393495 0.747237 3.203 0.001359 **
## Horas_ExtraSi 1.547689 0.160204 9.661 < 2e-16 ***
## Satisfación_Laboral2 -0.471774 0.234939 -2.008 0.044636 *
## Satisfación_Laboral3 -0.450806 0.207351 -2.174 0.029696 *
## Satisfación_Laboral4 -1.038113 0.220908 -4.699 2.61e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 1298.6 on 1469 degrees of freedom
## Residual deviance: 1084.5 on 1456 degrees of freedom
## AIC: 1112.5
##
## Number of Fisher Scoring iterations: 6
prediccion=predict(modelo_rotacion_b,list(Edad =rotacion$Edad,Cargo=rotacion$Cargo, Horas_Extra=rotacion$Horas_Extra, Satisfación_Laboral= rotacion$Satisfación_Laboral),type = "response")
ROC_rotacion=roc(rotacion$Rotacion~prediccion, percent = T, ci=T)
ROC_rotacion
##
## Call:
## roc.formula(formula = rotacion$Rotacion ~ prediccion, percent = T, ci = T)
##
## Data: prediccion in 1233 controls (rotacion$Rotacion 0) < 237 cases (rotacion$Rotacion 1).
## Area under the curve: 78.01%
## 95% CI: 74.62%-81.4% (DeLong)
plot(ROC_rotacion,print.auc=T,print.thres = "best",col="red"
,xlab = "Specificity", ylab = "Sensitivity")
La curva ROC para el modelo indica que este modelo tiene un buen poder discriminatorio, puesto que el trazo es cercano a la línea horizontal, de hecho el área bajo la curva (AUROC) es 0,78.
Se plantea la predición de un funcionario con las siguientes caracteristicas:
27 años, Ejecutivo_Ventas, con horas extras y con satisfación laboral 2
predict(modelo_rotacion_b, list(Edad= 27, Cargo = "Ejecutivo_Ventas", Horas_Extra= "Si", Satisfación_Laboral="2"),type = "response")
## 1
## 0.4451544
Un Funcionario con las especificaciones anteriores, es probable que no rote en un 44%, según el modelo.
Conclusiones
Se recomienda que la empresa implemente incentivos para estudiar y acensos para que los Funcionarios Jovenes continuen en la empresa y genere estabilidad en la empresa.
Se recomienda que se generen incentivos salariales en el reconocimiento de siertas actividades que geren valor y se refleje en los ingresos mensuales.
Se recomienda realizar las validaciones relacionadas con las metas de los trabajadores del área de ventas.
Se recomienda implementar mecanismos que permitan a los empleados mejorar su calidad de vida,incentivos, eventos, espacios de entretenimiento, entre otros, para mejorar el nivel de satisfación laboral.
Se recomienda mejora la politica de pago de horas extras, para que no se incremente la rotación en los Funcionarios que cumplen con este criterio.
Con base en los datos de créditos proponga un modelo de regresión logístico múltiple que permita predecir el riesgo de default en función de las covariables que considere importantes y seleccionándolas de acuerdo con un proceso adecuado. Tenga en cuenta realizar una evaluación de la significancia de los parámetros, interpretación y proponga un método de evaluación por medio de validación cruzada. Presente métricas apropiadas como el AUC y la curva ROC.
datos <- read_excel("Datos_Creditos.xlsx")
head(datos)
## # A tibble: 6 × 5
## DEFAULT ANTIUEDAD EDAD CUOTA_TOTAL INGRESOS
## <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1 37.3 77.0 3020519 8155593
## 2 1 37.3 73.8 1766552 6181263
## 3 1 31.0 78.9 1673786 4328075
## 4 1 9.73 51.5 668479 5290910
## 5 1 8.44 39.0 1223559 5333818
## 6 1 6.61 44.9 3517756 2710736
Cabezales de los datos
names(datos)
## [1] "DEFAULT" "ANTIUEDAD" "EDAD" "CUOTA_TOTAL" "INGRESOS"
Resumen de los datos
summary(datos)
## DEFAULT ANTIUEDAD EDAD CUOTA_TOTAL
## Min. :0.00 Min. : 0.2548 Min. :26.61 Min. : 387
## 1st Qu.:0.00 1st Qu.: 7.3767 1st Qu.:48.18 1st Qu.: 328516
## Median :0.00 Median :15.1192 Median :57.92 Median : 694460
## Mean :0.05 Mean :18.0353 Mean :56.99 Mean : 885206
## 3rd Qu.:0.00 3rd Qu.:30.6637 3rd Qu.:66.19 3rd Qu.:1244126
## Max. :1.00 Max. :37.3178 Max. :92.43 Max. :6664588
## INGRESOS
## Min. : 633825
## 1st Qu.: 3583324
## Median : 5038962
## Mean : 5366430
## 3rd Qu.: 6844098
## Max. :22197021
DEFAULT: variable dada por 0 o 1 ANTIGUEDAD: Tiempo en años de afiliado al fondo, como minimo valor 0.25 años y un maximo de 37 años EDAD: Edad en años cumplidos del asociado. con una edad minima de 26 y maxima de 92 años CUOTA TOTAL: Saldo de la deuda por credito de consumo. con una cuota minima de 387 pesos y maxima de 6 millones INGRESOS:Ingresos mensuales del asociado. con ingreos minimos mensuales de 633.825 y maximos de 22 millones
datos$COMPROMISO=round(datos$CUOTA_TOTAL/datos$INGRESOS*100,1)
summary(datos$COMPROMISO)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 0.00 7.60 15.55 17.45 25.30 129.80
Se agrega la nueva variable Compromiso para el analisis del modelo, con un minimos de 0 y un maximo de 129
Con lo que se busca identificar las variables mas significativas
La Variables Default indica si la persona en algun momento presento una altura de mora considerada grave (mas de 2 meses sin pagar la obligacion). Esta variables es binaria (1=Default y 0=No Default).
graf_1= ggplot (datos, aes (x=DEFAULT)) +geom_bar () +theme_bw ()
ggarrange(graf_1, labels = c ("A"),ncol = 1, nrow = 1)
rangea <- ggplot(datos, mapping=aes(), main="Distribuciones") + geom_boxplot(aes(y=ANTIUEDAD), fill='#67B7D1') +
labs(title ="ANTIUEDAD", x="", y="ANIOS")
rangeb <- ggplot(datos, mapping=aes(), main="Distribuciones") + geom_boxplot(aes(y=EDAD), fill='#67B7A1') +
labs(title ="EDAD", x="", y="ANIOS")
rangec <- ggplot(datos, mapping=aes(), main="Distribuciones") + geom_boxplot(aes(y=CUOTA_TOTAL), fill='#67B7A1') +
labs(title ="CUOTA_TOTAL", x="", y="CUOTA")
ranged <- ggplot(datos, mapping=aes(), main="Distribuciones") + geom_boxplot(aes(y=INGRESOS), fill='#67B7A1') +
labs(title ="INGRESOS", x="", y="DINERO")
ggplotly(rangea)
ggplotly(rangeb)
ggplotly(rangec)
ggplotly(ranged)
Antes de iniciar el analisis bivariado se realiza una matriz de correlacion para descartar variables duplicadas y de esta manera evitar la multicolinealidad, lo cual nos permita identificar las relaciones de los datos
correlacion<-round(cor(datos), 1)
correlacion
## DEFAULT ANTIUEDAD EDAD CUOTA_TOTAL INGRESOS COMPROMISO
## DEFAULT 1.0 -0.1 0.0 0.1 -0.1 0.2
## ANTIUEDAD -0.1 1.0 0.8 0.3 0.5 0.0
## EDAD 0.0 0.8 1.0 0.2 0.4 0.0
## CUOTA_TOTAL 0.1 0.3 0.2 1.0 0.4 0.8
## INGRESOS -0.1 0.5 0.4 0.4 1.0 -0.2
## COMPROMISO 0.2 0.0 0.0 0.8 -0.2 1.0
corrplot(correlacion, method="number", type="upper")
cov(datos$DEFAULT, datos$ANTIUEDAD )
## [1] -0.1754154
cor(datos$DEFAULT, datos$ANTIUEDAD )
## [1] -0.06736953
Distribuciones
ggpairs(datos, lower = list(continuous = "smooth"),
diag = list(continuous = "barDiag"), axisLabels = "none")
Histogramas
datos$DEFAULT_N = factor(datos$DEFAULT)
histo_tipo <- ggplot(data=datos, aes(x=ANTIUEDAD, fill=DEFAULT_N)) +
geom_histogram(binwidth=3, position="dodge") + labs(title ="Frecuencia", x="Concentración", y="Conteo")
histo_tipo1 <- ggplot(data=datos, aes(x=EDAD, fill=DEFAULT_N)) +
geom_histogram(binwidth=3, position="dodge") + labs(title ="Frecuencia", x="Concentración", y="Conteo")
ggplotly(histo_tipo)
ggplotly(histo_tipo1)
Variable respuesta vs predictoras
tapply(datos$COMPROMISO, datos$DEFAULT_N, mean)
## 0 1
## 16.96154 26.65641
tapply(datos$INGRESOS, datos$DEFAULT_N, mean)
## 0 1
## 5404108 4650560
tapply(datos$EDAD, datos$DEFAULT_N, mean)
## 0 1
## 57.08114 55.15869
tapply(datos$ANTIUEDAD, datos$DEFAULT_N, mean)
## 0 1
## 18.21966 14.53144
tapply(datos$CUOTA_TOTAL, datos$DEFAULT_N, mean)
## 0 1
## 868818.3 1196569.9
Se observa que del total de personas 39 tiene la condicion de Default es decir el 5% de las personas asociadas al fondo incumplen con el pago a tiempo.
Se observa que en el grupo de los Default el promedio del compromiso es del 26% mientras que en los no Default es de el 16%. Es decir se observa un mayor compromiso de sus ingresos
Se observa qque el grupo de los que estan en Default tienen un ingreso promedio de 4,6 MM frente a 5,4MM de los que no caen en Deault, es decir una diferencia de 800 mil pesos (17% aprox del ingreso promedio de los Default).
Tambien se evidencia que existe una alta correlacion entre las variables, EDAD y ANTIUEDAD, CUOTA_TOTAL y COMPROMISO, por lo cual se quitaron dos de las 4 variables mencionadas para tener un mejor modelo.
modelo=glm(DEFAULT~INGRESOS+ANTIUEDAD+COMPROMISO,data = datos,family = binomial(link="logit"))
summary(modelo)
##
## Call:
## glm(formula = DEFAULT ~ INGRESOS + ANTIUEDAD + COMPROMISO, family = binomial(link = "logit"),
## data = datos)
##
## Deviance Residuals:
## Min 1Q Median 3Q Max
## -1.2240 -0.3577 -0.2795 -0.2200 2.9254
##
## Coefficients:
## Estimate Std. Error z value Pr(>|z|)
## (Intercept) -3.270e+00 5.027e-01 -6.505 7.76e-11 ***
## INGRESOS -2.345e-08 8.546e-08 -0.274 0.783784
## ANTIUEDAD -2.831e-02 1.790e-02 -1.581 0.113777
## COMPROMISO 4.350e-02 1.154e-02 3.770 0.000163 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## (Dispersion parameter for binomial family taken to be 1)
##
## Null deviance: 309.68 on 779 degrees of freedom
## Residual deviance: 289.13 on 776 degrees of freedom
## AIC: 297.13
##
## Number of Fisher Scoring iterations: 6
El presente modelo presenta solo 1 variable significativa que acuerdo al estadistico Z, la cual es compromiso, mientras que las otras variables no explican o se ajustan al modelo.
OR=exp(modelo$coefficients)
OR
## (Intercept) INGRESOS ANTIUEDAD COMPROMISO
## 0.03800439 0.99999998 0.97209016 1.04445701
Cualquier aumento en una unidad de la variable compromiso aumenta la posibilidad en 1.04 de generar riesgo de crédito.
A continuación se presenta la división del dataset para revisar el área bajo la curva y la metrica ROC.
## division
set.seed(50)
n<- nrow(datos)
indin<- 1:n
nent<-ceiling(0.7*n)
ntest<- n-nent
indient<- sort(sample(indin,nent))
inditest<- setdiff(indin,indient)
part <- datos[indient,]
modelo_GLM <- glm(DEFAULT~INGRESOS+ANTIUEDAD+COMPROMISO,part,
family=binomial, maxit=10000)
prediccion= predict(modelo_GLM,list(INGRESOS =part$INGRESOS,
ANTIUEDAD=part$ANTIUEDAD,
COMPROMISO=part$COMPROMISO),type = "response")
ypred<- ifelse(prediccion>0.2,1,0)
yobser=part$DEFAULT
matriz=table(yobser,ypred)
matriz
## ypred
## yobser 0 1
## 0 518 2
## 1 26 0
sum(diag(matriz)/sum(matriz))
## [1] 0.9487179
ROC_res=roc(part$DEFAULT~prediccion, percent = T, ci=T)
ROC_res
##
## Call:
## roc.formula(formula = part$DEFAULT ~ prediccion, percent = T, ci = T)
##
## Data: prediccion in 520 controls (part$DEFAULT 0) < 26 cases (part$DEFAULT 1).
## Area under the curve: 67.34%
## 95% CI: 57.14%-77.55% (DeLong)
La curva ROC para el modelo indica que este modelo tiene un buen poder discriminatorio, puesto que el trazo es cercano a la línea horizontal, de hecho el área bajo la curva (AUROC) es 0,65.3.
plot(ROC_res,print.auc=T,print.thres = "best",col="red"
,xlab = "Specificity", ylab = "Sensitivity")
La curva ROC para el modelo indica que este modelo tiene un buen poder discriminatorio, puesto que el trazo es cercano a la línea horizontal, de hecho el área bajo la curva (AUROC) es 0,673