Deserción Estudiantil Universitaria - Univ Privada

El presente modelo de aprendizaje permita predecir de manera predictiva aquellos alumnos universitarios desertantes; se han desarrollado modelos anteriores que los pueden encontrar en => https://rpubs.com/jhampier/557637
* De requerir utilizar el dataset lo pueden descargar de la ruta Universidad Pública=> https://docs.google.com/spreadsheets/d/e/2PACX-1vSIntwA0sI2ClKu43ZWmfvsERzl_zm4OByOJwvwyMkuHhThDqWOxebHvWZQGUaISbu92ZMz9RiMXlFQ/pub?gid=791157846&single=true&output=csv
* De requerir utilizar el dataset lo pueden descargar de la ruta Universidad Privada=> https://docs.google.com/spreadsheets/d/e/2PACX-1vTtwC1ng4pLS5K8ZxzvMDcEdBRTv0_B8xwGOBZczl_RCzsQZeI3cL0Omdhi1rz-kt6ywTcf65jh7Q1R/pub?gid=1141535866&single=true&output=csv

#############################################Librerias de Carga
library(caret) # for model-building
library(DMwR)  # for smote implementation
library(purrr) # for functional programming (map)
library(pROC)
library(knitr)
library(ggraph)
library(nortest)
library(magrittr)
library(dplyr)
library(dplyr)
library(tidyr) 
library(e1071)
library(OneR) 
library(tidyverse)  # data manipulation and visualization
library(ggplot2)    # plot arrangement
library(gridExtra)  # plot arrangement
library(caret)
library(ggplot2)
library(FactoMineR)
library(factoextra)
#library(modes)      # MODA  VER EL COMPORTAMIENTO GENERAL DE LA INF
library(randomForest)

#CARGAS DATOS PARA TRABAJAR MODELO PREDICTIVO
############################################
#ruta <- 'C:/Users/Jhampier/Google Drive/Maestria/TESIS DE MAESTRIA/Proyecto'
ruta <- 'C:'
setwd('C:')
DataSetUprivada <-  read.table(paste(ruta, "/DataSetUprivadaBinarizadaSinRuidoFuturo.csv",sep=""),header=TRUE,sep=";",stringsAsFactors = FALSE)
str(DataSetUprivada)
'data.frame':   35693 obs. of  28 variables:
 $ CodAlumno                     : chr  "20000062092012-1" "20000062092012-2" "20000062092013-1" "20000062092013-2" ...
 $ SemestresEstudiadosAcum       : int  1 2 3 4 1 2 3 4 1 2 ...
 $ CantCursosLlevadosAcum        : int  7 15 22 29 6 13 20 28 6 11 ...
 $ CursosLlevadosFueraCarreraAcum: int  1 2 3 4 1 2 3 4 1 2 ...
 $ AvgSinAplzAcum                : chr  "10,52" "11,47" "11,41" "11,34" ...
 $ AvgConAplzAcum                : chr  "10,76" "11,59" "11,44" "11,46" ...
 $ CantCursosAplzAcum            : int  1 1 2 3 2 3 4 6 1 1 ...
 $ SumCredTeoAcum                : int  15 30 44 58 14 27 40 56 12 21 ...
 $ SumCredPraAcum                : int  7 14 21 28 6 13 20 27 6 11 ...
 $ edad                          : int  20 20 21 21 20 20 21 21 34 35 ...
 $ SEXO                          : chr  "M" "M" "M" "M" ...
 $ AvgVezMatriAcum               : chr  "1,14" "1,13" "1,09" "1,07" ...
 $ CarreraProfesional            : chr  "INGENIERIA AGRONOMICA" "INGENIERIA AGRONOMICA" "INGENIERIA AGRONOMICA" "INGENIERIA AGRONOMICA" ...
 $ MODALIDAD_INGRESO             : chr  "Primeros Puestos" "Primeros Puestos" "Primeros Puestos" "Primeros Puestos" ...
 $ ANIO_INGRESO                  : int  2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 ...
 $ UBIG_NACIMIENTO               : chr  "JOSE LUIS BUSTAMANTE Y RIVERO" "JOSE LUIS BUSTAMANTE Y RIVERO" "JOSE LUIS BUSTAMANTE Y RIVERO" "JOSE LUIS BUSTAMANTE Y RIVERO" ...
 $ UBIG_RESIDENCIA               : chr  "JOSE LUIS BUSTAMANTE Y RIVERO" "JOSE LUIS BUSTAMANTE Y RIVERO" "JOSE LUIS BUSTAMANTE Y RIVERO" "JOSE LUIS BUSTAMANTE Y RIVERO" ...
 $ TIPO_VIVIENDA                 : chr  "CASA" "CASA" "CASA" "CASA" ...
 $ GradoInstruccionPapa          : chr  "SUPERIOR UNIV. INCOMPLETA" "SUPERIOR UNIV. INCOMPLETA" "SUPERIOR UNIV. INCOMPLETA" "SUPERIOR UNIV. INCOMPLETA" ...
 $ ProfesionPapa                 : chr  "OTROS" "OTROS" "OTROS" "OTROS" ...
 $ OcupacionPapa                 : chr  "EMPRESARIO" "EMPRESARIO" "EMPRESARIO" "EMPRESARIO" ...
 $ GradoInstruccionMama          : chr  "SUPERIOR TECNICA INCOMPLETA" "SUPERIOR TECNICA INCOMPLETA" "SUPERIOR TECNICA INCOMPLETA" "SUPERIOR TECNICA INCOMPLETA" ...
 $ ProfesionMama                 : chr  "OTROS" "OTROS" "OTROS" "OTROS" ...
 $ OcupacionMama                 : chr  "EMPLEADO" "EMPLEADO" "EMPLEADO" "EMPLEADO" ...
 $ CantCursosAnulados            : int  1 1 1 1 0 0 0 0 0 0 ...
 $ categoria                     : chr  "CONTINUA" "CONTINUA" "CONTINUA" "EGRESADO" ...
 $ categoriaBinarizada           : int  0 0 0 0 0 0 0 1 0 0 ...
 $ ProbabDesercion               : chr  "14,24" "10,24" "6,61" "5,87" ...
#View(DataSetUprivada)
DataSetUprivada

Preparación de datos

Se mostrara la cantidad de datos que se tiene para aplicar modelos de ML. * Se validara y reemplara cada variable por su respecivo tipo de dato. * Se ordenará cronológimante el dataset debido a que la data es histórica.

########################################################
###########  PREPARACIÓN DE DATA POR VARIABLES  ########
########################################################
##Cantidad de Registros
nrow(DataSetUprivada)#[1] 35693
[1] 35693
#Cantidad de Variables
ncol(DataSetUprivada)#[1] 27 -1 de categoria(var categorica)
[1] 28
#Nombres de Variables
colnames(DataSetUprivada)
 [1] "CodAlumno"                      "SemestresEstudiadosAcum"       
 [3] "CantCursosLlevadosAcum"         "CursosLlevadosFueraCarreraAcum"
 [5] "AvgSinAplzAcum"                 "AvgConAplzAcum"                
 [7] "CantCursosAplzAcum"             "SumCredTeoAcum"                
 [9] "SumCredPraAcum"                 "edad"                          
[11] "SEXO"                           "AvgVezMatriAcum"               
[13] "CarreraProfesional"             "MODALIDAD_INGRESO"             
[15] "ANIO_INGRESO"                   "UBIG_NACIMIENTO"               
[17] "UBIG_RESIDENCIA"                "TIPO_VIVIENDA"                 
[19] "GradoInstruccionPapa"           "ProfesionPapa"                 
[21] "OcupacionPapa"                  "GradoInstruccionMama"          
[23] "ProfesionMama"                  "OcupacionMama"                 
[25] "CantCursosAnulados"             "categoria"                     
[27] "categoriaBinarizada"            "ProbabDesercion"               
###Conversion para tipo de dato correcto
DataSetUPRIVADAFRMTO <-transform(DataSetUprivada, 
                                 SEXO = as.factor(as.character(SEXO)),
                                 CarreraProfesional = as.factor(as.character(CarreraProfesional)),
                                 MODALIDAD_INGRESO = as.factor(as.character(MODALIDAD_INGRESO)),
                                 UBIG_NACIMIENTO = as.factor(as.character(UBIG_NACIMIENTO)),
                                 UBIG_RESIDENCIA = as.factor(as.character(UBIG_RESIDENCIA)),
                                 TIPO_VIVIENDA = as.factor(as.character(TIPO_VIVIENDA)),
                                 GradoInstruccionPapa = as.factor(as.character(GradoInstruccionPapa)),
                                 ProfesionPapa = as.factor(as.character(ProfesionPapa)),
                                 OcupacionPapa = as.factor(as.character(OcupacionPapa)),
                                 GradoInstruccionMama = as.factor(as.character(GradoInstruccionMama)),
                                 ProfesionMama = as.factor(as.character(ProfesionMama)),
                                 OcupacionMama = as.factor(as.character(OcupacionMama))
                                 ,categoriaBinarizada = as.factor(as.character(categoriaBinarizada)
                                                                  )
)
#Retiramos el campo Categoría
DataSetUPRIVADAFRMTO$categoria <- NULL
#Convertimos a Factor a la varaible Objetivo
levels(DataSetUPRIVADAFRMTO$categoriaBinarizada) <- c("NO","SI")
#Por útlimo remobramos el nombre de la Variable objetivo
colnames(DataSetUPRIVADAFRMTO)[26] <- "DESERTOR"

DataSetUPRIVADAFRMTO[,'AvgSinAplzAcum'] <- as.numeric(sub(",", ".",  DataSetUPRIVADAFRMTO[,'AvgSinAplzAcum']
                                                          , fixed = TRUE))
DataSetUPRIVADAFRMTO[,'AvgConAplzAcum'] <- as.numeric(sub(",", ".",  DataSetUPRIVADAFRMTO[,'AvgConAplzAcum']
                                                          , fixed = TRUE))
DataSetUPRIVADAFRMTO[,'AvgVezMatriAcum'] <- as.numeric(sub(",", ".",  DataSetUPRIVADAFRMTO[,'AvgVezMatriAcum']
                                                           , fixed = TRUE))
DataSetUPRIVADAFRMTO[,'ProbabDesercion'] <- as.numeric(sub(",", ".",  DataSetUPRIVADAFRMTO[,'ProbabDesercion']
                                                           , fixed = TRUE))

####################################################################################
#Organizamos las variables en Categóricas(Cualitativas) y Cuantitativas(Contínuas)

#Lista de variables categóricas 12 Variables en Total
ListVar.Categ <-    c('SEXO','CarreraProfesional','MODALIDAD_INGRESO'
                      ,'UBIG_NACIMIENTO','UBIG_RESIDENCIA','TIPO_VIVIENDA'
                      ,'GradoInstruccionPapa','ProfesionPapa','OcupacionPapa'
                      ,'GradoInstruccionMama','ProfesionMama','OcupacionMama')    # 12

#Lista de variables Continuas 13 Variables en Total
ListVar.Continuas <- c('SemestresEstudiadosAcum'
                       ,'CantCursosLlevadosAcum'
                       ,'CursosLlevadosFueraCarreraAcum'
                       ,'AvgSinAplzAcum','AvgConAplzAcum'
                       ,'CantCursosAplzAcum'
                       ,'SumCredTeoAcum'
                       ,'SumCredPraAcum'
                       ,'edad'
                       ,'AvgVezMatriAcum'
                       ,'ANIO_INGRESO'
                       ,'CantCursosAnulados'                                     # 13
                       ,'ProbabDesercion'
)
#Variable Objetivo(Target)
Var.Objetivo       <- c('DESERTOR')  #c('categoria')                                             # 1

#Variable de Idenfitifación
Var.Identificacion <- c('CodAlumno')                                            # 1

#Listado de todas las variables que influenciaran en el modelo
Var.TodasUprivada <- c(ListVar.Categ ,ListVar.Continuas , Var.Objetivo)

##############################################################################
#  ###ORDENAMOS EL DATASET CRONOLOGICAMENTE 
############################################################################
# Se utilizará el campo del Codigo de Alumno para poder ordenar el dataframe

TotalFilas <- nrow(DataSetUPRIVADAFRMTO)  #35687
SortUltimaFila=vector(mode='numeric', length=TotalFilas)
SortUltimaFila2=vector(mode='numeric', length=TotalFilas)
##Obtendremos las variables dle codigod el alumno para ordenar el dataset
NuevoDataSetUPRIVADAFRMTO = data.frame(DataSetUPRIVADAFRMTO, SortUltimaFila,SortUltimaFila2)
#View(NuevoDataSetUPRIVADAFRMTO)
#summary(NuevoDataSetUPRIVADAFRMTO)
NuevoDataSetUPRIVADAFRMTO$SortUltimaFila=as.numeric(  substr(NuevoDataSetUPRIVADAFRMTO$CodAlumno, 11, 14))
NuevoDataSetUPRIVADAFRMTO$SortUltimaFila2=as.numeric(  substr(NuevoDataSetUPRIVADAFRMTO$CodAlumno, 16, 17))

###ORDENAMOS EL DATA SET
SortNuevoDataSetUPRIVADAFRMTO <- NuevoDataSetUPRIVADAFRMTO[order(NuevoDataSetUPRIVADAFRMTO$SortUltimaFila,NuevoDataSetUPRIVADAFRMTO$SortUltimaFila2),] 
#View(SortNuevoDataSetUPRIVADAFRMTO)
SortNuevoDataSetUPRIVADAFRMTO$SortUltimaFila <- NULL ##ELIMINARNOS LAS FILAS DE ORDENAMIENTO
SortNuevoDataSetUPRIVADAFRMTO$SortUltimaFila2 <- NULL ##ELIMINARNOS LAS FILAS DE ORDENAMIENTO

##Reemplamos en el dataset que se trabajarn los modelos
DataSetUPRIVADAFRMTO<-SortNuevoDataSetUPRIVADAFRMTO



#### ACTUALIZAMOS EL VALOR DE ING AGRONÓMICA POR SER EL MISMO DATOS  INGENIERIA AGRONOMICA  = INGENIERIA AGRONOMICA Y AGRICOLA
DataSetUPRIVADAFRMTO$CarreraProfesional[DataSetUPRIVADAFRMTO$CarreraProfesional == "INGENIERIA AGRONOMICA"] <- "INGENIERIA AGRONOMICA Y AGRICOLA" 
DataSetUPRIVADAFRMTO$CarreraProfesional <- droplevels(DataSetUPRIVADAFRMTO$CarreraProfesional)


####################################################
##ANALISIS DE CANTIDAD DE REGISTROS POR SEMESTRE 
####################################################
#Solo se trabaja con datos hasta el primer semestre del 2017 
DataSetUPRIVADAFRMTO.tmp  <-  DataSetUPRIVADAFRMTO[substr(DataSetUPRIVADAFRMTO$CodAlumno, 11, 17)!="2017-2" ,c( "CodAlumno",Var.TodasUprivada)] %>%  droplevels 
Tabla_FrecAcumuladas <-table(as.factor(substr(DataSetUPRIVADAFRMTO.tmp$CodAlumno, 11, 17))) %>% as.data.frame() 
colnames(Tabla_FrecAcumuladas) <- c("Semestre","Cant")
Tabla_FrecAcumuladas$ACUMULADO<- cumsum(Tabla_FrecAcumuladas$Cant)
Tabla_FrecAcumuladas$PorcetAcum = round(100 *Tabla_FrecAcumuladas$ACUMULADO / sum(Tabla_FrecAcumuladas$Cant))
#Tabla de Frecuencias absolutas y relativas acumuladas por Semestre  
Tabla_FrecAcumuladas ### SE TOMA LA DECISIÓN DE PARTICINAR  para el entrenamiento al semestre 2015-2 que represetan el 70 %  de la data total 
DataSetUPRIVADAFRMTO.tmp <- NULL


##############################################
str(DataSetUPRIVADAFRMTO)
'data.frame':   35693 obs. of  27 variables:
 $ CodAlumno                     : chr  "20000062092012-1" "20000063092012-1" "20000064092012-1" "20000065092012-1" ...
 $ SemestresEstudiadosAcum       : int  1 1 1 1 1 1 1 1 1 1 ...
 $ CantCursosLlevadosAcum        : int  7 6 6 2 5 6 6 5 5 5 ...
 $ CursosLlevadosFueraCarreraAcum: int  1 1 1 1 1 1 1 1 1 1 ...
 $ AvgSinAplzAcum                : num  10.52 10.33 12.05 7.33 8.93 ...
 $ AvgConAplzAcum                : num  10.76 10.67 13 7.5 9.27 ...
 $ CantCursosAplzAcum            : int  1 2 1 1 1 1 0 2 0 0 ...
 $ SumCredTeoAcum                : int  15 14 12 4 11 14 14 10 9 10 ...
 $ SumCredPraAcum                : int  7 6 6 2 3 6 6 5 5 5 ...
 $ edad                          : int  20 20 34 19 22 20 20 20 26 20 ...
 $ SEXO                          : Factor w/ 2 levels "F","M": 2 2 1 2 1 1 2 2 2 2 ...
 $ AvgVezMatriAcum               : num  1.14 1 1 2 1.4 1 1 1.4 1 1.4 ...
 $ CarreraProfesional            : Factor w/ 8 levels "INGENIERIA AGRONOMICA Y AGRICOLA",..: 1 1 1 1 1 1 1 1 1 1 ...
 $ MODALIDAD_INGRESO             : Factor w/ 41 levels "Beca18","Becas Integrales",..: 29 29 23 32 32 32 28 28 28 28 ...
 $ ANIO_INGRESO                  : int  2009 2009 2009 2009 2009 2009 2009 2009 2009 2009 ...
 $ UBIG_NACIMIENTO               : Factor w/ 265 levels "ABANCAY","ACARI",..: 110 202 203 13 13 13 33 176 108 13 ...
 $ UBIG_RESIDENCIA               : Factor w/ 90 levels "ACORA","ALTO DE LA ALIANZA",..: 31 31 77 39 39 39 14 77 14 77 ...
 $ TIPO_VIVIENDA                 : Factor w/ 3 levels "CASA","DEPARTAMENTO",..: 1 2 1 1 1 2 1 1 1 1 ...
 $ GradoInstruccionPapa          : Factor w/ 14 levels "DR., MAGISTER, ALTA ESPECIALIDAD",..: 14 14 11 13 14 10 11 14 13 11 ...
 $ ProfesionPapa                 : Factor w/ 36 levels "ABOGADO","ADMINISTRADOR DE EMPRESAS",..: 26 27 26 27 15 26 26 26 8 3 ...
 $ OcupacionPapa                 : Factor w/ 16 levels "AGRICULTOR","AMA DE CASA",..: 8 1 9 1 7 7 11 16 9 5 ...
 $ GradoInstruccionMama          : Factor w/ 15 levels "","DR., MAGISTER, ALTA ESPECIALIDAD",..: 13 10 14 10 12 10 10 14 15 15 ...
 $ ProfesionMama                 : Factor w/ 38 levels "","ABOGADO","ADMINISTRADOR DE EMPRESAS",..: 27 28 27 28 27 27 27 24 22 2 ...
 $ OcupacionMama                 : Factor w/ 17 levels "","AGRICULTOR",..: 8 3 8 3 17 14 3 8 10 3 ...
 $ CantCursosAnulados            : int  1 0 0 0 0 0 0 0 0 0 ...
 $ DESERTOR                      : Factor w/ 2 levels "NO","SI": 1 1 1 1 1 1 1 1 1 1 ...
 $ ProbabDesercion               : num  14.2 14.2 14.2 14.2 14.2 ...

DataFrame Inicial

#knitr::kable(head(DataSetUPRIVADAFRMTO), caption = "Table with kable",)
DataSetUPRIVADAFRMTO

Comprensión de Datos

Una vez obtenido el dataframe(dataset) con sus respectivos tipos de datos ahora analizaremos los datos para poder comprenderlos aplicando estadistica descriptiva

## 
##    NO    SI 
## 92.27  7.73

Analisis de Datos Perdidos

Actualmente el dataframe no tiene datos perdidos debido a que ya fue preparado en un proceso anterior de ETL.

#####################################
#### ANALISIS DE DATOS PERDIDOS ####
#####################################

# Verificación de datos perdidos
library(DataExplorer)
plot_missing(DataSetUPRIVADAFRMTO)#,ylab="Variables/Características") 

Histogramas

Una vez observada nuestra variable objetivo y su distribución analizaremos las variables CUANTITATIVAS

  • Linea Roja = Media
  • Linea Azul = Mediana
    Observaremso su distribución, para poder luego transformarlas
##Resumen con summary del dataframe
summary(DataSetUPRIVADAFRMTO)
  CodAlumno         SemestresEstudiadosAcum CantCursosLlevadosAcum
 Length:35693       Min.   : 1.000          Min.   : 1.00         
 Class :character   1st Qu.: 2.000          1st Qu.:11.00         
 Mode  :character   Median : 4.000          Median :20.00         
                    Mean   : 4.187          Mean   :23.17         
                    3rd Qu.: 6.000          3rd Qu.:33.00         
                    Max.   :12.000          Max.   :81.00         
                                                                  
 CursosLlevadosFueraCarreraAcum AvgSinAplzAcum  AvgConAplzAcum 
 Min.   : 1.000                 Min.   : 0.00   Min.   : 0.00  
 1st Qu.: 2.000                 1st Qu.: 8.91   1st Qu.: 9.36  
 Median : 4.000                 Median :10.63   Median :11.06  
 Mean   : 4.306                 Mean   :10.54   Mean   :10.84  
 3rd Qu.: 6.000                 3rd Qu.:12.32   3rd Qu.:12.52  
 Max.   :18.000                 Max.   :19.66   Max.   :19.66  
                                                               
 CantCursosAplzAcum SumCredTeoAcum  SumCredPraAcum       edad        SEXO     
 Min.   : 0.000     Min.   :  1.0   Min.   : 0.00   Min.   : 14.00   F: 9994  
 1st Qu.: 1.000     1st Qu.: 27.0   1st Qu.: 7.00   1st Qu.: 18.00   M:25699  
 Median : 3.000     Median : 50.0   Median :15.00   Median : 20.00            
 Mean   : 5.247     Mean   : 59.4   Mean   :17.78   Mean   : 20.55            
 3rd Qu.: 8.000     3rd Qu.: 85.0   3rd Qu.:25.00   3rd Qu.: 22.00            
 Max.   :48.000     Max.   :200.0   Max.   :80.00   Max.   :113.00            
                                                                              
 AvgVezMatriAcum                                             CarreraProfesional
 Min.   :1.000   INGENIERIA INDUSTRIAL                                :8791    
 1st Qu.:1.000   INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA:8528    
 Median :1.000   INGENIERIA DE SISTEMAS                               :4537    
 Mean   :1.138   INGENIERIA ELECTRONICA                               :3699    
 3rd Qu.:1.170   MEDICINA VETERINARIA Y ZOOTECNIA                     :3124    
 Max.   :4.000   INGENIERIA DE MINAS                                  :3119    
                 (Other)                                              :3895    
                   MODALIDAD_INGRESO  ANIO_INGRESO    UBIG_NACIMIENTO 
 Tercer Examen General      :8524    Min.   :2009   AREQUIPA  :21072  
 Segundo Examen General     :6259    1st Qu.:2011   PAUCARPATA: 1444  
 Primer Examen General      :5818    Median :2012   JULIACA   :  869  
 Centro Preuniversitario III:3417    Mean   :2012   YANAHUARA :  707  
 Centro Preuniversitario I  :2962    3rd Qu.:2014   ILO       :  701  
 Centro Preuniversitario II :2962    Max.   :2017   MOLLENDO  :  655  
 (Other)                    :5751                   (Other)   :10245  
                      UBIG_RESIDENCIA       TIPO_VIVIENDA  
 JOSE LUIS BUSTAMANTE Y RIVERO: 5274   CASA        :29859  
 CERRO COLORADO               : 3949   DEPARTAMENTO: 5484  
 AREQUIPA                     : 3931   VECINDAD    :  350  
 PAUCARPATA                   : 3272                       
 CAYMA                        : 2701                       
 YANAHUARA                    : 2381                       
 (Other)                      :14185                       
                GradoInstruccionPapa                   ProfesionPapa  
 SECUNDARIA COMPLETA      :7703      OTROS                    :13173  
 SUPERIOR UNIV. COMPLETA  :6279      PROFESION ...            : 6469  
 SUPERIOR TECNICA COMPLETA:5469      CONTADOR                 : 2238  
 GRADUADO UNIVERSITARIO   :4493      ADMINISTRADOR DE EMPRESAS: 1550  
 SUPERIOR UNIV. INCOMPLETA:4372      PROFESOR                 : 1479  
 NIVEL EDUCATIVO ...      :1770      ABOGADO                  : 1313  
 (Other)                  :5607      (Other)                  : 9471  
               OcupacionPapa                    GradoInstruccionMama
 EMPLEADO             :10711   SECUNDARIA COMPLETA        :8926     
 OTRO                 : 5305   SUPERIOR UNIV. COMPLETA    :6048     
 OCUPACION ...        : 3028   SUPERIOR TECNICA COMPLETA  :5695     
 MICROEMPRESARIO      : 2396   GRADUADO UNIVERSITARIO     :4726     
 FF. POLICIALES       : 2185   SUPERIOR UNIV. INCOMPLETA  :3464     
 CONDUCTOR DE VEHICULO: 2182   EST. SUP. NO UNIVERSITARIOS:1674     
 (Other)              : 9886   (Other)                    :5160     
                   ProfesionMama                 OcupacionMama  
 OTROS                    :13518   AMA DE CASA          :14746  
 PROFESION ...            : 5909   EMPLEADO             : 8825  
 ENFERMERA                : 2976   OTRO                 : 3767  
 PROFESOR                 : 2966   COMERCIANTE MINORISTA: 2208  
 CONTADOR                 : 2400   OCUPACION ...        : 1576  
 ADMINISTRADOR DE EMPRESAS:  871   MICROEMPRESARIO      : 1558  
 (Other)                  : 7053   (Other)              : 3013  
 CantCursosAnulados DESERTOR   ProbabDesercion 
 Min.   : 0.0000    NO:32934   Min.   : 0.000  
 1st Qu.: 0.0000    SI: 2759   1st Qu.: 5.190  
 Median : 0.0000               Median : 5.870  
 Mean   : 0.2907               Mean   : 7.729  
 3rd Qu.: 0.0000               3rd Qu.:10.240  
 Max.   :16.0000               Max.   :14.240  
                                               
par(mfrow = c(2,2))

hist(DataSetUPRIVADAFRMTO$SemestresEstudiadosAcum,col="orange"
     ,xlab="Cantidad de Semestres Estudiados Acumulado"
     ,ylab="Frecuencia Absoluta",main="Semestres Estudiados Acumulados"
     ,breaks =12)
hist(DataSetUPRIVADAFRMTO$SemestresEstudiadosAcum,col="orange"
     ,xlab="Cantidad de Semestres Estudiados Acumulado"
     ,ylab="Frecuencia Relativa",main="Semestres Estudiados Acumulados"
     ,breaks =12,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$SemestresEstudiadosAcum),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$SemestresEstudiadosAcum), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$SemestresEstudiadosAcum), col = "blue",lwd=3)


hist(DataSetUPRIVADAFRMTO$CantCursosLlevadosAcum,col="orange"
     ,xlab="Cantidad de Cursos Llevados Acumulados"
     ,ylab="Frecuencia Absoluta",main="Cursos Llevados Acumulados"
     ,breaks =7)
hist(DataSetUPRIVADAFRMTO$CantCursosLlevadosAcum,col="orange"
     ,xlab="Cantidad de Cursos Llevados Acumulados"
     ,ylab="Frecuencia Relativa",main="Cursos Llevados Acumulados %"
     ,breaks =7,probability =TRUE)
lines (density(DataSetUPRIVADAFRMTO$CantCursosLlevadosAcum) , col = "red"  ,lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$CantCursosLlevadosAcum), col = "red"  ,lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$CantCursosLlevadosAcum), col = "blue" ,lwd=3)

#par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$CursosLlevadosFueraCarreraAcum,col="orange"
     ,xlab="Cantidad de Cursos Llevados Fuera Carrera"
     ,ylab="Frecuencia Absoluta",main="Cursos Llevados Fuera Carrera"
     ,breaks =7)
hist(DataSetUPRIVADAFRMTO$CursosLlevadosFueraCarreraAcum,col="orange"
     ,xlab="Cantidad de Cursos Llevados Fuera Carrera"
     ,ylab="Frecuencia Relativa",main="Cursos Llevados Fuera Carrera %"
     ,breaks =7,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$CursosLlevadosFueraCarreraAcum),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$CursosLlevadosFueraCarreraAcum), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$CursosLlevadosFueraCarreraAcum), col = "blue",lwd=3)


hist(DataSetUPRIVADAFRMTO$AvgSinAplzAcum,col="orange"
     ,xlab="Promedio de Notas Sin Aplazados"
     ,ylab="Frecuencia Absoluta",main="Promedio de Notas Sin Aplazados"
     ,breaks =10)
hist(DataSetUPRIVADAFRMTO$AvgSinAplzAcum,col="orange"
     ,xlab="Promedio de Notas Sin Aplazados"
     ,ylab="Frecuencia Relativa",main="Promedio de Notas Sin Aplazados %"
     ,breaks =10,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$AvgSinAplzAcum),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$AvgSinAplzAcum), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$AvgSinAplzAcum), col = "blue",lwd=3)

par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$AvgConAplzAcum,col="orange"
     ,xlab="Promedio de Notas CON Aplazados"
     ,ylab="Frecuencia Absoluta",main="Promedio de Notas CON Aplazados"
     ,breaks =10)
hist(DataSetUPRIVADAFRMTO$AvgConAplzAcum,col="orange"
     ,xlab="Promedio de Notas CON Aplazados"
     ,ylab="Frecuencia Relativa",main="Promedio de Notas CON Aplazados %"
     ,breaks =10,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$AvgConAplzAcum),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$AvgConAplzAcum), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$AvgConAplzAcum), col = "blue",lwd=3)


hist(DataSetUPRIVADAFRMTO$CantCursosAplzAcum,col="orange"
     ,xlab="Cantidad de Cursos Aplazados"
     ,ylab="Frecuencia Absoluta",main="Cant Cursos Aplazados"
     ,breaks =7)
hist(DataSetUPRIVADAFRMTO$CantCursosAplzAcum,col="orange"
     ,xlab="Cantidad de Cursos Aplazados(Acumulado)"
     ,ylab="Frecuencia Relativa",main="Cant Cursos Aplazados %"
     ,breaks =7,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$CantCursosAplzAcum),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$CantCursosAplzAcum), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$CantCursosAplzAcum), col = "blue",lwd=3)

par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$SumCredTeoAcum,col="orange"
     ,xlab="Cantidad de Creditos Teoria"
     ,ylab="Frecuencia Absoluta",main="Cantidad de Creditos Teoria"
     ,breaks =10)
hist(DataSetUPRIVADAFRMTO$SumCredTeoAcum,col="orange"
     ,xlab="Cantidad de Creditos Teoria "
     ,ylab="Frecuencia Relativa",main="Cantidad de Creditos Teoria %"
     ,breaks =10,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$SumCredTeoAcum),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$SumCredTeoAcum), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$SumCredTeoAcum), col = "blue",lwd=3)

hist(DataSetUPRIVADAFRMTO$SumCredPraAcum,col="orange"
     ,xlab="Cantidad de Creditos Practicas"
     ,ylab="Frecuencia Absoluta",main="Cantidad de Creditos Practicas"
     ,breaks =10)
hist(DataSetUPRIVADAFRMTO$SumCredPraAcum,col="orange"
     ,xlab="Cantidad de Creditos Practicas"
     ,ylab="Frecuencia Relativa",main="Cantidad de Creditos Practicas %"
     ,breaks =10,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$SumCredPraAcum),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$SumCredPraAcum), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$SumCredPraAcum), col = "blue",lwd=3)

par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$edad,col="orange"
     ,xlab="Edades"
     ,ylab="Frecuencia Absoluta",main="Edades"
     ,breaks =7)
hist(DataSetUPRIVADAFRMTO$edad,col="orange"
     ,xlab="Edades"
     ,ylab="Frecuencia Relativa",main="Edades %"
     ,breaks =7,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$edad),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$edad), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$edad), col = "blue",lwd=3)

hist(DataSetUPRIVADAFRMTO$AvgVezMatriAcum,col="orange"
     ,xlab="Promedio de Veces de Matricula"
     ,ylab="Frecuencia Absoluta",main="Promedio de Veces de Matricula"
     ,breaks =7)
hist(DataSetUPRIVADAFRMTO$AvgVezMatriAcum,col="orange"
     ,xlab="Promedio de Veces de Matricula"
     ,ylab="Frecuencia Relativa",main="Promedio de Veces de Matricula %"
     ,breaks =7,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$AvgVezMatriAcum),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$AvgVezMatriAcum), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$AvgVezMatriAcum), col = "blue",lwd=3)

par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$ANIO_INGRESO,col="orange"
     ,xlab="Año de Ingreso a Universidad"
     ,ylab="Frecuencia Absoluta",main="Año de Ingreso"
     ,breaks =10)
hist(DataSetUPRIVADAFRMTO$ANIO_INGRESO,col="orange"
     ,xlab="Año de Ingreso a Universidad"
     ,ylab="Frecuencia Relativa",main="Año de Ingreso  %"
     ,breaks =10,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$ANIO_INGRESO),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$ANIO_INGRESO), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$ANIO_INGRESO), col = "blue",lwd=3)

hist(DataSetUPRIVADAFRMTO$CantCursosAnulados,col="orange"
     ,xlab="Cantidad de Cursos Anulados"
     ,ylab="Frecuencia Absoluta",main="Cantidad de Cursos Anulados"
     ,breaks =7)
hist(DataSetUPRIVADAFRMTO$CantCursosAnulados,col="orange"
     ,xlab="Cantidad de Cursos Anulados"
     ,ylab="Frecuencia Relativa",main="Cantidad de Cursos Anulados %"
     ,breaks =7,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$CantCursosAnulados),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$CantCursosAnulados), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$CantCursosAnulados), col = "blue",lwd=3)

par(mfrow = c(1,2))
hist(DataSetUPRIVADAFRMTO$ProbabDesercion,col="orange"
     ,xlab="Probabilidad Deserción Ref Año Anterior",main="Probabilidad de Deserción"
     ,breaks =7)
hist(DataSetUPRIVADAFRMTO$ProbabDesercion,col="orange"
     ,xlab="Probabilidad Deserción Ref Año Anterior"
     ,ylab="Frecuencia Relativa",main="Probabilidad de Deserción %"
     ,breaks =7,probability =TRUE)
lines(density(DataSetUPRIVADAFRMTO$ProbabDesercion),col="red", lwd=3)
abline(v = mean(DataSetUPRIVADAFRMTO$ProbabDesercion), col = "red",lwd=3)
abline(v=median(DataSetUPRIVADAFRMTO$ProbabDesercion), col = "blue",lwd=3)

### Análisis Exploratorio

####$ Distribución y diagrama de CAja y Bigotes
Seguimos analizando las variables cuantitativas y hacemos tomamos el logaritmo para aquellas que no se pueden visualizar correctamente.

##########################################################################################
##### ANALISIS EXPLORATORIA DE DATOS (EDA) => VISUALIZACION SIMPLIFICADA DE DATOS  ## DEMOSTRACIÓN EN EL POWER BI
##################################
 par(mfrow = c(1,1))
DataSetUPRIVADAFRMTO %>% 
  dplyr::select(ListVar.Continuas) %>% 
  gather(metric, value) %>% 
  ggplot(aes(value, fill = metric)) + 
  geom_density(show.legend = FALSE) + 
  facet_wrap(~ metric, scales  = "free")

##Se tomo la desición de quitar las variables   #CantCursosAnulados  y AvgVezMatriAcum
##Ojo no se considera la varaible #CantCursosAnulados  y AvgVezMatriAcum

#######################################
##### DIAGRAMA DE CAJA Y BIGOTES 
#################################
p1 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=SemestresEstudiadosAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='SemestresEstudiadosAcum')
p2 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=CantCursosLlevadosAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='CantCursosLlevadosAcum')
p3 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=CursosLlevadosFueraCarreraAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='CursosLlevadosFueraCarreraAcum')
p4 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=AvgSinAplzAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='AvgSinAplzAcum')
p5 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=AvgConAplzAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='AvgConAplzAcum')
p6 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=CantCursosAplzAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='CantCursosAplzAcum')
p7 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=SumCredTeoAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='SumCredTeoAcum')
p8 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=SumCredPraAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='SumCredPraAcum')
p9 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=edad))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='edad')
p10 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=AvgVezMatriAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='AvgVezMatriAcum')
p11 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=ANIO_INGRESO))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='ANIO_INGRESO')
p12 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=CantCursosAnulados))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='CantCursosAnulados')

grid.arrange(p1,p2,p3,p4,p5,p6,ncol=2)    # CursosLlevadosFueraCarreraAcum  CursosLlevadosFueraCarreraAcum 

grid.arrange(p7,p8,p9,p10,p11,p12,ncol=2) # SumCredTeoAcum

######################################################
#Aplicamos logaritmos  a las variables EDAD, AvgVezMatriAcum y CantCursosAnulados para poder visualizarlas mejor
########################################################
p9 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=edad))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='edad')+scale_y_log10() 
p10 <- DataSetUPRIVADAFRMTO %>%ggplot(aes(x=DESERTOR,y=AvgVezMatriAcum))+geom_boxplot(aes(fill=DESERTOR))+labs(tittle='AvgVezMatriAcum')+scale_y_log10()
p12 <- DataSetUPRIVADAFRMTO %>%  ggplot(aes(x=DESERTOR,y=CantCursosAnulados))    +geom_boxplot(aes(fill=DESERTOR))    +labs(tittle='CantCursosAnulados')    +scale_y_log10() 
grid.arrange(p7,p8,p9,p10,p11,p12,ncol=2) # 

### Análsis de variables categóricas

###################################
# Ahora Visualizaremos las variables CATEGÓRICAS

DataSetUPRIVADAFRMTO %>% 
  dplyr::select(ListVar.Categ) %>% 
  gather(metric, value) %>% 
  ggplot(aes(value, fill = metric)) + 
  geom_density(show.legend = FALSE) + 
  facet_wrap(~ metric, scales = "free")

# GRAFICO DE BARRAS ABSOLUTAS y RELATIVAS  
# ListVar.Categ
par(mfrow = c(2,2))
barplot(table(DataSetUPRIVADAFRMTO$SEXO),main = "DISTRIBUCIÓN",xlab = "SEXO",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$SEXO)/length(DataSetUPRIVADAFRMTO$SEXO))*100,main = "DISTRIBUCIÓN",xlab = "SEXO",ylab = "%")
barplot(table(DataSetUPRIVADAFRMTO$CarreraProfesional),main = "DISTRIBUCIÓN",xlab = "CarreraProfesional",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$CarreraProfesional)/length(DataSetUPRIVADAFRMTO$CarreraProfesio))*100,main = "DISTRIBUCIÓN",xlab = "CarreraProfesional",ylab = "%")

par(mfrow = c(2,2))
barplot(table(DataSetUPRIVADAFRMTO$MODALIDAD_INGRESO),main = "DISTRIBUCIÓN",xlab = "MODALIDAD_INGRESO",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$MODALIDAD_INGRESO)/length(DataSetUPRIVADAFRMTO$MODALIDAD_INGRE))*100,main = "DISTRIBUCIÓN",xlab = "MODALIDAD_INGRESO",ylab = "%")
barplot(table(DataSetUPRIVADAFRMTO$UBIG_NACIMIENTO),main = "DISTRIBUCIÓN",xlab = "UBIG_NACIMIENTO",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$UBIG_NACIMIENTO)/length(DataSetUPRIVADAFRMTO$UBIG_NACIMIENTO))*100,main = "DISTRIBUCIÓN",xlab = "UBIG_NACIMIENTO",ylab = "%")

par(mfrow = c(2,2))
barplot(table(DataSetUPRIVADAFRMTO$UBIG_RESIDENCIA),main = "DISTRIBUCIÓN",xlab = "UBIG_RESIDENCIA",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$UBIG_RESIDENCIA)/length(DataSetUPRIVADAFRMTO$UBIG_RESIDENCIA))*100,main = "DISTRIBUCIÓN",xlab = "UBIG_RESIDENCIA",ylab = "%")
barplot(table(DataSetUPRIVADAFRMTO$TIPO_VIVIENDA),main = "DISTRIBUCIÓN",xlab = "TIPO_VIVIENDA",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$TIPO_VIVIENDA)/length(DataSetUPRIVADAFRMTO$TIPO_VIVIENDA))*100,main = "DISTRIBUCIÓN",xlab = "TIPO_VIVIENDA",ylab = "%")

par(mfrow = c(2,2))
barplot(table(DataSetUPRIVADAFRMTO$GradoInstruccionPapa),main = "DISTRIBUCIÓN",xlab = "GradoInstruccionPapa",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$GradoInstruccionPapa)/length(DataSetUPRIVADAFRMTO$GradoInstruccionPapa))*100,main = "DISTRIBUCIÓN",xlab = "GradoInstruccionPapa",ylab = "%")
barplot(table(DataSetUPRIVADAFRMTO$ProfesionPapa),main = "DISTRIBUCIÓN",xlab = "ProfesionPapa",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$ProfesionPapa)/length(DataSetUPRIVADAFRMTO$ProfesionPapa))*100,main = "DISTRIBUCIÓN",xlab = "ProfesionPapa",ylab = "%")

par(mfrow = c(2,2))
barplot(table(DataSetUPRIVADAFRMTO$OcupacionPapa),main = "DISTRIBUCIÓN",xlab = "OcupacionPapa",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$OcupacionPapa)/length(DataSetUPRIVADAFRMTO$OcupacionPapa))*100,main = "DISTRIBUCIÓN",xlab = "OcupacionPapa",ylab = "%")
barplot(table(DataSetUPRIVADAFRMTO$GradoInstruccionMama),main = "DISTRIBUCIÓN",xlab = "GradoInstruccionMama",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$GradoInstruccionMama)/length(DataSetUPRIVADAFRMTO$GradoInstruccionMama))*100,main = "DISTRIBUCIÓN",xlab = "GradoInstruccionMama",ylab = "%")

par(mfrow = c(2,2))
barplot(table(DataSetUPRIVADAFRMTO$ProfesionMama),main = "DISTRIBUCIÓN",xlab = "ProfesionMama",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$ProfesionMama)/length(DataSetUPRIVADAFRMTO$ProfesionMama))*100,main = "DISTRIBUCIÓN",xlab = "ProfesionMama",ylab = "%")
barplot(table(DataSetUPRIVADAFRMTO$OcupacionMama),main = "DISTRIBUCIÓN",xlab = "OcupacionMama",ylab = "FRECUENCIA ABSOLUTA")
barplot((table(DataSetUPRIVADAFRMTO$OcupacionMama)/length(DataSetUPRIVADAFRMTO$OcupacionMama))*100,main = "DISTRIBUCIÓN",xlab = "OcupacionMama",ylab = "%")

TRATAMIENTO DE DATOS (Retirando Outlayers) de variables numéricas(cuantitavitas)

Comparación del ANTES y DESPUES de retirar outlayers; actualmente se esta retirando todos aquellos datos que sean menor al percentil 5 y mayores al percentil 95 con el objetivo de reducir el sesgo.

########################I################################################I
######################## IMPUTAR o  RETIRANDO OUTLAYERS 
########################################################################

#Función para imputar outlayers con la media los por debajo del 5% y con la mediana los por encima del 95%
impute_outliers <- function(x, removeNA = TRUE){
  quantiles <- quantile(x, c(0.05, 0.95), na.rm = removeNA)
  x[x<quantiles[1]] <- mean(x, na.rm = removeNA)
  x[x>quantiles[2]] <- median(x, na.rm = removeNA)
  x
}
#Si se desea ver especificamente cuales son los outlayers pero con referencia a categoria Desertor
#boxplot(edad ~ DESERTOR, data = DataSetUPRIVADAFRMTO, main = "Edad por Desertor")$out

######################### EDAD ##########################  RETIRAR OUTLAYERS 
#Retiramos las medidas de outlayer 
T_SinOut_edad <- impute_outliers(DataSetUPRIVADAFRMTO$edad)
#Observamos el ANTES y DESPUES del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$edad, main="Con outliers")
hist(T_SinOut_edad, main="Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$edad, main = "Con outliers")
boxplot(T_SinOut_edad, main = "Sin outliers")

par(mfrow = c(1,1))

######################### SemestresEstudiadosAcum ##########################
#Retiramos las medidas de outlayer 
T_SinOut_SemestresEstudiadosAcum <- impute_outliers(DataSetUPRIVADAFRMTO$SemestresEstudiadosAcum)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$SemestresEstudiadosAcum, main = "Con outliers")
hist(T_SinOut_SemestresEstudiadosAcum, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$SemestresEstudiadosAcum, main = "Con outliers")
boxplot(T_SinOut_SemestresEstudiadosAcum, main = "Sin outliers")

par(mfrow = c(1,1))

######################### CantCursosLlevadosAcum ##########################
#Retiramos las medidas de outlayer
T_SinOut_CantCursosLlevadosAcum <- impute_outliers(DataSetUPRIVADAFRMTO$CantCursosLlevadosAcum)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$CantCursosLlevadosAcum, main = "Con outliers")
hist(T_SinOut_CantCursosLlevadosAcum, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$CantCursosLlevadosAcum, main = "Con outliers")
boxplot(T_SinOut_CantCursosLlevadosAcum, main = "Sin outliers")

par(mfrow = c(1,1))

######################### CursosLlevadosFueraCarreraAcum ##########################
#Retiramos las medidas de outlayer
T_SinOut_CursosLlevadosFueraCarreraAcum <- impute_outliers(DataSetUPRIVADAFRMTO$CursosLlevadosFueraCarreraAcum)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$CursosLlevadosFueraCarreraAcum, main = "Con outliers")
hist(T_SinOut_CursosLlevadosFueraCarreraAcum, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$CursosLlevadosFueraCarreraAcum, main = "Con outliers")
boxplot(T_SinOut_CursosLlevadosFueraCarreraAcum, main = "Sin outliers")

par(mfrow = c(1,1))

######################### AvgSinAplzAcum ##########################
#Retiramos las medidas de outlayer
T_SinOut_AvgSinAplzAcum <- impute_outliers(DataSetUPRIVADAFRMTO$AvgSinAplzAcum)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$AvgSinAplzAcum, main = "Con outliers")
hist(T_SinOut_AvgSinAplzAcum, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$AvgSinAplzAcum, main = "Con outliers")
boxplot(T_SinOut_AvgSinAplzAcum, main = "Sin outliers")

par(mfrow = c(1,1))


######################### AvgConAplzAcum ##########################
#Retiramos las medidas de outlayer
T_SinOut_AvgConAplzAcum <- impute_outliers(DataSetUPRIVADAFRMTO$AvgConAplzAcum)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$AvgConAplzAcum, main = "Con outliers")
hist(T_SinOut_AvgConAplzAcum, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$AvgConAplzAcum, main = "Con outliers")
boxplot(T_SinOut_AvgConAplzAcum, main = "Sin outliers")

par(mfrow = c(1,1))

######################### CantCursosAplzAcum ##########################
#Retiramos las medidas de outlayer
T_SinOut_CantCursosAplzAcum <- impute_outliers(DataSetUPRIVADAFRMTO$CantCursosAplzAcum)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$CantCursosAplzAcum, main = "Con outliers")
hist(T_SinOut_CantCursosAplzAcum, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$CantCursosAplzAcum, main = "Con outliers")
boxplot(T_SinOut_CantCursosAplzAcum, main = "Sin outliers")

par(mfrow = c(1,1))

######################### SumCredTeoAcum ##########################
#Retiramos las medidas de outlayer
T_SinOut_SumCredTeoAcum <- impute_outliers(DataSetUPRIVADAFRMTO$SumCredTeoAcum)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$SumCredTeoAcum, main = "Con outliers")
hist(T_SinOut_SumCredTeoAcum, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$SumCredTeoAcum, main = "Con outliers")
boxplot(T_SinOut_SumCredTeoAcum, main = "Sin outliers")

par(mfrow = c(1,1))

######################### SumCredPraAcum ##########################
#Retiramos las medidas de outlayer 
T_SinOut_SumCredPraAcum <- impute_outliers(DataSetUPRIVADAFRMTO$SumCredPraAcum)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$SumCredPraAcum, main = "Con outliers")
hist(T_SinOut_SumCredPraAcum, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$SumCredPraAcum, main = "Con outliers")
boxplot(T_SinOut_SumCredPraAcum, main = "Sin outliers")

par(mfrow = c(1,1))

######################### AvgVezMatriAcum ##########################
#Retiramos las medidas de outlayer
T_SinOut_AvgVezMatriAcum <- impute_outliers(DataSetUPRIVADAFRMTO$AvgVezMatriAcum)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$AvgVezMatriAcum, main = "Con outliers")
hist(T_SinOut_AvgVezMatriAcum, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$AvgVezMatriAcum, main = "Con outliers")
boxplot(T_SinOut_AvgVezMatriAcum, main = "Sin outliers")

par(mfrow = c(1,1))

######################### ANIO_INGRESO ##########################
#Retiramos las medidas de outlayer
T_SinOut_ANIO_INGRESO <- impute_outliers(DataSetUPRIVADAFRMTO$ANIO_INGRESO)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$ANIO_INGRESO, main = "Con outliers")
hist(T_SinOut_ANIO_INGRESO, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$ANIO_INGRESO, main = "Con outliers")
boxplot(T_SinOut_ANIO_INGRESO, main = "Sin outliers")

par(mfrow = c(1,1))

######################### CantCursosAnulados ##########################
#Retiramos las medidas de outlayer
T_SinOut_CantCursosAnulados <- impute_outliers(DataSetUPRIVADAFRMTO$CantCursosAnulados)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$CantCursosAnulados, main = "Con outliers")
hist(T_SinOut_CantCursosAnulados, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$CantCursosAnulados, main = "Con outliers")
boxplot(T_SinOut_CantCursosAnulados, main = "Sin outliers")

par(mfrow = c(1,1))

######################### ProbabDesercion ##########################
#Retiramos las medidas de outlayer
T_SinOut_ProbabDesercion <- impute_outliers(DataSetUPRIVADAFRMTO$ProbabDesercion)

#Observamos el antes y despues del tratamiento de datos(Imputar los outlayers)
par(mfrow = c(2,2))
hist(DataSetUPRIVADAFRMTO$ProbabDesercion, main = "Con outliers")
hist(T_SinOut_ProbabDesercion, main = "Sin outliers")
boxplot(DataSetUPRIVADAFRMTO$ProbabDesercion, main = "Con outliers")
boxplot(T_SinOut_ProbabDesercion, main = "Sin outliers")

par(mfrow = c(1,1))

TRANSFORMACION DE VARIABLES CONTINUAS

Se estan transformando las variables Cuantitavas en base a su distribución. Se estan utilizando transformaciónes de Normalización y Estandarización asi como transformaciones logaritmicas para distribuciones exponenciales…

###############################################
#### TRANSFORMACION DE VARIABLES CONTINUAS ####
###############################################

# Normalización de variables entre [0, 1]   utilizaos la la función scales::rescale(
#Z = (X - min(x)) / (max(x) - min(x))

#Estandarización de variables
#Z = X - mean(x) / sd(x)      utilizamos scale( VARIABLE , center = TRUE, scale = TRUE)

library("scales")
TT_SinOut_SemestresEstudiadosAcum         <- scale(T_SinOut_SemestresEstudiadosAcum, center = TRUE, scale = TRUE) %>% as.data.frame()
TT_SinOut_CantCursosLlevadosAcum          <- scale(T_SinOut_CantCursosLlevadosAcum, center = TRUE, scale = TRUE) %>% as.data.frame()
TT_SinOut_CursosLlevadosFueraCarreraAcum  <- scale(T_SinOut_CursosLlevadosFueraCarreraAcum, center = TRUE, scale = TRUE) %>% as.data.frame()
TT_SinOut_AvgSinAplzAcum                  <- scale(T_SinOut_AvgSinAplzAcum, center = TRUE, scale = TRUE) %>% as.data.frame()
TT_SinOut_AvgConAplzAcum                  <- scale(T_SinOut_AvgConAplzAcum, center = TRUE, scale = TRUE) %>% as.data.frame()
TT_SinOut_CantCursosAplzAcum              <-scales::rescale(T_SinOut_CantCursosAplzAcum) %>% as.data.frame() ## Se Normaliza, Debido a que tiene muchos 0
TT_SinOut_SumCredTeoAcum                  <- scale(T_SinOut_SumCredTeoAcum, center = TRUE, scale = TRUE) %>% as.data.frame()
TT_SinOut_SumCredPraAcum                  <- scale(T_SinOut_SumCredPraAcum, center = TRUE, scale = TRUE) %>% as.data.frame()
TT_SinOut_edad                            <- scale(T_SinOut_edad, center = TRUE, scale = TRUE) %>% as.data.frame()
TT_SinOut_AvgVezMatriAcum                 <-log(T_SinOut_AvgVezMatriAcum) %>% as.data.frame() # se tiene una distribución exponencial
TT_SinOut_ANIO_INGRESO                    <- scale(T_SinOut_ANIO_INGRESO, center = TRUE, scale = TRUE) %>% as.data.frame()
TT_SinOut_CantCursosAnulados              <- scales::rescale(T_SinOut_CantCursosAnulados) %>% as.data.frame() ## Debido a que tiene muchos 0
TT_SinOut_ProbabDesercion                 <- scale(T_SinOut_ProbabDesercion, center = TRUE, scale = TRUE) %>% as.data.frame()
##########################################################################################
##Renombrar lo nombres de las variables para identificarlas que son varibales transformadas
colnames(TT_SinOut_SemestresEstudiadosAcum)        <- c("TT_SinOut_SemestresEstudiadosAcum")
colnames(TT_SinOut_CantCursosLlevadosAcum)         <- c("TT_SinOut_CantCursosLlevadosAcum")
colnames(TT_SinOut_CursosLlevadosFueraCarreraAcum) <- c("TT_SinOut_CursosLlevadosFueraCarreraAcum")
colnames(TT_SinOut_AvgSinAplzAcum)                 <- c("TT_SinOut_AvgSinAplzAcum")
colnames(TT_SinOut_AvgConAplzAcum)                 <- c("TT_SinOut_AvgConAplzAcum")
colnames(TT_SinOut_CantCursosAplzAcum)             <- c("TT_SinOut_CantCursosAplzAcum")
colnames(TT_SinOut_SumCredTeoAcum)                 <- c("TT_SinOut_SumCredTeoAcum")
colnames(TT_SinOut_SumCredPraAcum)                 <- c("TT_SinOut_SumCredPraAcum")
colnames(TT_SinOut_edad)                           <- c("TT_SinOut_edad")
colnames(TT_SinOut_AvgVezMatriAcum)                <- c("TT_SinOut_AvgVezMatriAcum")
colnames(TT_SinOut_ANIO_INGRESO)                   <- c("TT_SinOut_ANIO_INGRESO")
colnames(TT_SinOut_CantCursosAnulados)             <- c("TT_SinOut_CantCursosAnulados")
colnames(TT_SinOut_ProbabDesercion)                <- c("TT_SinOut_ProbabDesercion")

ANALISIS DE VARIABLES CATEGÓRICAS

Ahora realizaremos las prueba de cHI CUADRADO para ver si las variables categóricas estan relacionadas con la variable objetivo
library(stats)
chisq.test(table(DataSetUPRIVADAFRMTO$SEXO,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test with Yates' continuity correction

data:  table(DataSetUPRIVADAFRMTO$SEXO, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 50.517, df = 1, p-value = 1.181e-12
chisq.test(table(DataSetUPRIVADAFRMTO$CarreraProfesional,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$CarreraProfesional, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 213.26, df = 7, p-value < 2.2e-16
chisq.test(table(DataSetUPRIVADAFRMTO$MODALIDAD_INGRESO,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$MODALIDAD_INGRESO, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 298.02, df = 40, p-value < 2.2e-16
chisq.test(table(DataSetUPRIVADAFRMTO$UBIG_NACIMIENTO,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$UBIG_NACIMIENTO, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 639.4, df = 264, p-value < 2.2e-16
chisq.test(table(DataSetUPRIVADAFRMTO$UBIG_RESIDENCIA,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$UBIG_RESIDENCIA, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 178.57, df = 89, p-value = 5.793e-08
chisq.test(table(DataSetUPRIVADAFRMTO$TIPO_VIVIENDA,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$TIPO_VIVIENDA, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 5.9691, df = 2, p-value = 0.05056
chisq.test(table(DataSetUPRIVADAFRMTO$GradoInstruccionPapa,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$GradoInstruccionPapa, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 40.797, df = 13, p-value = 0.0001028
chisq.test(table(DataSetUPRIVADAFRMTO$ProfesionPapa,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$ProfesionPapa, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 97.808, df = 35, p-value = 7.503e-08
chisq.test(table(DataSetUPRIVADAFRMTO$OcupacionPapa,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$OcupacionPapa, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 43.467, df = 15, p-value = 0.0001332
chisq.test(table(DataSetUPRIVADAFRMTO$GradoInstruccionMama,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$GradoInstruccionMama, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 41.66, df = 14, p-value = 0.00014
chisq.test(table(DataSetUPRIVADAFRMTO$ProfesionMama,DataSetUPRIVADAFRMTO$DESERTOR))# se retira por prueba de chi cuadrado SON DEPENDIENTES

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$ProfesionMama, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 38.925, df = 37, p-value = 0.3831
chisq.test(table(DataSetUPRIVADAFRMTO$OcupacionMama,DataSetUPRIVADAFRMTO$DESERTOR))

    Pearson's Chi-squared test

data:  table(DataSetUPRIVADAFRMTO$OcupacionMama, DataSetUPRIVADAFRMTO$DESERTOR)
X-squared = 52.171, df = 16, p-value = 1.028e-05
#### Debido a que al parecer las variables TIPO DE VIVIENDA y PROFESIÓN de MAMÁ sobrepasan el 0,05 % estas no se deberían considerar para el modelo 
#    por que no se cumple que la hiposis de Dependencia

Tablas Cruzadas para variables categóricas

El objetivo de este analisis es encontrar la relación de los elementos de cada categórica con la variable objetivo. Se analiza tambien un ratio de porcentajes con respecto de la categoria que nos interesa en la variable objetivo-Alumnos que (“SI”) desertan (Se eligen aquellas categórias que su ratio se aleje de 1.0 sea inferior o superior)

library(gmodels)
## SE TOMARÁ EL MASCULINO  --"D_SEXO_M",

X <-table(DataSetUPRIVADAFRMTO$SEXO,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
     NO   SI  NO%  SI% Ratio_SI_NO
F  9383  611 28.5 22.1       0.775
M 23551 2148 71.5 77.9       1.090
CrossTable(DataSetUPRIVADAFRMTO$SEXO,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Col Total |
|-------------------------|

 
Total Observations in Table:  35693 

 
                          | DataSetUPRIVADAFRMTO$DESERTOR 
DataSetUPRIVADAFRMTO$SEXO |        NO |        SI | Row Total | 
--------------------------|-----------|-----------|-----------|
                        F |      9383 |       611 |      9994 | 
                          |     0.285 |     0.221 |           | 
--------------------------|-----------|-----------|-----------|
                        M |     23551 |      2148 |     25699 | 
                          |     0.715 |     0.779 |           | 
--------------------------|-----------|-----------|-----------|
             Column Total |     32934 |      2759 |     35693 | 
                          |     0.923 |     0.077 |           | 
--------------------------|-----------|-----------|-----------|

 
## Basicamente se seleccionarán las variables que tengas como ratio lo mas lejano a 1
## para el caso  D_SEXO_F
## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$CarreraProfesional,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                                                        NO  SI  NO%  SI%
INGENIERIA AGRONOMICA Y AGRICOLA                      1350 153  4.1  5.5
INGENIERIA DE INDUSTRIA ALIMENTARIA                   2206 186  6.7  6.7
INGENIERIA DE MINAS                                   2908 211  8.8  7.6
INGENIERIA DE SISTEMAS                                4134 403 12.6 14.6
INGENIERIA ELECTRONICA                                3258 441  9.9 16.0
INGENIERIA INDUSTRIAL                                 8356 435 25.4 15.8
INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA 7838 690 23.8 25.0
MEDICINA VETERINARIA Y ZOOTECNIA                      2884 240  8.8  8.7
                                                      Ratio_SI_NO
INGENIERIA AGRONOMICA Y AGRICOLA                            1.341
INGENIERIA DE INDUSTRIA ALIMENTARIA                         1.000
INGENIERIA DE MINAS                                         0.864
INGENIERIA DE SISTEMAS                                      1.159
INGENIERIA ELECTRONICA                                      1.616
INGENIERIA INDUSTRIAL                                       0.622
INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA       1.050
MEDICINA VETERINARIA Y ZOOTECNIA                            0.989
CrossTable(DataSetUPRIVADAFRMTO$CarreraProfesional,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Col Total |
|-------------------------|

 
Total Observations in Table:  35693 

 
                                                      | DataSetUPRIVADAFRMTO$DESERTOR 
              DataSetUPRIVADAFRMTO$CarreraProfesional |        NO |        SI | Row Total | 
------------------------------------------------------|-----------|-----------|-----------|
                     INGENIERIA AGRONOMICA Y AGRICOLA |      1350 |       153 |      1503 | 
                                                      |     0.041 |     0.055 |           | 
------------------------------------------------------|-----------|-----------|-----------|
                  INGENIERIA DE INDUSTRIA ALIMENTARIA |      2206 |       186 |      2392 | 
                                                      |     0.067 |     0.067 |           | 
------------------------------------------------------|-----------|-----------|-----------|
                                  INGENIERIA DE MINAS |      2908 |       211 |      3119 | 
                                                      |     0.088 |     0.076 |           | 
------------------------------------------------------|-----------|-----------|-----------|
                               INGENIERIA DE SISTEMAS |      4134 |       403 |      4537 | 
                                                      |     0.126 |     0.146 |           | 
------------------------------------------------------|-----------|-----------|-----------|
                               INGENIERIA ELECTRONICA |      3258 |       441 |      3699 | 
                                                      |     0.099 |     0.160 |           | 
------------------------------------------------------|-----------|-----------|-----------|
                                INGENIERIA INDUSTRIAL |      8356 |       435 |      8791 | 
                                                      |     0.254 |     0.158 |           | 
------------------------------------------------------|-----------|-----------|-----------|
INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA |      7838 |       690 |      8528 | 
                                                      |     0.238 |     0.250 |           | 
------------------------------------------------------|-----------|-----------|-----------|
                     MEDICINA VETERINARIA Y ZOOTECNIA |      2884 |       240 |      3124 | 
                                                      |     0.088 |     0.087 |           | 
------------------------------------------------------|-----------|-----------|-----------|
                                         Column Total |     32934 |      2759 |     35693 | 
                                                      |     0.923 |     0.077 |           | 
------------------------------------------------------|-----------|-----------|-----------|

 
# BASICAMENTE PARA LAS CARRERAS QUE PODREMOS OBTENER MEJORES RESULTADOS SERÁN
      # INGENIERIA AGRONOMICA Y AGRICOLA                       1.341 (SI)
      # INGENIERIA DE INDUSTRIA ALIMENTARIA                    1.000 (NO)
      # INGENIERIA DE MINAS                                    0.864 (SI)
      # INGENIERIA DE SISTEMAS                                 1.159 (SI)  
      # INGENIERIA ELECTRONICA                                 1.616 (SI)
      # INGENIERIA INDUSTRIAL                                  0.622 (SI)
      # INGENIERIA MECANICA, MECANICA-ELECTRICA Y MECATRONICA  1.050 (NO)
      # MEDICINA VETERINARIA Y ZOOTECNIA                       0.989 (NO)
# Centro Preuniversitario I a la III,Primeros Puestos,   Segundo Examen General , Tercer Examen General
#"D_MODALIDAD_INGRESO_CentroPreuniversitarioI","D_MODALIDAD_INGRESO_CentroPreuniversitarioII","D_MODALIDAD_INGRESO_CentroPreuniversitarioIII",
#"D_MODALIDAD_INGRESO_PrimerosPuestos","D_MODALIDAD_INGRESO_SegundoExamenGeneral","D_MODALIDAD_INGRESO_TercerExamenGeneral","D_MODALIDAD_INGRESO_PrimerExamenGeneral",
## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$MODALIDAD_INGRESO,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                                            NO  SI  NO%  SI% Ratio_SI_NO
Beca18                                       3   0  0.0  0.0         NaN
Becas Integrales                             0   2  0.0  0.1         Inf
Centro Preuniversitario - Ilo               15   2  0.0  0.1         Inf
Centro Preuniversitario - Ilo I              3   1  0.0  0.0         NaN
Centro Preuniversitario - Ilo II             3   0  0.0  0.0         NaN
Centro Preuniversitario - Ilo III            1   0  0.0  0.0         NaN
Centro Preuniversitario - Juliaca II         2   0  0.0  0.0         NaN
Centro Preuniversitario - Juliaca III        0   2  0.0  0.1         Inf
Centro Preuniversitario - Puno II            2   1  0.0  0.0         NaN
Centro Preuniversitario - Puno III           2   0  0.0  0.0         NaN
Centro Preuniversitario I                 2794 168  8.5  6.1       0.718
Centro Preuniversitario II                2770 192  8.4  7.0       0.833
Centro Preuniversitario III               3217 200  9.8  7.2       0.735
Cobertura de Metas CPU I                     1   0  0.0  0.0         NaN
Cobertura de Metas CPU II                    4   2  0.0  0.1         Inf
Cobertura de Metas CPU III                   3   3  0.0  0.1         Inf
Cobertura de Metas I                       218   9  0.7  0.3       0.429
Cobertura de Metas II                      127  12  0.4  0.4       1.000
Cobertura de Metas III                     307  35  0.9  1.3       1.444
Convenio Andrés Bello                       26   2  0.1  0.1       1.000
Deportista Destacado                       360  55  1.1  2.0       1.818
Egresados Bachillerato Sec.                  4   0  0.0  0.0         NaN
Graduado o Profesional Universitario       109  11  0.3  0.4       1.333
Graduado o Profesional Universitario II     25   6  0.1  0.2       2.000
Ingreso Adulto                               6   1  0.0  0.0         NaN
Ingreso Especial Persona con discapacidad    3   3  0.0  0.1         Inf
Ingreso Especial: Teología                   0   1  0.0  0.0         NaN
Primer Examen General                     5461 357 16.6 12.9       0.777
Primeros Puestos                          1255  91  3.8  3.3       0.868
Segundo Examen General                    5783 476 17.6 17.3       0.983
Tercer Examen General                     7669 855 23.3 31.0       1.330
Tercer Examen General Sede Majes           401  36  1.2  1.3       1.083
Titulado en Instituto Superior             547  66  1.7  2.4       1.412
Titulado en Instituto Superior II          256  33  0.8  1.2       1.500
Traslado Externo Internacional               8   0  0.0  0.0         NaN
Traslado Externo Internacional II            0   1  0.0  0.0         NaN
Traslado Externo Nacional                  406  44  1.2  1.6       1.333
Traslado Externo Nacional Esp.              10   0  0.0  0.0         NaN
Traslado Externo Nacional II               262  32  0.8  1.2       1.500
Traslado Interno                           532  31  1.6  1.1       0.688
Traslado Interno II                        339  29  1.0  1.1       1.100
#CrossTable(DataSetUPRIVADAFRMTO$MODALIDAD_INGRESO,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)
        # Centro Preuniversitario I               0.718
        # Centro Preuniversitario II              0.833
        # Centro Preuniversitario III             0.735
        # Cobertura de Metas I                    0.429
        # Cobertura de Metas III                  1.444
        # Deportista Destacado                    1.818
        # Graduado o Profesional Universitario    1.333
        # Graduado o Profesional Universitario II 2.000
        # Primer Examen General                   0.777
        # Primeros Puestos                        0.868
        # Segundo Examen General                  0.983
        # Tercer Examen General                   1.330
        # Tercer Examen General Sede Majes        1.083
        # Titulado en Instituto Superior          1.412
        # Titulado en Instituto Superior II       1.500
        # Traslado Externo Nacional               1.333
        # Traslado Externo Nacional II            1.500
        # Traslado Interno                        0.688
        # Traslado Interno II                     1.100
#AREQUIPA - PAUCARPATA - JULIACA
#"D_UBIG_NACIMIENTO_AREQUIPA","D_UBIG_NACIMIENTO_PAUCARPATA","D_UBIG_NACIMIENTO_JULIACA",

## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$UBIG_NACIMIENTO,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                                        NO   SI  NO%  SI% Ratio_SI_NO
ABANCAY                                 44    7  0.1  0.3       3.000
ACARI                                   11    1  0.0  0.0         NaN
ACORA                                    9    1  0.0  0.0         NaN
ALCA                                     1    0  0.0  0.0         NaN
ALTO DE LA ALIANZA                      15    2  0.0  0.1         Inf
ALTO SELVA ALEGRE                       77    9  0.2  0.3       1.500
ANDAGUA                                  5    0  0.0  0.0         NaN
ANDAHUAYLAS                             20    2  0.1  0.1       1.000
ANTA                                     5    0  0.0  0.0         NaN
ANTAUTA                                 19    1  0.1  0.0       0.000
APLAO                                   80    7  0.2  0.3       1.500
ARAPA                                   11    5  0.0  0.2         Inf
AREQUIPA                             19602 1470 59.5 53.3       0.896
ASILLO                                  12    0  0.0  0.0         NaN
ATE                                     46    2  0.1  0.1       1.000
ATICO                                   42    2  0.1  0.1       1.000
AYACUCHO                                 5    1  0.0  0.0         NaN
AYAVIRI                                 52    7  0.2  0.3       1.500
AZANGARO                                33    2  0.1  0.1       1.000
BAMBAMARCA                               5    1  0.0  0.0         NaN
BARRANCA                                 1    0  0.0  0.0         NaN
BELLAVISTA                              19    2  0.1  0.1       1.000
CABANACONDE                             14    2  0.0  0.1         Inf
CABANILLA                                3    1  0.0  0.0         NaN
CABANILLAS                              16    0  0.0  0.0         NaN
CAJABAMBA                               16    0  0.0  0.0         NaN
CAJAMARCA                               42    3  0.1  0.1       1.000
CALANA                                 115    6  0.3  0.2       0.667
CALCA                                    1    0  0.0  0.0         NaN
CALLALLI                                 1    0  0.0  0.0         NaN
CALLAO                                  16    1  0.0  0.0         NaN
CALLERIA                                13    0  0.0  0.0         NaN
CAMANA                                 366   48  1.1  1.7       1.545
CANARIA                                  6    1  0.0  0.0         NaN
CARAVELI                                23    2  0.1  0.1       1.000
CARMEN DE LA LEGUA REYNOSO              12    0  0.0  0.0         NaN
CASMA                                    0    1  0.0  0.0         NaN
CASTILLA                                 8    0  0.0  0.0         NaN
CAYARANI                                 4    1  0.0  0.0         NaN
CAYLLOMA                                16    6  0.0  0.2         Inf
CAYMA                                  487   33  1.5  1.2       0.800
CERRO COLORADO                         284   32  0.9  1.2       1.333
CHACHAS                                  5    0  0.0  0.0         NaN
CHACLACAYO                              10    0  0.0  0.0         NaN
CHALA                                   21    3  0.1  0.1       1.000
CHAMACA                                  0    1  0.0  0.0         NaN
CHANCHAMAYO                              0    1  0.0  0.0         NaN
CHAPARRA                                 7    1  0.0  0.0         NaN
CHARACATO                              139   10  0.4  0.4       1.000
CHAUPIMARCA                              1    0  0.0  0.0         NaN
CHICLAYO                                31    2  0.1  0.1       1.000
CHIGUATA                                 1    1  0.0  0.0         NaN
CHILCA                                   5    0  0.0  0.0         NaN
CHIMBOTE                                 1    1  0.0  0.0         NaN
CHINCHA ALTA                             5    1  0.0  0.0         NaN
CHIVAY                                  33    1  0.1  0.0       0.000
CHOCOPE                                  8    1  0.0  0.0         NaN
CHORRILLOS                               1    0  0.0  0.0         NaN
CHUQUIBAMBA                             25    2  0.1  0.1       1.000
CIUDAD NUEVA                             0    2  0.0  0.1         Inf
COALAQUE                                 1    1  0.0  0.0         NaN
COCACHACRA                              28    1  0.1  0.0       0.000
COLQUEMARCA                             25    4  0.1  0.1       1.000
COMBAPATA                               10    0  0.0  0.0         NaN
COPANI                                   0    1  0.0  0.0         NaN
COPORAQUE                               15    1  0.0  0.0         NaN
CORONEL GREGORIO ALBARRACIN LANCHIPA     1    0  0.0  0.0         NaN
COTAHUASI                               16    0  0.0  0.0         NaN
CUPI                                     9    0  0.0  0.0         NaN
CURAHUASI                               14    1  0.0  0.0         NaN
CUSCO                                  183   24  0.6  0.9       1.500
CUYOCUYO                                24    1  0.1  0.0       0.000
DANIEL HERNANDEZ                        10    0  0.0  0.0         NaN
DEAN VALDIVIA                            7    3  0.0  0.1         Inf
DESAGUADERO                             16    0  0.0  0.0         NaN
EL AGUSTINO                             19    0  0.1  0.0       0.000
EL TAMBO                                21    4  0.1  0.1       1.000
ESPINAR                                440   39  1.3  1.4       1.077
FERREÑAFE                               10    0  0.0  0.0         NaN
HAQUIRA                                  6    1  0.0  0.0         NaN
HUACHO                                   1    0  0.0  0.0         NaN
HUAMBO                                   7    0  0.0  0.0         NaN
HUANCA                                   5    0  0.0  0.0         NaN
HUANCANE                                 6    0  0.0  0.0         NaN
HUANCARQUI                              14    2  0.0  0.1         Inf
HUANCAYO                                 1    0  0.0  0.0         NaN
HUANUCO                                  1    1  0.0  0.0         NaN
HUANUHUANU                               3    1  0.0  0.0         NaN
HUARAZ                                   6    0  0.0  0.0         NaN
HUASAHUASI                               0    1  0.0  0.0         NaN
HUATASANI                                0    1  0.0  0.0         NaN
HUAYNACOTAS                             10    0  0.0  0.0         NaN
ICA                                     26    4  0.1  0.1       1.000
ICHUÑA                                  10    0  0.0  0.0         NaN
ICHUPAMPA                                9    0  0.0  0.0         NaN
ILABAYA                                312   20  0.9  0.7       0.778
ILAVE                                   10    2  0.0  0.1         Inf
ILO                                    644   57  2.0  2.1       1.050
INAMBARI                                12    1  0.0  0.0         NaN
INCHUPALLA                               1    0  0.0  0.0         NaN
INDEPENDENCIA                            1    1  0.0  0.0         NaN
IÑAPARI                                  8    0  0.0  0.0         NaN
IQUITOS                                 12    0  0.0  0.0         NaN
IRAY                                     5    0  0.0  0.0         NaN
ISLAY                                   10    1  0.0  0.0         NaN
JACOBO HUNTER                          158   13  0.5  0.5       1.000
JAQUI                                    0    1  0.0  0.0         NaN
JESUS MARIA                            225   14  0.7  0.5       0.714
JOSE DOMINGO CHOQUEHUANCA               28    1  0.1  0.0       0.000
JOSE LUIS BUSTAMANTE Y RIVERO          230   18  0.7  0.7       1.000
JOSE MARIA QUIMPER                      14    1  0.0  0.0         NaN
JULIACA                                786   83  2.4  3.0       1.250
JUNIN                                    0    1  0.0  0.0         NaN
LA BREA                                  5    0  0.0  0.0         NaN
LA JOYA                                135   13  0.4  0.5       1.250
LA MERCED                                2    1  0.0  0.0         NaN
LA TINGUIÑA                              4    1  0.0  0.0         NaN
LA VICTORIA                             39    3  0.1  0.1       1.000
LAMBAYEQUE                               3    1  0.0  0.0         NaN
LAMPA                                    8    0  0.0  0.0         NaN
LANGUI                                  10    0  0.0  0.0         NaN
LAYO                                     7    0  0.0  0.0         NaN
LEONCIO PRADO                            4    1  0.0  0.0         NaN
LIMA                                   145   22  0.4  0.8       2.000
LINCE                                    2    1  0.0  0.0         NaN
LLALLI                                   6    0  0.0  0.0         NaN
LLUTA                                   46    3  0.1  0.1       1.000
LOCUMBA                                 20    0  0.1  0.0       0.000
LOS ORGANOS                              2    1  0.0  0.0         NaN
LURIGANCHO                               6    2  0.0  0.1         Inf
MACA                                     6    1  0.0  0.0         NaN
MADRE DE DIOS                            5    0  0.0  0.0         NaN
MADRIGAL                                16    2  0.0  0.1         Inf
MAGDALENA DEL MAR                        3    0  0.0  0.0         NaN
MAJES                                   48    5  0.1  0.2       2.000
MALA                                     0    3  0.0  0.1         Inf
MAÑAZO                                   0    1  0.0  0.0         NaN
MARA                                     4    0  0.0  0.0         NaN
MARANGANI                               21    4  0.1  0.1       1.000
MARCONA                                102   10  0.3  0.4       1.333
MARIANO MELGAR                         440   42  1.3  1.5       1.154
MARIANO NICOLAS VALCARCEL               12    0  0.0  0.0         NaN
MARISCAL CACERES                        24    1  0.1  0.0       0.000
MATARA                                   9    0  0.0  0.0         NaN
MAZAMARI                                 3    1  0.0  0.0         NaN
MIRAFLORES                             332   30  1.0  1.1       1.100
MOHO                                    12    2  0.0  0.1         Inf
MOLLEBAYA                                3    1  0.0  0.0         NaN
MOLLENDO                               603   52  1.8  1.9       1.056
MOQUEGUA                               333   37  1.0  1.3       1.300
MOYOBAMBA                                0    1  0.0  0.0         NaN
MUÑANI                                   6    1  0.0  0.0         NaN
NAZCA                                   56    1  0.2  0.0       0.000
NICOLAS DE PIEROLA                      34    7  0.1  0.3       3.000
NUÑOA                                   12    0  0.0  0.0         NaN
OCONGATE                                 1    1  0.0  0.0         NaN
OCOÑA                                   42    3  0.1  0.1       1.000
OLLACHEA                                14    3  0.0  0.1         Inf
OLMOS                                    1    1  0.0  0.0         NaN
OMATE                                   10    1  0.0  0.0         NaN
ORCOPAMPA                               82    8  0.2  0.3       1.500
OROPESA                                 13    0  0.0  0.0         NaN
ORURILLO                                28    2  0.1  0.1       1.000
OTRO PAIS                               61    9  0.2  0.3       1.500
OYON                                     0    2  0.0  0.1         Inf
PACOCHA                                228   20  0.7  0.7       1.000
PAITA                                    0    1  0.0  0.0         NaN
PALLPATA                                35    4  0.1  0.1       1.000
PAMPACOLCA                              38    4  0.1  0.1       1.000
PAMPAMARCA                               1    1  0.0  0.0         NaN
PARAMONGA                                0    1  0.0  0.0         NaN
PARATIA                                  1    0  0.0  0.0         NaN
PARCONA                                 11    0  0.0  0.0         NaN
PARIÑAS                                  6    1  0.0  0.0         NaN
PARURO                                   7    0  0.0  0.0         NaN
PAUCARPATA                            1331  113  4.0  4.1       1.025
PICOTA                                   1    1  0.0  0.0         NaN
PISCO                                   10    1  0.0  0.0         NaN
PITIPO                                  10    0  0.0  0.0         NaN
PIURA                                   15    1  0.0  0.0         NaN
PLATERIA                                10    1  0.0  0.0         NaN
POLOBAYA                                16    0  0.0  0.0         NaN
PUEBLO LIBRE                            37    5  0.1  0.2       2.000
PUNO                                   423   52  1.3  1.9       1.462
PUNTA DE BOMBON                         35    1  0.1  0.0       0.000
PUQUINA                                  7    0  0.0  0.0         NaN
PUSI                                     5    0  0.0  0.0         NaN
PUTINA                                  10    1  0.0  0.0         NaN
QUELLOUNO                                1    0  0.0  0.0         NaN
QUEQUEÑA                                 2    1  0.0  0.0         NaN
QUICACHA                                 0    1  0.0  0.0         NaN
QUILCA                                   9    0  0.0  0.0         NaN
QUILLABAMBA                             18    7  0.1  0.3       3.000
RIMAC                                   16    3  0.0  0.1         Inf
RIO GRANDE                              15    4  0.0  0.1         Inf
RUPA-RUPA                                5    0  0.0  0.0         NaN
SABANDIA                                22    3  0.1  0.1       1.000
SACHACA                                105    8  0.3  0.3       1.000
SALAS                                    1    0  0.0  0.0         NaN
SAMA                                    10    0  0.0  0.0         NaN
SAMEGUA                                  4    1  0.0  0.0         NaN
SAMUEL PASTOR                           10    3  0.0  0.1         Inf
SAN ANTON                                7    0  0.0  0.0         NaN
SAN BORJA                               34    1  0.1  0.0       0.000
SAN ISIDRO                              40    2  0.1  0.1       1.000
SAN JERONIMO                            10    2  0.0  0.1         Inf
SAN JUAN DE LURIGANCHO                  26    5  0.1  0.2       2.000
SAN JUAN DE MIRAFLORES                  28    5  0.1  0.2       2.000
SAN JUAN DE SALINAS                      3    1  0.0  0.0         NaN
SAN JUAN DE TARUCANI                     8    0  0.0  0.0         NaN
SAN JUAN DEL ORO                         8    0  0.0  0.0         NaN
SAN LUIS                                 4    0  0.0  0.0         NaN
SAN MARTIN DE PORRES                    19    2  0.1  0.1       1.000
SAN MIGUEL                               7    1  0.0  0.0         NaN
SAN PEDRO DE LLOC                        1    0  0.0  0.0         NaN
SAN RAMON                                0    1  0.0  0.0         NaN
SAN SEBASTIAN                            6    2  0.0  0.1         Inf
SAN VICENTE DE CAÑETE                   12    2  0.0  0.1         Inf
SANDIA                                  11    1  0.0  0.0         NaN
SANTA ANA                               25    5  0.1  0.2       2.000
SANTA LUCIA                             10    1  0.0  0.0         NaN
SANTA MARIA DE CHICMO                    2    1  0.0  0.0         NaN
SANTA RITA DE SIGUAS                    10    1  0.0  0.0         NaN
SANTA ROSA                               6    0  0.0  0.0         NaN
SANTIAGO                                89   12  0.3  0.4       1.333
SANTIAGO DE PUPUJA                       7    0  0.0  0.0         NaN
SANTIAGO DE SURCO                        5    0  0.0  0.0         NaN
SANTO TOMAS                             30    3  0.1  0.1       1.000
SAÑA                                     4    0  0.0  0.0         NaN
SATIPO                                   3    1  0.0  0.0         NaN
SICUANI                                140   13  0.4  0.5       1.250
SOCABAYA                               136   18  0.4  0.7       1.750
SULLANA                                  1    0  0.0  0.0         NaN
SUYCKUTAMBO                              4    0  0.0  0.0         NaN
TACNA                                  292   23  0.9  0.8       0.889
TAMBOPATA                               55    4  0.2  0.1       0.500
TAMBURCO                                 4    0  0.0  0.0         NaN
TARACO                                   9    1  0.0  0.0         NaN
TARMA                                    9    0  0.0  0.0         NaN
TIABAYA                                 51    4  0.2  0.1       0.500
TINTA                                    1    2  0.0  0.1         Inf
TIRAPATA                                 0    1  0.0  0.0         NaN
TOMEPAMPA                                1    1  0.0  0.0         NaN
TORATA                                 136   11  0.4  0.4       1.000
TRUJILLO                                61    3  0.2  0.1       0.500
TUMBES                                  10    0  0.0  0.0         NaN
UBINAS                                   8    1  0.0  0.0         NaN
UCHUMAYO                                30    3  0.1  0.1       1.000
URACA                                   61    7  0.2  0.3       1.500
URCOS                                    3    1  0.0  0.0         NaN
URUBAMBA                                 8    0  0.0  0.0         NaN
VELILLE                                  6    3  0.0  0.1         Inf
VILLA EL SALVADOR                        3    1  0.0  0.0         NaN
VILLA MARIA DEL TRIUNFO                  1    1  0.0  0.0         NaN
VIRU                                     0    1  0.0  0.0         NaN
VITOR                                   19    2  0.1  0.1       1.000
WANCHAQ                                281   28  0.9  1.0       1.111
YANAHUARA                              646   61  2.0  2.2       1.100
YANAOCA                                  2    1  0.0  0.0         NaN
YANAQUIHUA                               1    1  0.0  0.0         NaN
YANQUE                                   3    1  0.0  0.0         NaN
YARABAMBA                               10    2  0.0  0.1         Inf
YARINACOCHA                              3    0  0.0  0.0         NaN
YUCAY                                   11    0  0.0  0.0         NaN
YUNGUYO                                 18    4  0.1  0.1       1.000
#CrossTable(DataSetUPRIVADAFRMTO$UBIG_NACIMIENTO,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)
## Nos quedamos con las siguientes variables
            # ABANCAY                              3.000
            # ALTO SELVA ALEGRE                    1.500
            # ANTAUTA                              0.000
            # APLAO                                1.500
            # AREQUIPA                             0.896
            # AYAVIRI                              1.500
            # CALANA                               0.667
            # CAMANA                               1.545
            # CAYMA                                0.800
            # CERRO COLORADO                       1.333
            # CHIVAY                               0.000
            # COCACHACRA                           0.000
            # CUSCO                                1.500
            # CUYOCUYO                             0.000
            # EL AGUSTINO                          0.000
            # ESPINAR                              1.077
            # ILABAYA                              0.778
            # JESUS MARIA                          0.714
            # JOSE DOMINGO CHOQUEHUANCA            0.000
            # JULIACA                              1.250
            # LA JOYA                              1.250
            # LIMA                                 2.000
            # LOCUMBA                              0.000
            # MAJES                                2.000
            # MARCONA                              1.333
            # MARIANO MELGAR                       1.154
            # MARISCAL CACERES                     0.000
            # MIRAFLORES                           1.100
            # MOQUEGUA                             1.300
            # NAZCA                                0.000
            # NICOLAS DE PIEROLA                   3.000
            # ORCOPAMPA                            1.500
            # OTRO PAIS                            1.500
            # PAUCARPATA                           1.025
            # PUEBLO LIBRE                         2.000
            # PUNO                                 1.462
            # PUNTA DE BOMBON                      0.000
            # QUILLABAMBA                          3.000
# JOSE LUIS BUSTAMENTE - CERRO COLOARDO-  AREQUIPA  - PAUCARPATA -  CAYMA - YANAHUARA -  ALTO SELVA ALEGRE - SOCABAYA -  MARIANO MERLGA MIRAFLORES SACHACA -  CAOBO HUNTER
#"D_UBIG_RESIDENCIA_CERROCOLORADO","D_UBIG_RESIDENCIA_AREQUIPA","D_UBIG_RESIDENCIA_PAUCARPATA","D_UBIG_RESIDENCIA_CAYMA","D_UBIG_RESIDENCIA_JOSELUISBUSTAMANTEYRIVERO","D_UBIG_RESIDENCIA_ALTOSELVAALEGRE","D_UBIG_RESIDENCIA_YANAHUARA","D_UBIG_RESIDENCIA_SOCABAYA","D_UBIG_RESIDENCIA_MARIANOMELGAR",
#"D_UBIG_RESIDENCIA_SACHACA","D_UBIG_RESIDENCIA_JACOBOHUNTER",
#CrossTable(DataSetUPRIVADAFRMTO$UBIG_RESIDENCIA,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE,format = "SAS")

## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$UBIG_RESIDENCIA,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                                       NO  SI  NO%  SI% Ratio_SI_NO
ACORA                                   5   0  0.0  0.0         NaN
ALTO DE LA ALIANZA                      3   0  0.0  0.0         NaN
ALTO SELVA ALEGRE                    2101 194  6.4  7.0       1.094
APLAO                                  16   1  0.0  0.0         NaN
AREQUIPA                             3670 261 11.1  9.5       0.856
AYACUCHO                                3   0  0.0  0.0         NaN
AYAVIRI                                 9   0  0.0  0.0         NaN
AZANGARO                                6   0  0.0  0.0         NaN
BELLA UNION                             3   0  0.0  0.0         NaN
CABANILLAS                              1   0  0.0  0.0         NaN
CAMANA                                247  24  0.7  0.9       1.286
CARAVELI                                8   1  0.0  0.0         NaN
CAYMA                                2505 196  7.6  7.1       0.934
CERRO COLORADO                       3614 335 11.0 12.1       1.100
CHALA                                   0   1  0.0  0.0         NaN
CHALLHUAHUACHO                          4   0  0.0  0.0         NaN
CHARACATO                             191  17  0.6  0.6       1.000
CHUQUIBAMBA                             1   1  0.0  0.0         NaN
COCACHACRA                             11   0  0.0  0.0         NaN
COLQUEMARCA                             0   1  0.0  0.0         NaN
CORONEL GREGORIO ALBARRACIN LANCHIPA   14   1  0.0  0.0         NaN
CUSCO                                  54   2  0.2  0.1       0.500
DEAN VALDIVIA                          40   2  0.1  0.1       1.000
ESPINAR                                 6   2  0.0  0.1         Inf
HUANCAYO                                1   0  0.0  0.0         NaN
ILABAYA                                12   0  0.0  0.0         NaN
ILO                                   351  33  1.1  1.2       1.091
IRAY                                    0   1  0.0  0.0         NaN
ISLAY                                   7   1  0.0  0.0         NaN
JACOBO HUNTER                         932 100  2.8  3.6       1.286
JOSE LUIS BUSTAMANTE Y RIVERO        4877 397 14.8 14.4       0.973
JOSE MARIA QUIMPER                      7   1  0.0  0.0         NaN
JULIACA                               190  19  0.6  0.7       1.167
JUNIN                                   0   1  0.0  0.0         NaN
LA JOYA                               141  15  0.4  0.5       1.250
LLUTA                                  19   1  0.1  0.0       0.000
LURIGANCHO                              3   0  0.0  0.0         NaN
MAGDALENA VIEJA                         7   0  0.0  0.0         NaN
MAJES                                 313  23  1.0  0.8       0.800
MARANGANI                               0   1  0.0  0.0         NaN
MARCONA                                13   3  0.0  0.1         Inf
MARIANO MELGAR                       1686 134  5.1  4.9       0.961
MARISCAL CACERES                       19   1  0.1  0.0       0.000
MEJIA                                  12   1  0.0  0.0         NaN
MIRAFLORES                           1613 139  4.9  5.0       1.020
MOLLEBAYA                              27   0  0.1  0.0       0.000
MOLLENDO                              174  26  0.5  0.9       1.800
MOQUEGUA                              142  25  0.4  0.9       2.250
NICOLAS DE PIEROLA                     32   3  0.1  0.1       1.000
OCOÑA                                   2   1  0.0  0.0         NaN
OROPESA                                 1   0  0.0  0.0         NaN
PACOCHA                                60   6  0.2  0.2       1.000
PAUCARPATA                           3030 242  9.2  8.8       0.957
PAUSA                                   5   1  0.0  0.0         NaN
PICHIGUA                                1   1  0.0  0.0         NaN
POCOLLAY                                7   0  0.0  0.0         NaN
POLOBAYA                               10   0  0.0  0.0         NaN
PUEBLO NUEVO                            9   1  0.0  0.0         NaN
PULLO                                   3   1  0.0  0.0         NaN
PUNO                                  136  15  0.4  0.5       1.250
PUNTA DE BOMBON                        11   1  0.0  0.0         NaN
QUELLOUNO                               1   0  0.0  0.0         NaN
RIO GRANDE                             10   0  0.0  0.0         NaN
SABANDIA                               99   3  0.3  0.1       0.333
SACHACA                              1304 104  4.0  3.8       0.950
SAMEGUA                                17   2  0.1  0.1       1.000
SAMUEL PASTOR                          15   3  0.0  0.1         Inf
SAN JERONIMO                           13   3  0.0  0.1         Inf
SAN JUAN DE LURIGANCHO                  2   1  0.0  0.0         NaN
SAN SEBASTIAN                          33   1  0.1  0.0       0.000
SANTA ANA                              12   0  0.0  0.0         NaN
SANTA RITA DE SIGUAS                   10   0  0.0  0.0         NaN
SANTIAGO                               14   2  0.0  0.1         Inf
SANTIAGO DE SURCO                       6   1  0.0  0.0         NaN
SAYLLA                                  2   1  0.0  0.0         NaN
SICUANI                                33   3  0.1  0.1       1.000
SOCABAYA                             1876 156  5.7  5.7       1.000
TACNA                                 177   8  0.5  0.3       0.600
TAMBOPATA                               5   2  0.0  0.1         Inf
TAMBURCO                                1   1  0.0  0.0         NaN
TARICA                                  9   0  0.0  0.0         NaN
TIABAYA                               329  21  1.0  0.8       0.800
UCHUMAYO                              208  26  0.6  0.9       1.500
URACA                                  10   2  0.0  0.1         Inf
URUBAMBA                                9   0  0.0  0.0         NaN
VITOR                                   7   0  0.0  0.0         NaN
WANCHAQ                                68   6  0.2  0.2       1.000
YANAHUARA                            2211 170  6.7  6.2       0.925
YARABAMBA                               5   1  0.0  0.0         NaN
YURA                                   83   9  0.3  0.3       1.000
### VAriables SEleccionadas
          # ALTO SELVA ALEGRE             1.094
          # AREQUIPA                      0.856
          # CAMANA                        1.286
          # CAYMA                         0.934
          # CERRO COLORADO                1.100
          # CUSCO                         0.500
          # ILO                           1.091
          # JACOBO HUNTER                 1.286
          # JOSE LUIS BUSTAMANTE Y RIVERO 0.973
          # JULIACA                       1.167
          # LA JOYA                       1.250
          # LLUTA                         0.000
          # MAJES                         0.800
          # MARIANO MELGAR                0.961
          # MARISCAL CACERES              0.000
          # MIRAFLORES                    1.020
          # MOLLEBAYA                     0.000
          # MOLLENDO                      1.800
          # MOQUEGUA                      2.250
          # PAUCARPATA                    0.957
          # PUNO                          1.250
          # SABANDIA                      0.333
          # SACHACA                       0.950
          # SAN SEBASTIAN                 0.000
          # TACNA                         0.600
          # TIABAYA                       0.800
          # UCHUMAYO                      1.500
          # YANAHUARA                     0.925
# CASA - DEPARTAMENTE ---"D_TIPO_VIVIENDA_CASA","D_TIPO_VIVIENDA_DEPARTAMENTO",
  CrossTable(DataSetUPRIVADAFRMTO$TIPO_VIVIENDA,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Col Total |
|-------------------------|

 
Total Observations in Table:  35693 

 
                                   | DataSetUPRIVADAFRMTO$DESERTOR 
DataSetUPRIVADAFRMTO$TIPO_VIVIENDA |        NO |        SI | Row Total | 
-----------------------------------|-----------|-----------|-----------|
                              CASA |     27553 |      2306 |     29859 | 
                                   |     0.837 |     0.836 |           | 
-----------------------------------|-----------|-----------|-----------|
                      DEPARTAMENTO |      5070 |       414 |      5484 | 
                                   |     0.154 |     0.150 |           | 
-----------------------------------|-----------|-----------|-----------|
                          VECINDAD |       311 |        39 |       350 | 
                                   |     0.009 |     0.014 |           | 
-----------------------------------|-----------|-----------|-----------|
                      Column Total |     32934 |      2759 |     35693 | 
                                   |     0.923 |     0.077 |           | 
-----------------------------------|-----------|-----------|-----------|

 
## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$TIPO_VIVIENDA,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                NO   SI  NO%  SI% Ratio_SI_NO
CASA         27553 2306 83.7 83.6       0.999
DEPARTAMENTO  5070  414 15.4 15.0       0.974
VECINDAD       311   39  0.9  1.4       1.556
###
# DEPARTAMENTO  
# VECINDAD
# SEcundaria completa "D_GradoInstruccionPapa_SECUNDARIACOMPLETA","D_GradoInstruccionPapa_SUPERIORUNIVCOMPLETA","D_GradoInstruccionPapa_SUPERIORTECNICACOMPLETA","D_GradoInstruccionPapa_GRADUADOUNIVERSITARIO","D_GradoInstruccionPapa_SUPERIORUNIVINCOMPLETA",
# CrossTable(DataSetUPRIVADAFRMTO$GradoInstruccionPapa,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)
## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$GradoInstruccionPapa,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                                   NO  SI  NO%  SI% Ratio_SI_NO
DR., MAGISTER, ALTA ESPECIALIDAD 1101  77  3.3  2.8       0.848
EST. SUP. NO UNIVERSITARIOS      1252  85  3.8  3.1       0.816
GRADUADO UNIVERSITARIO           4191 302 12.7 10.9       0.858
NINGUNO                           223  21  0.7  0.8       1.143
NIVEL EDUCATIVO ...              1601 169  4.9  6.1       1.245
OTROS                             482  56  1.5  2.0       1.333
PRIMARIA COMPLETA                 429  33  1.3  1.2       0.923
PRIMARIA INCOMPLETA               268  26  0.8  0.9       1.125
SECUNDARIA COMPLETA              7053 650 21.4 23.6       1.103
SECUNDARIA INCOMPLETA             623  60  1.9  2.2       1.158
SUPERIOR TECNICA COMPLETA        5044 425 15.3 15.4       1.007
SUPERIOR TECNICA INCOMPLETA       791  80  2.4  2.9       1.208
SUPERIOR UNIV. COMPLETA          5840 439 17.7 15.9       0.898
SUPERIOR UNIV. INCOMPLETA        4036 336 12.3 12.2       0.992
### Variables Seleccionadas
              # DR., MAGISTER, ALTA ESPECIALIDAD 0.848
              # EST. SUP. NO UNIVERSITARIOS      0.816
              # GRADUADO UNIVERSITARIO           0.858
              # NINGUNO                          1.143
              # NIVEL EDUCATIVO ...              1.245
              # OTROS                            1.333
              # PRIMARIA COMPLETA                0.923
              # PRIMARIA INCOMPLETA              1.125
              # SECUNDARIA COMPLETA              1.103
              # SECUNDARIA INCOMPLETA            1.158
              # SUPERIOR TECNICA INCOMPLETA      1.208
              # SUPERIOR UNIV. COMPLETA          0.898
              # SUPERIOR UNIV. INCOMPLETA        0.992
#"D_ProfesionPapa_OTROS","D_ProfesionPapa_PROFESION","D_ProfesionPapa_CONTADOR","D_ProfesionPapa_ADMINISTRADORDEEMPRESAS","D_ProfesionPapa_ABOGADO","D_ProfesionPapa_PROFESOR",
# CrossTable(DataSetUPRIVADAFRMTO$ProfesionPapa,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)
## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$ProfesionPapa,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                                                      NO   SI  NO%  SI%
ABOGADO                                             1220   93  3.7  3.4
ADMINISTRADOR DE EMPRESAS                           1422  128  4.3  4.6
AGRONOMO Y AFINES                                    691   55  2.1  2.0
ANTROPOLOGO, ARQUEOLOGO, HISTORIADOR, SOCIOLOGO Y    142   13  0.4  0.5
ARQUITECTO, URBANISTA E INGENIERO DE TRANSITO        264   19  0.8  0.7
BIOLOGO                                              139    9  0.4  0.3
CONTADOR                                            2114  124  6.4  4.5
ECONOMISTA                                           874   56  2.7  2.0
ENFERMERA                                            109    7  0.3  0.3
FARMACEUTICO                                         221   10  0.7  0.4
FISICO Y ASTRONOMO                                     3    0  0.0  0.0
GEOLOGO, GEOFISICO Y OCEANOGRAFO                     339   25  1.0  0.9
INGENIERO (otros)                                    694   61  2.1  2.2
INGENIERO CIVIL                                      386   46  1.2  1.7
INGENIERO DE MINAS, METALURGICO Y AFINES             555   43  1.7  1.6
INGENIERO DE SISTEMAS                                206   13  0.6  0.5
INGENIERO ELECTRICISTA, ELECTRONICO Y DE TELECOMUN   406   20  1.2  0.7
INGENIERO INDUSTRIAL                                 399   33  1.2  1.2
INGENIERO MECANICO                                   577   26  1.8  0.9
INGENIERO PESQUERO                                    29    2  0.1  0.1
INGENIERO QUIMICO                                    348   33  1.1  1.2
MATEMATICO Y AFINES                                   41    6  0.1  0.2
MEDICO                                               849   64  2.6  2.3
OBSTETRIZ                                             31    1  0.1  0.0
ODONTOLOGO                                           434   24  1.3  0.9
OTROS                                              12094 1079 36.7 39.1
PROFESION ...                                       5882  587 17.9 21.3
PROFESOR                                            1380   99  4.2  3.6
PROFESOR DE ACAD. Y CENECAPES                          0    1  0.0  0.0
PROFESOR DE EDUCACION INICIAL O PRE-ESCOLAR            7    0  0.0  0.0
PROFESOR DE EDUCACION SECUNDARIA Y BASICA            277   21  0.8  0.8
PROFESOR DE UNIVERSIDADES, ESEP Y OTROS CENTROS DE    93    6  0.3  0.2
PROFESOR Y O MAESTRO DE PRIMARIA                     177   15  0.5  0.5
PSICOLOGO                                            135   12  0.4  0.4
TRABAJADOR SOCIAL                                    110   14  0.3  0.5
VETERINARIO                                          286   14  0.9  0.5
                                                   Ratio_SI_NO
ABOGADO                                                  0.919
ADMINISTRADOR DE EMPRESAS                                1.070
AGRONOMO Y AFINES                                        0.952
ANTROPOLOGO, ARQUEOLOGO, HISTORIADOR, SOCIOLOGO Y        1.250
ARQUITECTO, URBANISTA E INGENIERO DE TRANSITO            0.875
BIOLOGO                                                  0.750
CONTADOR                                                 0.703
ECONOMISTA                                               0.741
ENFERMERA                                                1.000
FARMACEUTICO                                             0.571
FISICO Y ASTRONOMO                                         NaN
GEOLOGO, GEOFISICO Y OCEANOGRAFO                         0.900
INGENIERO (otros)                                        1.048
INGENIERO CIVIL                                          1.417
INGENIERO DE MINAS, METALURGICO Y AFINES                 0.941
INGENIERO DE SISTEMAS                                    0.833
INGENIERO ELECTRICISTA, ELECTRONICO Y DE TELECOMUN       0.583
INGENIERO INDUSTRIAL                                     1.000
INGENIERO MECANICO                                       0.500
INGENIERO PESQUERO                                       1.000
INGENIERO QUIMICO                                        1.091
MATEMATICO Y AFINES                                      2.000
MEDICO                                                   0.885
OBSTETRIZ                                                0.000
ODONTOLOGO                                               0.692
OTROS                                                    1.065
PROFESION ...                                            1.190
PROFESOR                                                 0.857
PROFESOR DE ACAD. Y CENECAPES                              NaN
PROFESOR DE EDUCACION INICIAL O PRE-ESCOLAR                NaN
PROFESOR DE EDUCACION SECUNDARIA Y BASICA                1.000
PROFESOR DE UNIVERSIDADES, ESEP Y OTROS CENTROS DE       0.667
PROFESOR Y O MAESTRO DE PRIMARIA                         1.000
PSICOLOGO                                                1.000
TRABAJADOR SOCIAL                                        1.667
VETERINARIO                                              0.556
### VARIABLES SELECCIONADAS
              #                                                      Ratio_SI_NO
              # ABOGADO                                                    0.919
              # AGRONOMO Y AFINES                                          0.952
              # ANTROPOLOGO, ARQUEOLOGO, HISTORIADOR, SOCIOLOGO Y          1.250
              # ARQUITECTO, URBANISTA E INGENIERO DE TRANSITO              0.875
              # BIOLOGO                                                    0.750
              # CONTADOR                                                   0.703
              # ECONOMISTA                                                 0.741
              # FARMACEUTICO                                               0.571
              # GEOLOGO, GEOFISICO Y OCEANOGRAFO                           0.900
              # INGENIERO CIVIL                                            1.417
              # INGENIERO DE MINAS, METALURGICO Y AFINES                   0.941
              # INGENIERO DE SISTEMAS                                      0.833
              # INGENIERO ELECTRICISTA, ELECTRONICO Y DE TELECOMUN         0.583
              # INGENIERO MECANICO                                         0.500
              # INGENIERO QUIMICO                                          1.091
              # MATEMATICO Y AFINES                                        2.000
              # MEDICO                                                     0.885
              # OBSTETRIZ                                                  0.000
              # ODONTOLOGO                                                 0.692
              # PROFESION ...                                              1.190
              # PROFESOR                                                   0.857
              # PROFESOR DE UNIVERSIDADES, ESEP Y OTROS CENTROS DE         0.667
              # TRABAJADOR SOCIAL                                          1.667
              # VETERINARIO                                                0.556
#"D_OcupacionPapa_EMPLEADO","D_OcupacionPapa_OTRO","D_OcupacionPapa_MICROEMPRESARIO",
#"D_OcupacionPapa_OBRERO","D_OcupacionPapa_OCUPACION","D_OcupacionPapa_FFAAOFICIAL","D_OcupacionPapa_CONDUCTORDEVEHICULO",
#"D_OcupacionPapa_EMPRESARIO","D_OcupacionPapa_AGRICULTOR","D_OcupacionPapa_COMERCIANTEMINORISTA",
# CrossTable(DataSetUPRIVADAFRMTO$OcupacionPapa,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)
## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$OcupacionPapa,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                        NO  SI  NO%  SI% Ratio_SI_NO
AGRICULTOR            1791 148  5.4  5.4       1.000
AMA DE CASA            238  22  0.7  0.8       1.143
COMERCIANTE MAYORISTA  291  34  0.9  1.2       1.333
COMERCIANTE MINORISTA 1129 111  3.4  4.0       1.176
CONDUCTOR DE VEHICULO 2002 180  6.1  6.5       1.066
DISCAPACITADO          146  16  0.4  0.6       1.500
EMPLEADO              9999 712 30.4 25.8       0.849
EMPRESARIO            1890 157  5.7  5.7       1.000
FF. POLICIALES        2018 167  6.1  6.1       1.000
FF.AA. OFICIAL         333  16  1.0  0.6       0.600
FF.AA. SUBALTERNO      439  39  1.3  1.4       1.077
JUBILADO CESANTE       876  76  2.7  2.8       1.037
MICROEMPRESARIO       2189 207  6.6  7.5       1.136
OBRERO                1959 175  5.9  6.3       1.068
OCUPACION ...         2750 278  8.4 10.1       1.202
OTRO                  4884 421 14.8 15.3       1.034
#### VARIABLES ESCOGIDAS
                  # AMA DE CASA            238  22  0.7  0.8       1.143
                  # COMERCIANTE MAYORISTA  291  34  0.9  1.2       1.333
                  # COMERCIANTE MINORISTA 1129 111  3.4  4.0       1.176
                  # DISCAPACITADO          146  16  0.4  0.6       1.500
                  # EMPLEADO              9999 712 30.4 25.8       0.849
                  # FF.AA. OFICIAL         333  16  1.0  0.6       0.600
                  # FF.AA. SUBALTERNO      439  39  1.3  1.4       1.077
                  # MICROEMPRESARIO       2189 207  6.6  7.5       1.136
                  # OBRERO                1959 175  5.9  6.3       1.068
                  # OCUPACION ...         2750 278  8.4 10.1       1.202
#"D_GradoInstruccionMama_SECUNDARIACOMPLETA","D_GradoInstruccionMama_SUPERIORUNIVCOMPLETA","D_GradoInstruccionMama_SUPERIORTECNICACOMPLETA",
#"D_GradoInstruccionMama_GRADUADOUNIVERSITARIO","D_GradoInstruccionMama_SUPERIORUNIVINCOMPLETA",
#CrossTable(DataSetUPRIVADAFRMTO$GradoInstruccionMama,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)
## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$GradoInstruccionMama,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                                   NO  SI  NO%  SI% Ratio_SI_NO
                                    6   1  0.0  0.0         NaN
DR., MAGISTER, ALTA ESPECIALIDAD  677  63  2.1  2.3       1.095
EST. SUP. NO UNIVERSITARIOS      1536 138  4.7  5.0       1.064
GRADUADO UNIVERSITARIO           4415 311 13.4 11.3       0.843
NINGUNO                           129  18  0.4  0.7       1.750
NIVEL EDUCATIVO ...               328  37  1.0  1.3       1.300
OTROS                             239  18  0.7  0.7       1.000
PRIMARIA COMPLETA                1026  89  3.1  3.2       1.032
PRIMARIA INCOMPLETA               477  37  1.4  1.3       0.929
SECUNDARIA COMPLETA              8181 745 24.8 27.0       1.089
SECUNDARIA INCOMPLETA             736  94  2.2  3.4       1.545
SUPERIOR TECNICA COMPLETA        5265 430 16.0 15.6       0.975
SUPERIOR TECNICA INCOMPLETA      1095  90  3.3  3.3       1.000
SUPERIOR UNIV. COMPLETA          5616 432 17.1 15.7       0.918
SUPERIOR UNIV. INCOMPLETA        3208 256  9.7  9.3       0.959
## Variables Seleccionadas
                # DR., MAGISTER, ALTA ESPECIALIDAD  677  63  2.1  2.3       1.095
                # EST. SUP. NO UNIVERSITARIOS      1536 138  4.7  5.0       1.064
                # GRADUADO UNIVERSITARIO           4415 311 13.4 11.3       0.843
                # NINGUNO                           129  18  0.4  0.7       1.750
                # NIVEL EDUCATIVO ...               328  37  1.0  1.3       1.300
                # PRIMARIA COMPLETA                1026  89  3.1  3.2       1.032
                # PRIMARIA INCOMPLETA               477  37  1.4  1.3       0.929
                # SECUNDARIA COMPLETA              8181 745 24.8 27.0       1.089
                # SECUNDARIA INCOMPLETA             736  94  2.2  3.4       1.545
                # SUPERIOR TECNICA COMPLETA        5265 430 16.0 15.6       0.975
                # SUPERIOR UNIV. COMPLETA          5616 432 17.1 15.7       0.918
                # SUPERIOR UNIV. INCOMPLETA        3208 256  9.7  9.3       0.959
# "D_ProfesionMama_OTROS","D_ProfesionMama_PROFESION","D_ProfesionMama_ENFERMERA","D_ProfesionMama_PROFESOR","D_ProfesionMama_CONTADOR",
# CrossTable(DataSetUPRIVADAFRMTO$ProfesionMama,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)
## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$ProfesionMama,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                                                      NO   SI  NO%  SI%
                                                       6    1  0.0  0.0
ABOGADO                                              636   67  1.9  2.4
ADMINISTRADOR DE EMPRESAS                            811   60  2.5  2.2
AGRONOMO Y AFINES                                     94    9  0.3  0.3
ANTROPOLOGO, ARQUEOLOGO, HISTORIADOR, SOCIOLOGO Y    110   10  0.3  0.4
ARQUITECTO, URBANISTA E INGENIERO DE TRANSITO         47    2  0.1  0.1
BIOLOGO                                               71    9  0.2  0.3
CONTADOR                                            2241  159  6.8  5.8
ECONOMISTA                                           567   44  1.7  1.6
ENFERMERA                                           2753  223  8.4  8.1
FARMACEUTICO                                         419   31  1.3  1.1
FISICO Y ASTRONOMO                                     6    0  0.0  0.0
GEOLOGO, GEOFISICO Y OCEANOGRAFO                      22    3  0.1  0.1
INGENIERO (otros)                                     81    6  0.2  0.2
INGENIERO CIVIL                                       14    2  0.0  0.1
INGENIERO DE MINAS, METALURGICO Y AFINES              22    3  0.1  0.1
INGENIERO DE SISTEMAS                                 44    4  0.1  0.1
INGENIERO ELECTRICISTA, ELECTRONICO Y DE TELECOMUN    30    0  0.1  0.0
INGENIERO INDUSTRIAL                                  63    1  0.2  0.0
INGENIERO MECANICO                                     1    0  0.0  0.0
INGENIERO PESQUERO                                    16    0  0.0  0.0
INGENIERO QUIMICO                                    188   13  0.6  0.5
MATEMATICO Y AFINES                                   17    1  0.1  0.0
MEDICO                                               352   25  1.1  0.9
OBSTETRIZ                                            681   47  2.1  1.7
ODONTOLOGO                                           215   16  0.7  0.6
OTROS                                              12459 1059 37.8 38.4
PROFESION ...                                       5399  510 16.4 18.5
PROFESOR                                            2746  220  8.3  8.0
PROFESOR DE ACAD. Y CENECAPES                          7    0  0.0  0.0
PROFESOR DE EDUCACION ESPECIAL                        12    3  0.0  0.1
PROFESOR DE EDUCACION INICIAL O PRE-ESCOLAR          492   43  1.5  1.6
PROFESOR DE EDUCACION SECUNDARIA Y BASICA            736   57  2.2  2.1
PROFESOR DE UNIVERSIDADES, ESEP Y OTROS CENTROS DE    42    4  0.1  0.1
PROFESOR Y O MAESTRO DE PRIMARIA                     624   46  1.9  1.7
PSICOLOGO                                            225   18  0.7  0.7
TRABAJADOR SOCIAL                                    625   60  1.9  2.2
VETERINARIO                                           60    3  0.2  0.1
                                                   Ratio_SI_NO
                                                           NaN
ABOGADO                                                  1.263
ADMINISTRADOR DE EMPRESAS                                0.880
AGRONOMO Y AFINES                                        1.000
ANTROPOLOGO, ARQUEOLOGO, HISTORIADOR, SOCIOLOGO Y        1.333
ARQUITECTO, URBANISTA E INGENIERO DE TRANSITO            1.000
BIOLOGO                                                  1.500
CONTADOR                                                 0.853
ECONOMISTA                                               0.941
ENFERMERA                                                0.964
FARMACEUTICO                                             0.846
FISICO Y ASTRONOMO                                         NaN
GEOLOGO, GEOFISICO Y OCEANOGRAFO                         1.000
INGENIERO (otros)                                        1.000
INGENIERO CIVIL                                            Inf
INGENIERO DE MINAS, METALURGICO Y AFINES                 1.000
INGENIERO DE SISTEMAS                                    1.000
INGENIERO ELECTRICISTA, ELECTRONICO Y DE TELECOMUN       0.000
INGENIERO INDUSTRIAL                                     0.000
INGENIERO MECANICO                                         NaN
INGENIERO PESQUERO                                         NaN
INGENIERO QUIMICO                                        0.833
MATEMATICO Y AFINES                                      0.000
MEDICO                                                   0.818
OBSTETRIZ                                                0.810
ODONTOLOGO                                               0.857
OTROS                                                    1.016
PROFESION ...                                            1.128
PROFESOR                                                 0.964
PROFESOR DE ACAD. Y CENECAPES                              NaN
PROFESOR DE EDUCACION ESPECIAL                             Inf
PROFESOR DE EDUCACION INICIAL O PRE-ESCOLAR              1.067
PROFESOR DE EDUCACION SECUNDARIA Y BASICA                0.955
PROFESOR DE UNIVERSIDADES, ESEP Y OTROS CENTROS DE       1.000
PROFESOR Y O MAESTRO DE PRIMARIA                         0.895
PSICOLOGO                                                1.000
TRABAJADOR SOCIAL                                        1.158
VETERINARIO                                              0.500
######
          # ABOGADO                                              636   67  1.9  2.4       1.263
          # ADMINISTRADOR DE EMPRESAS                            811   60  2.5  2.2       0.880
          # ANTROPOLOGO, ARQUEOLOGO, HISTORIADOR, SOCIOLOGO Y    110   10  0.3  0.4       1.333
          # BIOLOGO                                               71    9  0.2  0.3       1.500
          # CONTADOR                                            2241  159  6.8  5.8       0.853
          # ECONOMISTA                                           567   44  1.7  1.6       0.941
          # ENFERMERA                                           2753  223  8.4  8.1       0.964
          # FARMACEUTICO                                         419   31  1.3  1.1       0.846
          # INGENIERO ELECTRICISTA, ELECTRONICO Y DE TELECOMUN    30    0  0.1  0.0       0.000
          # INGENIERO INDUSTRIAL                                  63    1  0.2  0.0       0.000
          # INGENIERO QUIMICO                                    188   13  0.6  0.5       0.833
          # MATEMATICO Y AFINES                                   17    1  0.1  0.0       0.000
          # MEDICO                                               352   25  1.1  0.9       0.818
          # OBSTETRIZ                                            681   47  2.1  1.7       0.810
          # ODONTOLOGO                                           215   16  0.7  0.6       0.857
          # OTROS                                              12459 1059 37.8 38.4       1.016
          # PROFESION ...                                       5399  510 16.4 18.5       1.128
          # PROFESOR                                            2746  220  8.3  8.0       0.964
          # PROFESOR DE EDUCACION INICIAL O PRE-ESCOLAR          492   43  1.5  1.6       1.067
          # PROFESOR DE EDUCACION SECUNDARIA Y BASICA            736   57  2.2  2.1       0.955
          # PROFESOR Y O MAESTRO DE PRIMARIA                     624   46  1.9  1.7       0.895
          # TRABAJADOR SOCIAL                                    625   60  1.9  2.2       1.158
          # VETERINARIO                                           60    3  0.2  0.1       0.500
#"D_OcupacionMama_AMADECASA","D_OcupacionMama_EMPLEADO","D_OcupacionMama_OTRO","D_OcupacionMama_COMERCIANTEMINORISTA","D_OcupacionMama_OCUPACION",
#"D_OcupacionMama_MICROEMPRESARIO","D_OcupacionMama_EMPRESARIO",
# CrossTable(DataSetUPRIVADAFRMTO$OcupacionMama,DataSetUPRIVADAFRMTO$DESERTOR, prop.t=FALSE, prop.r=FALSE, prop.c=TRUE, prop.chisq=FALSE)
## Tablas CRuzadas con variable Objetivo
X <-table(DataSetUPRIVADAFRMTO$OcupacionMama,DataSetUPRIVADAFRMTO$DESERTOR)
Y = round((100 * apply(X, 2, function(z) z / sum(z))),1);
colnames(Y) <-  c("NO%","SI%")
cbind(X,Y, Ratio_SI_NO = round((Y[,'SI%'] / Y[,'NO%']),3))
                         NO   SI  NO%  SI% Ratio_SI_NO
                          6    1  0.0  0.0         NaN
AGRICULTOR              396   36  1.2  1.3       1.083
AMA DE CASA           13681 1065 41.5 38.6       0.930
COMERCIANTE MAYORISTA   421   38  1.3  1.4       1.077
COMERCIANTE MINORISTA  2013  195  6.1  7.1       1.164
CONDUCTOR DE VEHICULO    78    3  0.2  0.1       0.500
DISCAPACITADO            50    5  0.2  0.2       1.000
EMPLEADO               8220  605 25.0 21.9       0.876
EMPRESARIO             1015   97  3.1  3.5       1.129
FF. POLICIALES          196   18  0.6  0.7       1.167
FF.AA. OFICIAL           33    1  0.1  0.0       0.000
FF.AA. SUBALTERNO        11    2  0.0  0.1         Inf
JUBILADO CESANTE        298   31  0.9  1.1       1.222
MICROEMPRESARIO        1407  151  4.3  5.5       1.279
OBRERO                  245   32  0.7  1.2       1.714
OCUPACION ...          1438  138  4.4  5.0       1.136
OTRO                   3426  341 10.4 12.4       1.192
### VARIABLE SELECCIONADAS
            # AGRICULTOR              396   36  1.2  1.3       1.083
            # AMA DE CASA           13681 1065 41.5 38.6       0.930
            # COMERCIANTE MAYORISTA   421   38  1.3  1.4       1.077
            # COMERCIANTE MINORISTA  2013  195  6.1  7.1       1.164
            # CONDUCTOR DE VEHICULO    78    3  0.2  0.1       0.500
            # EMPLEADO               8220  605 25.0 21.9       0.876
            # EMPRESARIO             1015   97  3.1  3.5       1.129
            # FF. POLICIALES          196   18  0.6  0.7       1.167
            # FF.AA. OFICIAL           33    1  0.1  0.0       0.000
            # JUBILADO CESANTE        298   31  0.9  1.1       1.222
            # MICROEMPRESARIO        1407  151  4.3  5.5       1.279
            # OBRERO                  245   32  0.7  1.2       1.714
            # OCUPACION ...          1438  138  4.4  5.0       1.136
            # OTRO                   3426  341 10.4 12.4       1.192

Procedemos a generar las variables Dummies (dicotómicas)

Por cada variable categórica seleccionada en el anterior paso; se procedera a seleccionar cuales utilizar en base al análisis de “Tablas Cruzadas”

#VARIABLES CATEGORICAS
library(dummies)

#Dicotomizacion de variables categoricas
Datos_Dico_cat <- dplyr::select(DataSetUPRIVADAFRMTO
                                ,SEXO,CarreraProfesional,MODALIDAD_INGRESO,UBIG_NACIMIENTO,UBIG_RESIDENCIA
                                ,TIPO_VIVIENDA,GradoInstruccionPapa,ProfesionPapa,OcupacionPapa,GradoInstruccionMama
                                ,ProfesionMama,OcupacionMama)
Datos_Dico_cat <- dummy.data.frame(Datos_Dico_cat,names=c(
                                "SEXO","CarreraProfesional","MODALIDAD_INGRESO","UBIG_NACIMIENTO","UBIG_RESIDENCIA"
                                ,"TIPO_VIVIENDA","GradoInstruccionPapa","ProfesionPapa","OcupacionPapa","GradoInstruccionMama"
                                ,"ProfesionMama","OcupacionMama"))

colnames(Datos_Dico_cat) <- c("D_SEXO_F",                                                                      "D_SEXO_M",
"D_CarreraProfesiona_lINGENIERIAAGRONOMICAYAGRICOLA",                            "D_CarreraProfesiona_lINGENIERIADEINDUSTRIAALIMENTARIA",
"D_CarreraProfesiona_lINGENIERIADEMINAS",                                        "D_CarreraProfesiona_lINGENIERIADESISTEMAS",
"D_CarreraProfesiona_lINGENIERIAELECTRONICA",                                    "D_CarreraProfesiona_lINGENIERIAINDUSTRIAL",
"D_CarreraProfesiona_lINGENIERIAMECANICAMECANICAELECTRICAYMECATRONICA",          "D_CarreraProfesiona_lMEDICINAVETERINARIAYZOOTECNIA",
"D_MODALIDAD_INGRESO_Beca18",                                                    "D_MODALIDAD_INGRESO_BecasIntegrales",
"D_MODALIDAD_INGRESO_CentroPreuniversitarioIlo",                                 "D_MODALIDAD_INGRESO_CentroPreuniversitarioIloI",
"D_MODALIDAD_INGRESO_CentroPreuniversitarioIloII",                               "D_MODALIDAD_INGRESO_CentroPreuniversitarioIloIII",
"D_MODALIDAD_INGRESO_CentroPreuniversitarioJuliacaII",                           "D_MODALIDAD_INGRESO_CentroPreuniversitarioJuliacaIII",
"D_MODALIDAD_INGRESO_CentroPreuniversitarioPunoII",                              "D_MODALIDAD_INGRESO_CentroPreuniversitarioPunoIII",
"D_MODALIDAD_INGRESO_CentroPreuniversitarioI",                                   "D_MODALIDAD_INGRESO_CentroPreuniversitarioII",
"D_MODALIDAD_INGRESO_CentroPreuniversitarioIII",                                 "D_MODALIDAD_INGRESO_CoberturadeMetasCPUI",
"D_MODALIDAD_INGRESO_CoberturadeMetasCPUII",                                     "D_MODALIDAD_INGRESO_CoberturadeMetasCPUIII",
"D_MODALIDAD_INGRESO_CoberturadeMetasI",                                         "D_MODALIDAD_INGRESO_CoberturadeMetasII",
"D_MODALIDAD_INGRESO_CoberturadeMetasIII",                                       "D_MODALIDAD_INGRESO_ConvenioAndrésBello",
"D_MODALIDAD_INGRESO_DeportistaDestacado",                                       "D_MODALIDAD_INGRESO_EgresadosBachilleratoSec",
"D_MODALIDAD_INGRESO_GraduadooProfesionalUniversitario",                         "D_MODALIDAD_INGRESO_GraduadooProfesionalUniversitarioII",
"D_MODALIDAD_INGRESO_IngresoAdulto",                                             "D_MODALIDAD_INGRESO_IngresoEspecialPersonacondiscapacidad",
"D_MODALIDAD_INGRESO_IngresoEspecial:Teología",                                  "D_MODALIDAD_INGRESO_PrimerExamenGeneral",
"D_MODALIDAD_INGRESO_PrimerosPuestos",                                           "D_MODALIDAD_INGRESO_SegundoExamenGeneral",
"D_MODALIDAD_INGRESO_TercerExamenGeneral",                                       "D_MODALIDAD_INGRESO_TercerExamenGeneralSedeMajes",
"D_MODALIDAD_INGRESO_TituladoenInstitutoSuperior",                               "D_MODALIDAD_INGRESO_TituladoenInstitutoSuperiorII",
"D_MODALIDAD_INGRESO_TrasladoExternoInternacional",                              "D_MODALIDAD_INGRESO_TrasladoExternoInternacionalII",
"D_MODALIDAD_INGRESO_TrasladoExternoNacional",                                   "D_MODALIDAD_INGRESO_TrasladoExternoNacionalEsp",
"D_MODALIDAD_INGRESO_TrasladoExternoNacionalII",                                 "D_MODALIDAD_INGRESO_TrasladoInterno",
"D_MODALIDAD_INGRESO_TrasladoInternoII",                                         "D_UBIG_NACIMIENTO_ABANCAY",
"D_UBIG_NACIMIENTO_ACARI",                                                       "D_UBIG_NACIMIENTO_ACORA",
"D_UBIG_NACIMIENTO_ALCA",                                                        "D_UBIG_NACIMIENTO_ALTODELAALIANZA",
"D_UBIG_NACIMIENTO_ALTOSELVAALEGRE",                                             "D_UBIG_NACIMIENTO_ANDAGUA",
"D_UBIG_NACIMIENTO_ANDAHUAYLAS",                                                 "D_UBIG_NACIMIENTO_ANTA",
"D_UBIG_NACIMIENTO_ANTAUTA",                                                     "D_UBIG_NACIMIENTO_APLAO",
"D_UBIG_NACIMIENTO_ARAPA",                                                       "D_UBIG_NACIMIENTO_AREQUIPA",
"D_UBIG_NACIMIENTO_ASILLO",                                                      "D_UBIG_NACIMIENTO_ATE",
"D_UBIG_NACIMIENTO_ATICO",                                                       "D_UBIG_NACIMIENTO_AYACUCHO",
"D_UBIG_NACIMIENTO_AYAVIRI",                                                     "D_UBIG_NACIMIENTO_AZANGARO",
"D_UBIG_NACIMIENTO_BAMBAMARCA",                                                  "D_UBIG_NACIMIENTO_BARRANCA",
"D_UBIG_NACIMIENTO_BELLAVISTA",                                                  "D_UBIG_NACIMIENTO_CABANACONDE",
"D_UBIG_NACIMIENTO_CABANILLA",                                                   "D_UBIG_NACIMIENTO_CABANILLAS",
"D_UBIG_NACIMIENTO_CAJABAMBA",                                                   "D_UBIG_NACIMIENTO_CAJAMARCA",
"D_UBIG_NACIMIENTO_CALANA",                                                      "D_UBIG_NACIMIENTO_CALCA",
"D_UBIG_NACIMIENTO_CALLALLI",                                                    "D_UBIG_NACIMIENTO_CALLAO",
"D_UBIG_NACIMIENTO_CALLERIA",                                                    "D_UBIG_NACIMIENTO_CAMANA",
"D_UBIG_NACIMIENTO_CANARIA",                                                     "D_UBIG_NACIMIENTO_CARAVELI",
"D_UBIG_NACIMIENTO_CARMENDELALEGUAREYNOSO",                                      "D_UBIG_NACIMIENTO_CASMA",
"D_UBIG_NACIMIENTO_CASTILLA",                                                    "D_UBIG_NACIMIENTO_CAYARANI",
"D_UBIG_NACIMIENTO_CAYLLOMA",                                                    "D_UBIG_NACIMIENTO_CAYMA",
"D_UBIG_NACIMIENTO_CERROCOLORADO",                                               "D_UBIG_NACIMIENTO_CHACHAS",
"D_UBIG_NACIMIENTO_CHACLACAYO",                                                  "D_UBIG_NACIMIENTO_CHALA",
"D_UBIG_NACIMIENTO_CHAMACA",                                                     "D_UBIG_NACIMIENTO_CHANCHAMAYO",
"D_UBIG_NACIMIENTO_CHAPARRA",                                                    "D_UBIG_NACIMIENTO_CHARACATO",
"D_UBIG_NACIMIENTO_CHAUPIMARCA",                                                 "D_UBIG_NACIMIENTO_CHICLAYO",
"D_UBIG_NACIMIENTO_CHIGUATA",                                                    "D_UBIG_NACIMIENTO_CHILCA",
"D_UBIG_NACIMIENTO_CHIMBOTE",                                                    "D_UBIG_NACIMIENTO_CHINCHAALTA",
"D_UBIG_NACIMIENTO_CHIVAY",                                                      "D_UBIG_NACIMIENTO_CHOCOPE",
"D_UBIG_NACIMIENTO_CHORRILLOS",                                                  "D_UBIG_NACIMIENTO_CHUQUIBAMBA",
"D_UBIG_NACIMIENTO_CIUDADNUEVA",                                                 "D_UBIG_NACIMIENTO_COALAQUE",
"D_UBIG_NACIMIENTO_COCACHACRA",                                                  "D_UBIG_NACIMIENTO_COLQUEMARCA",
"D_UBIG_NACIMIENTO_COMBAPATA",                                                   "D_UBIG_NACIMIENTO_COPANI",
"D_UBIG_NACIMIENTO_COPORAQUE",                                                   "D_UBIG_NACIMIENTO_CORONELGREGORIOALBARRACINLANCHIPA",
"D_UBIG_NACIMIENTO_COTAHUASI",                                                   "D_UBIG_NACIMIENTO_CUPI",
"D_UBIG_NACIMIENTO_CURAHUASI",                                                   "D_UBIG_NACIMIENTO_CUSCO",
"D_UBIG_NACIMIENTO_CUYOCUYO",                                                    "D_UBIG_NACIMIENTO_DANIELHERNANDEZ",
"D_UBIG_NACIMIENTO_DEANVALDIVIA",                                                "D_UBIG_NACIMIENTO_DESAGUADERO",
"D_UBIG_NACIMIENTO_ELAGUSTINO",                                                  "D_UBIG_NACIMIENTO_ELTAMBO",
"D_UBIG_NACIMIENTO_ESPINAR",                                                     "D_UBIG_NACIMIENTO_FERREÑAFE",
"D_UBIG_NACIMIENTO_HAQUIRA",                                                     "D_UBIG_NACIMIENTO_HUACHO",
"D_UBIG_NACIMIENTO_HUAMBO",                                                      "D_UBIG_NACIMIENTO_HUANCA",
"D_UBIG_NACIMIENTO_HUANCANE",                                                    "D_UBIG_NACIMIENTO_HUANCARQUI",
"D_UBIG_NACIMIENTO_HUANCAYO",                                                    "D_UBIG_NACIMIENTO_HUANUCO",
"D_UBIG_NACIMIENTO_HUANUHUANU",                                                  "D_UBIG_NACIMIENTO_HUARAZ",
"D_UBIG_NACIMIENTO_HUASAHUASI",                                                  "D_UBIG_NACIMIENTO_HUATASANI",
"D_UBIG_NACIMIENTO_HUAYNACOTAS",                                                 "D_UBIG_NACIMIENTO_ICA",
"D_UBIG_NACIMIENTO_ICHUÑA",                                                      "D_UBIG_NACIMIENTO_ICHUPAMPA",
"D_UBIG_NACIMIENTO_ILABAYA",                                                     "D_UBIG_NACIMIENTO_ILAVE",
"D_UBIG_NACIMIENTO_ILO",                                                         "D_UBIG_NACIMIENTO_INAMBARI",
"D_UBIG_NACIMIENTO_INCHUPALLA",                                                  "D_UBIG_NACIMIENTO_INDEPENDENCIA",
"D_UBIG_NACIMIENTO_IÑAPARI",                                                     "D_UBIG_NACIMIENTO_IQUITOS",
"D_UBIG_NACIMIENTO_IRAY",                                                        "D_UBIG_NACIMIENTO_ISLAY",
"D_UBIG_NACIMIENTO_JACOBOHUNTER",                                                "D_UBIG_NACIMIENTO_JAQUI",
"D_UBIG_NACIMIENTO_JESUSMARIA",                                                  "D_UBIG_NACIMIENTO_JOSEDOMINGOCHOQUEHUANCA",
"D_UBIG_NACIMIENTO_JOSELUISBUSTAMANTEYRIVERO",                                   "D_UBIG_NACIMIENTO_JOSEMARIAQUIMPER",
"D_UBIG_NACIMIENTO_JULIACA",                                                     "D_UBIG_NACIMIENTO_JUNIN",
"D_UBIG_NACIMIENTO_LABREA",                                                      "D_UBIG_NACIMIENTO_LAJOYA",
"D_UBIG_NACIMIENTO_LAMERCED",                                                    "D_UBIG_NACIMIENTO_LATINGUIÑA",
"D_UBIG_NACIMIENTO_LAVICTORIA",                                                  "D_UBIG_NACIMIENTO_LAMBAYEQUE",
"D_UBIG_NACIMIENTO_LAMPA",                                                       "D_UBIG_NACIMIENTO_LANGUI",
"D_UBIG_NACIMIENTO_LAYO",                                                        "D_UBIG_NACIMIENTO_LEONCIOPRADO",
"D_UBIG_NACIMIENTO_LIMA",                                                        "D_UBIG_NACIMIENTO_LINCE",
"D_UBIG_NACIMIENTO_LLALLI",                                                      "D_UBIG_NACIMIENTO_LLUTA",
"D_UBIG_NACIMIENTO_LOCUMBA",                                                     "D_UBIG_NACIMIENTO_LOSORGANOS",
"D_UBIG_NACIMIENTO_LURIGANCHO",                                                  "D_UBIG_NACIMIENTO_MACA",
"D_UBIG_NACIMIENTO_MADREDEDIOS",                                                 "D_UBIG_NACIMIENTO_MADRIGAL",
"D_UBIG_NACIMIENTO_MAGDALENADELMAR",                                             "D_UBIG_NACIMIENTO_MAJES",
"D_UBIG_NACIMIENTO_MALA",                                                        "D_UBIG_NACIMIENTO_MAÑAZO",
"D_UBIG_NACIMIENTO_MARA",                                                        "D_UBIG_NACIMIENTO_MARANGANI",
"D_UBIG_NACIMIENTO_MARCONA",                                                     "D_UBIG_NACIMIENTO_MARIANOMELGAR",
"D_UBIG_NACIMIENTO_MARIANONICOLASVALCARCEL",                                     "D_UBIG_NACIMIENTO_MARISCALCACERES",
"D_UBIG_NACIMIENTO_MATARA",                                                      "D_UBIG_NACIMIENTO_MAZAMARI",
"D_UBIG_NACIMIENTO_MIRAFLORES",                                                  "D_UBIG_NACIMIENTO_MOHO",
"D_UBIG_NACIMIENTO_MOLLEBAYA",                                                   "D_UBIG_NACIMIENTO_MOLLENDO",
"D_UBIG_NACIMIENTO_MOQUEGUA",                                                    "D_UBIG_NACIMIENTO_MOYOBAMBA",
"D_UBIG_NACIMIENTO_MUÑANI",                                                      "D_UBIG_NACIMIENTO_NAZCA",
"D_UBIG_NACIMIENTO_NICOLASDEPIEROLA",                                            "D_UBIG_NACIMIENTO_NUÑOA",
"D_UBIG_NACIMIENTO_OCONGATE",                                                    "D_UBIG_NACIMIENTO_OCOÑA",
"D_UBIG_NACIMIENTO_OLLACHEA",                                                    "D_UBIG_NACIMIENTO_OLMOS",
"D_UBIG_NACIMIENTO_OMATE",                                                       "D_UBIG_NACIMIENTO_ORCOPAMPA",
"D_UBIG_NACIMIENTO_OROPESA",                                                     "D_UBIG_NACIMIENTO_ORURILLO",
"D_UBIG_NACIMIENTO_OTROPAIS",                                                    "D_UBIG_NACIMIENTO_OYON",
"D_UBIG_NACIMIENTO_PACOCHA",                                                     "D_UBIG_NACIMIENTO_PAITA",
"D_UBIG_NACIMIENTO_PALLPATA",                                                    "D_UBIG_NACIMIENTO_PAMPACOLCA",
"D_UBIG_NACIMIENTO_PAMPAMARCA",                                                  "D_UBIG_NACIMIENTO_PARAMONGA",
"D_UBIG_NACIMIENTO_PARATIA",                                                     "D_UBIG_NACIMIENTO_PARCONA",
"D_UBIG_NACIMIENTO_PARIÑAS",                                                     "D_UBIG_NACIMIENTO_PARURO",
"D_UBIG_NACIMIENTO_PAUCARPATA",                                                  "D_UBIG_NACIMIENTO_PICOTA",
"D_UBIG_NACIMIENTO_PISCO",                                                       "D_UBIG_NACIMIENTO_PITIPO",
"D_UBIG_NACIMIENTO_PIURA",                                                       "D_UBIG_NACIMIENTO_PLATERIA",
"D_UBIG_NACIMIENTO_POLOBAYA",                                                    "D_UBIG_NACIMIENTO_PUEBLOLIBRE",
"D_UBIG_NACIMIENTO_PUNO",                                                        "D_UBIG_NACIMIENTO_PUNTADEBOMBON",
"D_UBIG_NACIMIENTO_PUQUINA",                                                     "D_UBIG_NACIMIENTO_PUSI",
"D_UBIG_NACIMIENTO_PUTINA",                                                      "D_UBIG_NACIMIENTO_QUELLOUNO",
"D_UBIG_NACIMIENTO_QUEQUEÑA",                                                    "D_UBIG_NACIMIENTO_QUICACHA",
"D_UBIG_NACIMIENTO_QUILCA",                                                      "D_UBIG_NACIMIENTO_QUILLABAMBA",
"D_UBIG_NACIMIENTO_RIMAC",                                                       "D_UBIG_NACIMIENTO_RIOGRANDE",
"D_UBIG_NACIMIENTO_RUPARUPA",                                                    "D_UBIG_NACIMIENTO_SABANDIA",
"D_UBIG_NACIMIENTO_SACHACA",                                                     "D_UBIG_NACIMIENTO_SALAS",
"D_UBIG_NACIMIENTO_SAMA",                                                        "D_UBIG_NACIMIENTO_SAMEGUA",
"D_UBIG_NACIMIENTO_SAMUELPASTOR",                                                "D_UBIG_NACIMIENTO_SANANTON",
"D_UBIG_NACIMIENTO_SANBORJA",                                                    "D_UBIG_NACIMIENTO_SANISIDRO",
"D_UBIG_NACIMIENTO_SANJERONIMO",                                                 "D_UBIG_NACIMIENTO_SANJUANDELURIGANCHO",
"D_UBIG_NACIMIENTO_SANJUANDEMIRAFLORES",                                         "D_UBIG_NACIMIENTO_SANJUANDESALINAS",
"D_UBIG_NACIMIENTO_SANJUANDETARUCANI",                                           "D_UBIG_NACIMIENTO_SANJUANDELORO",
"D_UBIG_NACIMIENTO_SANLUIS",                                                     "D_UBIG_NACIMIENTO_SANMARTINDEPORRES",
"D_UBIG_NACIMIENTO_SANMIGUEL",                                                   "D_UBIG_NACIMIENTO_SANPEDRODELLOC",
"D_UBIG_NACIMIENTO_SANRAMON",                                                    "D_UBIG_NACIMIENTO_SANSEBASTIAN",
"D_UBIG_NACIMIENTO_SANVICENTEDECAÑETE",                                          "D_UBIG_NACIMIENTO_SANDIA",
"D_UBIG_NACIMIENTO_SANTAANA",                                                    "D_UBIG_NACIMIENTO_SANTALUCIA",
"D_UBIG_NACIMIENTO_SANTAMARIADECHICMO",                                          "D_UBIG_NACIMIENTO_SANTARITADESIGUAS",
"D_UBIG_NACIMIENTO_SANTAROSA",                                                   "D_UBIG_NACIMIENTO_SANTIAGO",
"D_UBIG_NACIMIENTO_SANTIAGODEPUPUJA",                                            "D_UBIG_NACIMIENTO_SANTIAGODESURCO",
"D_UBIG_NACIMIENTO_SANTOTOMAS",                                                  "D_UBIG_NACIMIENTO_SAÑA",
"D_UBIG_NACIMIENTO_SATIPO",                                                      "D_UBIG_NACIMIENTO_SICUANI",
"D_UBIG_NACIMIENTO_SOCABAYA",                                                    "D_UBIG_NACIMIENTO_SULLANA",
"D_UBIG_NACIMIENTO_SUYCKUTAMBO",                                                 "D_UBIG_NACIMIENTO_TACNA",
"D_UBIG_NACIMIENTO_TAMBOPATA",                                                   "D_UBIG_NACIMIENTO_TAMBURCO",
"D_UBIG_NACIMIENTO_TARACO",                                                      "D_UBIG_NACIMIENTO_TARMA",
"D_UBIG_NACIMIENTO_TIABAYA",                                                     "D_UBIG_NACIMIENTO_TINTA",
"D_UBIG_NACIMIENTO_TIRAPATA",                                                    "D_UBIG_NACIMIENTO_TOMEPAMPA",
"D_UBIG_NACIMIENTO_TORATA",                                                      "D_UBIG_NACIMIENTO_TRUJILLO",
"D_UBIG_NACIMIENTO_TUMBES",                                                      "D_UBIG_NACIMIENTO_UBINAS",
"D_UBIG_NACIMIENTO_UCHUMAYO",                                                    "D_UBIG_NACIMIENTO_URACA",
"D_UBIG_NACIMIENTO_URCOS",                                                       "D_UBIG_NACIMIENTO_URUBAMBA",
"D_UBIG_NACIMIENTO_VELILLE",                                                     "D_UBIG_NACIMIENTO_VILLAELSALVADOR",
"D_UBIG_NACIMIENTO_VILLAMARIADELTRIUNFO",                                        "D_UBIG_NACIMIENTO_VIRU",
"D_UBIG_NACIMIENTO_VITOR",                                                       "D_UBIG_NACIMIENTO_WANCHAQ",
"D_UBIG_NACIMIENTO_YANAHUARA",                                                   "D_UBIG_NACIMIENTO_YANAOCA",
"D_UBIG_NACIMIENTO_YANAQUIHUA",                                                  "D_UBIG_NACIMIENTO_YANQUE",
"D_UBIG_NACIMIENTO_YARABAMBA",                                                   "D_UBIG_NACIMIENTO_YARINACOCHA",
"D_UBIG_NACIMIENTO_YUCAY",                                                       "D_UBIG_NACIMIENTO_YUNGUYO",
"D_UBIG_RESIDENCIA_ACORA",                                                       "D_UBIG_RESIDENCIA_ALTODELAALIANZA",
"D_UBIG_RESIDENCIA_ALTOSELVAALEGRE",                                             "D_UBIG_RESIDENCIA_APLAO",
"D_UBIG_RESIDENCIA_AREQUIPA",                                                    "D_UBIG_RESIDENCIA_AYACUCHO",
"D_UBIG_RESIDENCIA_AYAVIRI",                                                     "D_UBIG_RESIDENCIA_AZANGARO",
"D_UBIG_RESIDENCIA_BELLAUNION",                                                  "D_UBIG_RESIDENCIA_CABANILLAS",
"D_UBIG_RESIDENCIA_CAMANA",                                                      "D_UBIG_RESIDENCIA_CARAVELI",
"D_UBIG_RESIDENCIA_CAYMA",                                                       "D_UBIG_RESIDENCIA_CERROCOLORADO",
"D_UBIG_RESIDENCIA_CHALA",                                                       "D_UBIG_RESIDENCIA_CHALLHUAHUACHO",
"D_UBIG_RESIDENCIA_CHARACATO",                                                   "D_UBIG_RESIDENCIA_CHUQUIBAMBA",
"D_UBIG_RESIDENCIA_COCACHACRA",                                                  "D_UBIG_RESIDENCIA_COLQUEMARCA",
"D_UBIG_RESIDENCIA_CORONELGREGORIOALBARRACINLANCHIPA",                           "D_UBIG_RESIDENCIA_CUSCO",
"D_UBIG_RESIDENCIA_DEANVALDIVIA",                                                "D_UBIG_RESIDENCIA_ESPINAR",
"D_UBIG_RESIDENCIA_HUANCAYO",                                                    "D_UBIG_RESIDENCIA_ILABAYA",
"D_UBIG_RESIDENCIA_ILO",                                                         "D_UBIG_RESIDENCIA_IRAY",
"D_UBIG_RESIDENCIA_ISLAY",                                                       "D_UBIG_RESIDENCIA_JACOBOHUNTER",
"D_UBIG_RESIDENCIA_JOSELUISBUSTAMANTEYRIVERO",                                   "D_UBIG_RESIDENCIA_JOSEMARIAQUIMPER",
"D_UBIG_RESIDENCIA_JULIACA",                                                     "D_UBIG_RESIDENCIA_JUNIN",
"D_UBIG_RESIDENCIA_LAJOYA",                                                      "D_UBIG_RESIDENCIA_LLUTA",
"D_UBIG_RESIDENCIA_LURIGANCHO",                                                  "D_UBIG_RESIDENCIA_MAGDALENAVIEJA",
"D_UBIG_RESIDENCIA_MAJES",                                                       "D_UBIG_RESIDENCIA_MARANGANI",
"D_UBIG_RESIDENCIA_MARCONA",                                                     "D_UBIG_RESIDENCIA_MARIANOMELGAR",
"D_UBIG_RESIDENCIA_MARISCALCACERES",                                             "D_UBIG_RESIDENCIA_MEJIA",
"D_UBIG_RESIDENCIA_MIRAFLORES",                                                  "D_UBIG_RESIDENCIA_MOLLEBAYA",
"D_UBIG_RESIDENCIA_MOLLENDO",                                                    "D_UBIG_RESIDENCIA_MOQUEGUA",
"D_UBIG_RESIDENCIA_NICOLASDEPIEROLA",                                            "D_UBIG_RESIDENCIA_OCOÑA",
"D_UBIG_RESIDENCIA_OROPESA",                                                     "D_UBIG_RESIDENCIA_PACOCHA",
"D_UBIG_RESIDENCIA_PAUCARPATA",                                                  "D_UBIG_RESIDENCIA_PAUSA",
"D_UBIG_RESIDENCIA_PICHIGUA",                                                    "D_UBIG_RESIDENCIA_POCOLLAY",
"D_UBIG_RESIDENCIA_POLOBAYA",                                                    "D_UBIG_RESIDENCIA_PUEBLONUEVO",
"D_UBIG_RESIDENCIA_PULLO",                                                       "D_UBIG_RESIDENCIA_PUNO",
"D_UBIG_RESIDENCIA_PUNTADEBOMBON",                                               "D_UBIG_RESIDENCIA_QUELLOUNO",
"D_UBIG_RESIDENCIA_RIOGRANDE",                                                   "D_UBIG_RESIDENCIA_SABANDIA",
"D_UBIG_RESIDENCIA_SACHACA",                                                     "D_UBIG_RESIDENCIA_SAMEGUA",
"D_UBIG_RESIDENCIA_SAMUELPASTOR",                                                "D_UBIG_RESIDENCIA_SANJERONIMO",
"D_UBIG_RESIDENCIA_SANJUANDELURIGANCHO",                                         "D_UBIG_RESIDENCIA_SANSEBASTIAN",
"D_UBIG_RESIDENCIA_SANTAANA",                                                    "D_UBIG_RESIDENCIA_SANTARITADESIGUAS",
"D_UBIG_RESIDENCIA_SANTIAGO",                                                    "D_UBIG_RESIDENCIA_SANTIAGODESURCO",
"D_UBIG_RESIDENCIA_SAYLLA",                                                      "D_UBIG_RESIDENCIA_SICUANI",
"D_UBIG_RESIDENCIA_SOCABAYA",                                                    "D_UBIG_RESIDENCIA_TACNA",
"D_UBIG_RESIDENCIA_TAMBOPATA",                                                   "D_UBIG_RESIDENCIA_TAMBURCO",
"D_UBIG_RESIDENCIA_TARICA",                                                      "D_UBIG_RESIDENCIA_TIABAYA",
"D_UBIG_RESIDENCIA_UCHUMAYO",                                                    "D_UBIG_RESIDENCIA_URACA",
"D_UBIG_RESIDENCIA_URUBAMBA",                                                    "D_UBIG_RESIDENCIA_VITOR",
"D_UBIG_RESIDENCIA_WANCHAQ",                                                     "D_UBIG_RESIDENCIA_YANAHUARA",
"D_UBIG_RESIDENCIA_YARABAMBA",                                                   "D_UBIG_RESIDENCIA_YURA",
"D_TIPO_VIVIENDA_CASA",                                                          "D_TIPO_VIVIENDA_DEPARTAMENTO",
"D_TIPO_VIVIENDA_VECINDAD",                                                      "D_GradoInstruccionPapa_DRMAGISTERALTAESPECIALIDAD",
"D_GradoInstruccionPapa_ESTSUPNOUNIVERSITARIOS",                                 "D_GradoInstruccionPapa_GRADUADOUNIVERSITARIO",
"D_GradoInstruccionPapa_NINGUNO",                                                "D_GradoInstruccionPapa_NIVELEDUCATIVO",
"D_GradoInstruccionPapa_OTROS",                                                  "D_GradoInstruccionPapa_PRIMARIACOMPLETA",
"D_GradoInstruccionPapa_PRIMARIAINCOMPLETA",                                     "D_GradoInstruccionPapa_SECUNDARIACOMPLETA",
"D_GradoInstruccionPapa_SECUNDARIAINCOMPLETA",                                   "D_GradoInstruccionPapa_SUPERIORTECNICACOMPLETA",
"D_GradoInstruccionPapa_SUPERIORTECNICAINCOMPLETA",                              "D_GradoInstruccionPapa_SUPERIORUNIVCOMPLETA",
"D_GradoInstruccionPapa_SUPERIORUNIVINCOMPLETA",                                 "D_ProfesionPapa_ABOGADO",
"D_ProfesionPapa_ADMINISTRADORDEEMPRESAS",                                       "D_ProfesionPapa_AGRONOMOYAFINES",
"D_ProfesionPapa_ANTROPOLOGOARQUEOLOGOHISTORIADORSOCIOLOGOY",                    "D_ProfesionPapa_ARQUITECTOURBANISTAEINGENIERODETRANSITO",
"D_ProfesionPapa_BIOLOGO",                                                       "D_ProfesionPapa_CONTADOR",
"D_ProfesionPapa_ECONOMISTA",                                                    "D_ProfesionPapa_ENFERMERA",
"D_ProfesionPapa_FARMACEUTICO",                                                  "D_ProfesionPapa_FISICOYASTRONOMO",
"D_ProfesionPapa_GEOLOGOGEOFISICOYOCEANOGRAFO",                                  "D_ProfesionPapa_INGENIEROotros",
"D_ProfesionPapa_INGENIEROCIVIL",                                                "D_ProfesionPapa_INGENIERODEMINASMETALURGICOYAFINES",
"D_ProfesionPapa_INGENIERODESISTEMAS",                                           "D_ProfesionPapa_INGENIEROELECTRICISTAELECTRONICOYDETELECOMUN",
"D_ProfesionPapa_INGENIEROINDUSTRIAL",                                           "D_ProfesionPapa_INGENIEROMECANICO",
"D_ProfesionPapa_INGENIEROPESQUERO",                                             "D_ProfesionPapa_INGENIEROQUIMICO",
"D_ProfesionPapa_MATEMATICOYAFINES",                                             "D_ProfesionPapa_MEDICO",
"D_ProfesionPapa_OBSTETRIZ",                                                     "D_ProfesionPapa_ODONTOLOGO",
"D_ProfesionPapa_OTROS",                                                         "D_ProfesionPapa_PROFESION",
"D_ProfesionPapa_PROFESOR",                                                      "D_ProfesionPapa_PROFESORDEACADYCENECAPES",
"D_ProfesionPapa_PROFESORDEEDUCACIONINICIALOPREESCOLAR",                         "D_ProfesionPapa_PROFESORDEEDUCACIONSECUNDARIAYBASICA",
"D_ProfesionPapa_PROFESORDEUNIVERSIDADESESEPYOTROSCENTROSDE",                    "D_ProfesionPapa_PROFESORYOMAESTRODEPRIMARIA",
"D_ProfesionPapa_PSICOLOGO",                                                     "D_ProfesionPapa_TRABAJADORSOCIAL",
"D_ProfesionPapa_VETERINARIO",                                                   "D_OcupacionPapa_AGRICULTOR",
"D_OcupacionPapa_AMADECASA",                                                     "D_OcupacionPapa_COMERCIANTEMAYORISTA",
"D_OcupacionPapa_COMERCIANTEMINORISTA",                                          "D_OcupacionPapa_CONDUCTORDEVEHICULO",
"D_OcupacionPapa_DISCAPACITADO",                                                 "D_OcupacionPapa_EMPLEADO",
"D_OcupacionPapa_EMPRESARIO",                                                    "D_OcupacionPapa_FFPOLICIALES",
"D_OcupacionPapa_FFAAOFICIAL",                                                   "D_OcupacionPapa_FFAASUBALTERNO",
"D_OcupacionPapa_JUBILADOCESANTE",                                               "D_OcupacionPapa_MICROEMPRESARIO",
"D_OcupacionPapa_OBRERO",                                                        "D_OcupacionPapa_OCUPACION",
"D_OcupacionPapa_OTRO",                                                          "D_GradoInstruccionMama_",
"D_GradoInstruccionMama_DRMAGISTERALTAESPECIALIDAD",                             "D_GradoInstruccionMama_ESTSUPNOUNIVERSITARIOS",
"D_GradoInstruccionMama_GRADUADOUNIVERSITARIO",                                  "D_GradoInstruccionMama_NINGUNO",
"D_GradoInstruccionMama_NIVELEDUCATIVO",                                         "D_GradoInstruccionMama_OTROS",
"D_GradoInstruccionMama_PRIMARIACOMPLETA",                                       "D_GradoInstruccionMama_PRIMARIAINCOMPLETA",
"D_GradoInstruccionMama_SECUNDARIACOMPLETA",                                     "D_GradoInstruccionMama_SECUNDARIAINCOMPLETA",
"D_GradoInstruccionMama_SUPERIORTECNICACOMPLETA",                                "D_GradoInstruccionMama_SUPERIORTECNICAINCOMPLETA",
"D_GradoInstruccionMama_SUPERIORUNIVCOMPLETA",                                   "D_GradoInstruccionMama_SUPERIORUNIVINCOMPLETA",
"D_ProfesionMama_",                                                              "D_ProfesionMama_ABOGADO",
"D_ProfesionMama_ADMINISTRADORDEEMPRESAS",                                       "D_ProfesionMama_AGRONOMOYAFINES",
"D_ProfesionMama_ANTROPOLOGOARQUEOLOGOHISTORIADORSOCIOLOGOY",                    "D_ProfesionMama_ARQUITECTOURBANISTAEINGENIERODETRANSITO",
"D_ProfesionMama_BIOLOGO",                                                       "D_ProfesionMama_CONTADOR",
"D_ProfesionMama_ECONOMISTA",                                                    "D_ProfesionMama_ENFERMERA",
"D_ProfesionMama_FARMACEUTICO",                                                  "D_ProfesionMama_FISICOYASTRONOMO",
"D_ProfesionMama_GEOLOGOGEOFISICOYOCEANOGRAFO",                                  "D_ProfesionMama_INGENIEROotros",
"D_ProfesionMama_INGENIEROCIVIL",                                                "D_ProfesionMama_INGENIERODEMINASMETALURGICOYAFINES",
"D_ProfesionMama_INGENIERODESISTEMAS",                                           "D_ProfesionMama_INGENIEROELECTRICISTAELECTRONICOYDETELECOMUN",
"D_ProfesionMama_INGENIEROINDUSTRIAL",                                           "D_ProfesionMama_INGENIEROMECANICO",
"D_ProfesionMama_INGENIEROPESQUERO",                                             "D_ProfesionMama_INGENIEROQUIMICO",
"D_ProfesionMama_MATEMATICOYAFINES",                                             "D_ProfesionMama_MEDICO",
"D_ProfesionMama_OBSTETRIZ",                                                     "D_ProfesionMama_ODONTOLOGO",
"D_ProfesionMama_OTROS",                                                         "D_ProfesionMama_PROFESION",
"D_ProfesionMama_PROFESOR",                                                      "D_ProfesionMama_PROFESORDEACADYCENECAPES",
"D_ProfesionMama_PROFESORDEEDUCACIONESPECIAL",                                   "D_ProfesionMama_PROFESORDEEDUCACIONINICIALOPREESCOLAR",
"D_ProfesionMama_PROFESORDEEDUCACIONSECUNDARIAYBASICA",                          "D_ProfesionMama_PROFESORDEUNIVERSIDADESESEPYOTROSCENTROSDE",
"D_ProfesionMama_PROFESORYOMAESTRODEPRIMARIA",                                   "D_ProfesionMama_PSICOLOGO",
"D_ProfesionMama_TRABAJADORSOCIAL",                                              "D_ProfesionMama_VETERINARIO",
"D_OcupacionMama_",                                                              "D_OcupacionMama_AGRICULTOR",
"D_OcupacionMama_AMADECASA",                                                     "D_OcupacionMama_COMERCIANTEMAYORISTA",
"D_OcupacionMama_COMERCIANTEMINORISTA",                                          "D_OcupacionMama_CONDUCTORDEVEHICULO",
"D_OcupacionMama_DISCAPACITADO",                                                 "D_OcupacionMama_EMPLEADO",
"D_OcupacionMama_EMPRESARIO",                                                    "D_OcupacionMama_FFPOLICIALES",
"D_OcupacionMama_FFAAOFICIAL",                                                   "D_OcupacionMama_FFAASUBALTERNO",
"D_OcupacionMama_JUBILADOCESANTE",                                               "D_OcupacionMama_MICROEMPRESARIO",
"D_OcupacionMama_OBRERO",                                                        "D_OcupacionMama_OCUPACION",
"D_OcupacionMama_OTRO")

#glimpse(Datos_Dico_cat)
ListVar.Categ.Dico.seleccionados <- 
c("D_SEXO_M",

"D_CarreraProfesiona_lINGENIERIAAGRONOMICAYAGRICOLA",
"D_CarreraProfesiona_lINGENIERIADEINDUSTRIAALIMENTARIA","D_CarreraProfesiona_lINGENIERIADEMINAS",
"D_CarreraProfesiona_lINGENIERIADESISTEMAS","D_CarreraProfesiona_lINGENIERIAELECTRONICA",
"D_CarreraProfesiona_lINGENIERIAINDUSTRIAL","D_CarreraProfesiona_lINGENIERIAMECANICAMECANICAELECTRICAYMECATRONICA",
"D_CarreraProfesiona_lMEDICINAVETERINARIAYZOOTECNIA",

"D_MODALIDAD_INGRESO_CentroPreuniversitarioI","D_MODALIDAD_INGRESO_CentroPreuniversitarioII","D_MODALIDAD_INGRESO_CentroPreuniversitarioIII",
"D_MODALIDAD_INGRESO_PrimerosPuestos","D_MODALIDAD_INGRESO_SegundoExamenGeneral","D_MODALIDAD_INGRESO_TercerExamenGeneral","D_MODALIDAD_INGRESO_PrimerExamenGeneral",

"D_UBIG_NACIMIENTO_AREQUIPA","D_UBIG_NACIMIENTO_PAUCARPATA","D_UBIG_NACIMIENTO_JULIACA",

"D_UBIG_RESIDENCIA_CERROCOLORADO","D_UBIG_RESIDENCIA_AREQUIPA","D_UBIG_RESIDENCIA_PAUCARPATA","D_UBIG_RESIDENCIA_CAYMA","D_UBIG_RESIDENCIA_JOSELUISBUSTAMANTEYRIVERO","D_UBIG_RESIDENCIA_ALTOSELVAALEGRE","D_UBIG_RESIDENCIA_YANAHUARA","D_UBIG_RESIDENCIA_SOCABAYA","D_UBIG_RESIDENCIA_MARIANOMELGAR",
"D_UBIG_RESIDENCIA_SACHACA","D_UBIG_RESIDENCIA_JACOBOHUNTER",

"D_TIPO_VIVIENDA_CASA","D_TIPO_VIVIENDA_DEPARTAMENTO",

"D_GradoInstruccionPapa_SECUNDARIACOMPLETA","D_GradoInstruccionPapa_SUPERIORUNIVCOMPLETA","D_GradoInstruccionPapa_SUPERIORTECNICACOMPLETA","D_GradoInstruccionPapa_GRADUADOUNIVERSITARIO","D_GradoInstruccionPapa_SUPERIORUNIVINCOMPLETA",

"D_ProfesionPapa_OTROS","D_ProfesionPapa_PROFESION","D_ProfesionPapa_CONTADOR","D_ProfesionPapa_ADMINISTRADORDEEMPRESAS","D_ProfesionPapa_ABOGADO","D_ProfesionPapa_PROFESOR",

"D_OcupacionPapa_EMPLEADO","D_OcupacionPapa_OTRO","D_OcupacionPapa_MICROEMPRESARIO",
"D_OcupacionPapa_OBRERO","D_OcupacionPapa_OCUPACION","D_OcupacionPapa_FFAAOFICIAL","D_OcupacionPapa_CONDUCTORDEVEHICULO",
"D_OcupacionPapa_EMPRESARIO","D_OcupacionPapa_AGRICULTOR","D_OcupacionPapa_COMERCIANTEMINORISTA",

"D_GradoInstruccionMama_SECUNDARIACOMPLETA","D_GradoInstruccionMama_SUPERIORUNIVCOMPLETA","D_GradoInstruccionMama_SUPERIORTECNICACOMPLETA",
"D_GradoInstruccionMama_GRADUADOUNIVERSITARIO","D_GradoInstruccionMama_SUPERIORUNIVINCOMPLETA",

 "D_ProfesionMama_OTROS","D_ProfesionMama_PROFESION","D_ProfesionMama_ENFERMERA","D_ProfesionMama_PROFESOR","D_ProfesionMama_CONTADOR",

"D_OcupacionMama_AMADECASA","D_OcupacionMama_EMPLEADO","D_OcupacionMama_OTRO","D_OcupacionMama_COMERCIANTEMINORISTA","D_OcupacionMama_OCUPACION",
"D_OcupacionMama_MICROEMPRESARIO","D_OcupacionMama_EMPRESARIO")

ListVar.Categ.Dico.seleccionadosII <- 
c("D_SEXO_F",
  
  "D_MODALIDAD_INGRESO_CentroPreuniversitarioI","D_MODALIDAD_INGRESO_CentroPreuniversitarioII","D_MODALIDAD_INGRESO_CentroPreuniversitarioIII",
"D_MODALIDAD_INGRESO_CoberturadeMetasI","D_MODALIDAD_INGRESO_CoberturadeMetasIII","D_MODALIDAD_INGRESO_DeportistaDestacado",
"D_MODALIDAD_INGRESO_GraduadooProfesionalUniversitario","D_MODALIDAD_INGRESO_GraduadooProfesionalUniversitarioII",
"D_MODALIDAD_INGRESO_TercerExamenGeneral","D_MODALIDAD_INGRESO_PrimerosPuestos","D_MODALIDAD_INGRESO_SegundoExamenGeneral",
"D_MODALIDAD_INGRESO_TercerExamenGeneral","D_MODALIDAD_INGRESO_TercerExamenGeneralSedeMajes","D_MODALIDAD_INGRESO_TituladoenInstitutoSuperior",
"D_MODALIDAD_INGRESO_TituladoenInstitutoSuperiorII","D_MODALIDAD_INGRESO_TrasladoExternoNacional","D_MODALIDAD_INGRESO_TrasladoExternoNacionalII",
"D_MODALIDAD_INGRESO_TrasladoInterno","D_MODALIDAD_INGRESO_TrasladoInternoII",

"D_UBIG_NACIMIENTO_ABANCAY","D_UBIG_NACIMIENTO_ALTOSELVAALEGRE","D_UBIG_NACIMIENTO_ANTAUTA","D_UBIG_NACIMIENTO_APLAO","D_UBIG_NACIMIENTO_AREQUIPA",
"D_UBIG_NACIMIENTO_AYAVIRI","D_UBIG_NACIMIENTO_CALANA","D_UBIG_NACIMIENTO_CAMANA","D_UBIG_NACIMIENTO_CAYMA","D_UBIG_NACIMIENTO_CERROCOLORADO",
"D_UBIG_NACIMIENTO_CHIVAY","D_UBIG_NACIMIENTO_COCACHACRA","D_UBIG_NACIMIENTO_CUSCO","D_UBIG_NACIMIENTO_CUYOCUYO","D_UBIG_NACIMIENTO_ELAGUSTINO",
"D_UBIG_NACIMIENTO_ESPINAR","D_UBIG_NACIMIENTO_ILABAYA","D_UBIG_NACIMIENTO_JESUSMARIA","D_UBIG_NACIMIENTO_JOSEDOMINGOCHOQUEHUANCA","D_UBIG_NACIMIENTO_JULIACA",
"D_UBIG_NACIMIENTO_LAJOYA","D_UBIG_NACIMIENTO_LIMA","D_UBIG_NACIMIENTO_LOCUMBA","D_UBIG_NACIMIENTO_MAJES","D_UBIG_NACIMIENTO_MARCONA","D_UBIG_NACIMIENTO_MARIANOMELGAR",
"D_UBIG_NACIMIENTO_MARISCALCACERES","D_UBIG_NACIMIENTO_MIRAFLORES","D_UBIG_NACIMIENTO_MOQUEGUA","D_UBIG_NACIMIENTO_NAZCA","D_UBIG_NACIMIENTO_NICOLASDEPIEROLA",
"D_UBIG_NACIMIENTO_ORCOPAMPA","D_UBIG_NACIMIENTO_OTROPAIS","D_UBIG_NACIMIENTO_PAUCARPATA","D_UBIG_NACIMIENTO_PUEBLOLIBRE","D_UBIG_NACIMIENTO_PUNO","D_UBIG_NACIMIENTO_PUNTADEBOMBON",
"D_UBIG_NACIMIENTO_QUILLABAMBA",

"D_UBIG_RESIDENCIA_ALTOSELVAALEGRE","D_UBIG_RESIDENCIA_AREQUIPA","D_UBIG_RESIDENCIA_CAMANA","D_UBIG_RESIDENCIA_CAYMA","D_UBIG_RESIDENCIA_CERROCOLORADO","D_UBIG_RESIDENCIA_CUSCO",
"D_UBIG_RESIDENCIA_ILO","D_UBIG_RESIDENCIA_JACOBOHUNTER","D_UBIG_RESIDENCIA_JOSELUISBUSTAMANTEYRIVERO","D_UBIG_RESIDENCIA_JULIACA","D_UBIG_RESIDENCIA_LAJOYA","D_UBIG_RESIDENCIA_LLUTA",
"D_UBIG_RESIDENCIA_MAJES","D_UBIG_RESIDENCIA_MARIANOMELGAR","D_UBIG_RESIDENCIA_MARISCALCACERES","D_UBIG_RESIDENCIA_MIRAFLORES","D_UBIG_RESIDENCIA_MOLLEBAYA","D_UBIG_RESIDENCIA_MOLLENDO",
"D_UBIG_RESIDENCIA_MOQUEGUA","D_UBIG_RESIDENCIA_PAUCARPATA","D_UBIG_RESIDENCIA_PUNO","D_UBIG_RESIDENCIA_SABANDIA","D_UBIG_RESIDENCIA_SACHACA","D_UBIG_RESIDENCIA_SANSEBASTIAN","D_UBIG_RESIDENCIA_TACNA",
"D_UBIG_RESIDENCIA_TIABAYA","D_UBIG_RESIDENCIA_UCHUMAYO","D_UBIG_RESIDENCIA_YANAHUARA","D_TIPO_VIVIENDA_DEPARTAMENTO","D_TIPO_VIVIENDA_VECINDAD",


"D_GradoInstruccionPapa_DRMAGISTERALTAESPECIALIDAD","D_GradoInstruccionPapa_ESTSUPNOUNIVERSITARIOS","D_GradoInstruccionPapa_GRADUADOUNIVERSITARIO","D_GradoInstruccionPapa_NINGUNO","D_GradoInstruccionPapa_NIVELEDUCATIVO",
"D_GradoInstruccionPapa_OTROS","D_GradoInstruccionPapa_PRIMARIACOMPLETA","D_GradoInstruccionPapa_PRIMARIAINCOMPLETA","D_GradoInstruccionPapa_SECUNDARIACOMPLETA","D_GradoInstruccionPapa_SECUNDARIAINCOMPLETA",
"D_GradoInstruccionPapa_SUPERIORTECNICAINCOMPLETA","D_GradoInstruccionPapa_SUPERIORUNIVCOMPLETA","D_GradoInstruccionPapa_SUPERIORUNIVINCOMPLETA",

"D_ProfesionPapa_ABOGADO","D_ProfesionPapa_AGRONOMOYAFINES","D_ProfesionPapa_ANTROPOLOGOARQUEOLOGOHISTORIADORSOCIOLOGOY","D_ProfesionPapa_ARQUITECTOURBANISTAEINGENIERODETRANSITO","D_ProfesionPapa_BIOLOGO",
"D_ProfesionPapa_CONTADOR","D_ProfesionPapa_ECONOMISTA","D_ProfesionPapa_FARMACEUTICO","D_ProfesionPapa_GEOLOGOGEOFISICOYOCEANOGRAFO","D_ProfesionPapa_INGENIEROCIVIL","D_ProfesionPapa_INGENIERODEMINASMETALURGICOYAFINES",
"D_ProfesionPapa_INGENIERODESISTEMAS","D_ProfesionPapa_INGENIEROELECTRICISTAELECTRONICOYDETELECOMUN","D_ProfesionPapa_INGENIEROMECANICO","D_ProfesionPapa_INGENIEROQUIMICO","D_ProfesionPapa_MATEMATICOYAFINES","D_ProfesionPapa_MEDICO",
"D_ProfesionPapa_OBSTETRIZ","D_ProfesionPapa_ODONTOLOGO","D_ProfesionPapa_PROFESION","D_ProfesionPapa_PROFESOR","D_ProfesionPapa_PROFESORDEUNIVERSIDADESESEPYOTROSCENTROSDE","D_ProfesionPapa_TRABAJADORSOCIAL","D_ProfesionPapa_VETERINARIO",

"D_OcupacionPapa_AMADECASA","D_OcupacionPapa_COMERCIANTEMAYORISTA","D_OcupacionPapa_COMERCIANTEMINORISTA","D_OcupacionPapa_DISCAPACITADO","D_OcupacionPapa_EMPLEADO",
"D_OcupacionPapa_FFAAOFICIAL","D_OcupacionPapa_FFAASUBALTERNO","D_OcupacionPapa_MICROEMPRESARIO","D_OcupacionPapa_OBRERO","D_OcupacionPapa_OCUPACION",

"D_GradoInstruccionMama_DRMAGISTERALTAESPECIALIDAD","D_GradoInstruccionMama_ESTSUPNOUNIVERSITARIOS","D_GradoInstruccionMama_GRADUADOUNIVERSITARIO","D_GradoInstruccionMama_NINGUNO","D_GradoInstruccionMama_NIVELEDUCATIVO",
"D_GradoInstruccionMama_PRIMARIACOMPLETA","D_GradoInstruccionMama_PRIMARIAINCOMPLETA","D_GradoInstruccionMama_SECUNDARIACOMPLETA","D_GradoInstruccionMama_SECUNDARIAINCOMPLETA","D_GradoInstruccionMama_SUPERIORTECNICACOMPLETA",
"D_GradoInstruccionMama_SUPERIORTECNICAINCOMPLETA",

"D_ProfesionMama_ABOGADO","D_ProfesionMama_ADMINISTRADORDEEMPRESAS","D_ProfesionMama_ANTROPOLOGOARQUEOLOGOHISTORIADORSOCIOLOGOY","D_ProfesionMama_BIOLOGO","D_ProfesionMama_CONTADOR","D_ProfesionMama_ECONOMISTA",
"D_ProfesionMama_ENFERMERA","D_ProfesionMama_FARMACEUTICO","D_ProfesionMama_INGENIEROELECTRICISTAELECTRONICOYDETELECOMUN","D_ProfesionMama_INGENIEROINDUSTRIAL","D_ProfesionMama_INGENIEROQUIMICO","D_ProfesionMama_MATEMATICOYAFINES",
"D_ProfesionMama_MEDICO","D_ProfesionMama_OBSTETRIZ","D_ProfesionMama_OTROS","D_ProfesionMama_PROFESION","D_ProfesionMama_PROFESOR","D_ProfesionMama_PROFESORDEEDUCACIONINICIALOPREESCOLAR",
"D_ProfesionMama_PROFESORDEEDUCACIONSECUNDARIAYBASICA","D_ProfesionMama_PROFESORYOMAESTRODEPRIMARIA","D_ProfesionMama_TRABAJADORSOCIAL","D_ProfesionMama_VETERINARIO",

"D_OcupacionMama_AGRICULTOR","D_OcupacionMama_AMADECASA","D_OcupacionMama_COMERCIANTEMAYORISTA","D_OcupacionMama_CONDUCTORDEVEHICULO","D_OcupacionMama_EMPLEADO",
"D_OcupacionMama_EMPRESARIO","D_OcupacionMama_FFPOLICIALES","D_OcupacionMama_FFAAOFICIAL","D_OcupacionMama_JUBILADOCESANTE","D_OcupacionMama_MICROEMPRESARIO",
"D_OcupacionMama_OBRERO","D_OcupacionMama_OCUPACION","D_OcupacionMama_OTRO")

MODELO RAMDOM FOREST

##############################################################
################## MODELAMIENTO ESTADISTICO ##################
##############################################################

data<- cbind(
  as.data.frame(DataSetUPRIVADAFRMTO$DESERTOR),
  TT_SinOut_SemestresEstudiadosAcum,
  TT_SinOut_CantCursosLlevadosAcum,
  TT_SinOut_CursosLlevadosFueraCarreraAcum,
  TT_SinOut_AvgSinAplzAcum,
  TT_SinOut_AvgConAplzAcum,
  TT_SinOut_CantCursosAplzAcum,
  TT_SinOut_SumCredTeoAcum,
  TT_SinOut_SumCredPraAcum,
  TT_SinOut_edad,
  TT_SinOut_AvgVezMatriAcum,
  TT_SinOut_ANIO_INGRESO,
  TT_SinOut_CantCursosAnulados,
  TT_SinOut_ProbabDesercion,Datos_Dico_cat[,c(ListVar.Categ.Dico.seleccionadosII)])
colnames(data)[1] <- "DESERTOR"

#data <- cbind(DataSetUPRIVADAFRMTO[,ListVar.Continuas],Datos_Dico_cat)

# Selección de muestra de entrenamiento (60%) y de Validación (40%)
library(caret)

set.seed(696) 
#index   <- createDataPartition(data$DESERTOR, p=0.7, list=FALSE)
Tabla_FrecAcumuladas
index <- c(1:24541)## Se considera el registro 24541 por represetnar el 70% de los datos
Training <- data[ index, ]
Testing <- data[-index, ]

# Verificando que se mantenga la proporción original
round(prop.table(table(data$DESERTOR))*100,2)

   NO    SI 
92.27  7.73 
round(prop.table(table(Training$DESERTOR))*100,2)

   NO    SI 
92.27  7.73 
round(prop.table(table(Testing$DESERTOR))*100,2)

   NO    SI 
92.27  7.73 
#Balanceo de la data

#UnderSampling
set.seed(696)
under_train <- downSample(x = Training[,!(names(data) %in% c("DESERTOR"))], 
                          y = Training$DESERTOR,
                          yname="DESERTOR")
#Colocando la variable dependiente(objetivo) al inicio
tmp = under_train$DESERTOR
under_train$DESERTOR <- NULL
under_train <- cbind(tmp,under_train)
colnames(under_train)[1] <- "DESERTOR"
#--------------------------
table(Training$DESERTOR)

   NO    SI 
22644  1897 
table(under_train$DESERTOR)

  NO   SI 
1897 1897 
# OverSampling
set.seed(696)
over_train <- upSample(x = Training[,!(names(data) %in% c("DESERTOR"))], 
                       y = Training$DESERTOR,
                       yname="DESERTOR")
#Colocando la variable dependiente al inicio
tmp = over_train$DESERTOR
over_train$DESERTOR <- NULL
over_train <- cbind(tmp,over_train)
colnames(over_train)[1] <- "DESERTOR"
#--------------------------
table(Training$DESERTOR)

   NO    SI 
22644  1897 
table(over_train$DESERTOR)

   NO    SI 
22644 22644 
# SMOOTE
library(DMwR)
#Eliminamos la columna de identificación
#Training <- Training[,!(names(Training) %in% c("CodAlumno"))]
set.seed(696)
smote_train <- DMwR::SMOTE(DESERTOR ~ ., 
                     Training, 
                     perc.over = 540, 
                     k = 5, 
                     perc.under = 120) %>% as.data.frame()

table(Training$DESERTOR)

   NO    SI 
22644  1897 
table(smote_train$DESERTOR)

   NO    SI 
11382 11382 
# No_deserta Si_Deserta
#     3676  198
#   19761   1656 
# perc.over  = 500   significa que va a adicionar 5 veces (500%) a la 
#                    clase minoritaria 1656 + 5*1656 = 9936
# perc.under = 120   significa que por cada caso adicionado (5*1656=8280) 
#                    escogerá el 120% (5*1656) = 9936 de la clase mayoritaria
# No_Fuga Si_Fuga 
#     678     678 


###############################################################################################################################
##############################  LIBRERIA BORUTA (Selecciones de Variables automatizada) ##########################################
###############################################################################################################################
boruta_output <- Boruta::Boruta(DESERTOR ~ .,
                                data =  data,
                                doTrace=2)
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 2 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 26 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 53 seconds.
Computing permutation importance.. Progress: 85%. Estimated remaining time: 21 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 0 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 24 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 51 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 19 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 2 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 24 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 52 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 2 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 26 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 52 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 4 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 26 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 53 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 6 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 29 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 54 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 6 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 27 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 53 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 2 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 24 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 51 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 2 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 24 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 52 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 0 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 24 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 51 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 19 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 5 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 27 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 53 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 21 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 0 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 24 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 51 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 4 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 27 seconds.
Computing permutation importance.. Progress: 62%. Estimated remaining time: 57 seconds.
Computing permutation importance.. Progress: 83%. Estimated remaining time: 25 seconds.
Computing permutation importance.. Progress: 21%. Estimated remaining time: 1 minute, 53 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 24 seconds.
Computing permutation importance.. Progress: 64%. Estimated remaining time: 51 seconds.
Computing permutation importance.. Progress: 86%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 20%. Estimated remaining time: 2 minutes, 2 seconds.
Computing permutation importance.. Progress: 42%. Estimated remaining time: 1 minute, 24 seconds.
Computing permutation importance.. Progress: 63%. Estimated remaining time: 53 seconds.
Computing permutation importance.. Progress: 85%. Estimated remaining time: 21 seconds.
Computing permutation importance.. Progress: 61%. Estimated remaining time: 19 seconds.
Computing permutation importance.. Progress: 61%. Estimated remaining time: 19 seconds.
Computing permutation importance.. Progress: 60%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 60%. Estimated remaining time: 20 seconds.
Computing permutation importance.. Progress: 80%. Estimated remaining time: 7 seconds.
Computing permutation importance.. Progress: 82%. Estimated remaining time: 6 seconds.
Computing permutation importance.. Progress: 80%. Estimated remaining time: 7 seconds.
Computing permutation importance.. Progress: 82%. Estimated remaining time: 6 seconds.
Computing permutation importance.. Progress: 93%. Estimated remaining time: 2 seconds.
Computing permutation importance.. Progress: 96%. Estimated remaining time: 1 seconds.
Computing permutation importance.. Progress: 95%. Estimated remaining time: 1 seconds.
boruta_signif <- names(boruta_output$finalDecision[boruta_output$finalDecision %in% c("Confirmed", "Tentative")])  # collect Confirmed and Tentative variables
print(boruta_signif)  # significant variables
 [1] "TT_SinOut_SemestresEstudiadosAcum"                
 [2] "TT_SinOut_CantCursosLlevadosAcum"                 
 [3] "TT_SinOut_CursosLlevadosFueraCarreraAcum"         
 [4] "TT_SinOut_AvgSinAplzAcum"                         
 [5] "TT_SinOut_AvgConAplzAcum"                         
 [6] "TT_SinOut_CantCursosAplzAcum"                     
 [7] "TT_SinOut_SumCredTeoAcum"                         
 [8] "TT_SinOut_SumCredPraAcum"                         
 [9] "TT_SinOut_edad"                                   
[10] "TT_SinOut_AvgVezMatriAcum"                        
[11] "TT_SinOut_ANIO_INGRESO"                           
[12] "TT_SinOut_CantCursosAnulados"                     
[13] "TT_SinOut_ProbabDesercion"                        
[14] "D_SEXO_F"                                         
[15] "D_MODALIDAD_INGRESO_DeportistaDestacado"          
[16] "D_MODALIDAD_INGRESO_TercerExamenGeneral"          
[17] "D_MODALIDAD_INGRESO_TercerExamenGeneral.1"        
[18] "D_MODALIDAD_INGRESO_TituladoenInstitutoSuperior"  
[19] "D_MODALIDAD_INGRESO_TrasladoExternoNacionalII"    
[20] "D_MODALIDAD_INGRESO_TrasladoInternoII"            
[21] "D_UBIG_NACIMIENTO_AREQUIPA"                       
[22] "D_UBIG_NACIMIENTO_CAMANA"                         
[23] "D_UBIG_NACIMIENTO_LIMA"                           
[24] "D_UBIG_NACIMIENTO_PAUCARPATA"                     
[25] "D_UBIG_NACIMIENTO_QUILLABAMBA"                    
[26] "D_UBIG_RESIDENCIA_ALTOSELVAALEGRE"                
[27] "D_UBIG_RESIDENCIA_JACOBOHUNTER"                   
[28] "D_UBIG_RESIDENCIA_MOLLENDO"                       
[29] "D_UBIG_RESIDENCIA_MOQUEGUA"                       
[30] "D_UBIG_RESIDENCIA_YANAHUARA"                      
[31] "D_TIPO_VIVIENDA_DEPARTAMENTO"                     
[32] "D_TIPO_VIVIENDA_VECINDAD"                         
[33] "D_GradoInstruccionPapa_DRMAGISTERALTAESPECIALIDAD"
[34] "D_GradoInstruccionPapa_NIVELEDUCATIVO"            
[35] "D_GradoInstruccionPapa_SECUNDARIACOMPLETA"        
[36] "D_GradoInstruccionPapa_SUPERIORTECNICAINCOMPLETA" 
[37] "D_GradoInstruccionPapa_SUPERIORUNIVCOMPLETA"      
[38] "D_ProfesionPapa_ABOGADO"                          
[39] "D_ProfesionPapa_INGENIEROCIVIL"                   
[40] "D_ProfesionPapa_INGENIERODESISTEMAS"              
[41] "D_ProfesionPapa_INGENIEROMECANICO"                
[42] "D_ProfesionPapa_PROFESION"                        
[43] "D_OcupacionPapa_EMPLEADO"                         
[44] "D_OcupacionPapa_OCUPACION"                        
[45] "D_GradoInstruccionMama_GRADUADOUNIVERSITARIO"     
[46] "D_GradoInstruccionMama_NINGUNO"                   
[47] "D_GradoInstruccionMama_NIVELEDUCATIVO"            
[48] "D_GradoInstruccionMama_SECUNDARIACOMPLETA"        
[49] "D_ProfesionMama_ADMINISTRADORDEEMPRESAS"          
[50] "D_ProfesionMama_OBSTETRIZ"                        
[51] "D_ProfesionMama_OTROS"                            
[52] "D_ProfesionMama_PROFESION"                        
[53] "D_ProfesionMama_PROFESOR"                         
[54] "D_OcupacionMama_AMADECASA"                        
[55] "D_OcupacionMama_EMPLEADO"                         
[56] "D_OcupacionMama_FFPOLICIALES"                     
[57] "D_OcupacionMama_OBRERO"                           
[58] "D_OcupacionMama_OCUPACION"                        
[59] "D_OcupacionMama_OTRO"                             
plot(boruta_output,
    cex.axis=.7,
    las=2,
    xlab="",
    main="Importancia de variables")  # plot variable importance

#DataModeloFinal <- boruta_signif #Data con variables finales a modelar


###########################################################
#  RANDOM FOREST CON CARET Y VALIDACIÓN CRUZADA REPETIDA  #
###########################################################

# Relación de parámetros a ajustar de un modelo
modelLookup(model='rf')
# Aplicando el modelo con Validación Cruzada Repetida 
ctrl <- trainControl(method="cv", number=10, repeats = 1)#repeatedcv

set.seed(696)
modelo_rf_smote <- train(DESERTOR ~ ., 
                   data = smote_train, 
                   method = "rf", 
                   trControl = ctrl, 
                   #tuneLength = 20,
                   metric="Accuracy")
modelo_rf_smote
Random Forest 

22764 samples
  194 predictor
    2 classes: 'NO', 'SI' 

No pre-processing
Resampling: Cross-Validated (10 fold) 
Summary of sample sizes: 20488, 20488, 20488, 20486, 20487, 20488, ... 
Resampling results across tuning parameters:

  mtry  Accuracy   Kappa    
    2   0.9157883  0.8315764
   98   0.9318666  0.8637331
  194   0.9299778  0.8599553

Accuracy was used to select the optimal model using the largest value.
The final value used for the model was mtry = 98.
#plot(modelo_rf_smote)
varImp(modelo_rf_smote)
rf variable importance

  only 20 most important variables shown (out of 194)

                                          Overall
TT_SinOut_ProbabDesercion                 100.000
D_GradoInstruccionMama_SECUNDARIACOMPLETA  83.768
TT_SinOut_AvgConAplzAcum                   41.227
TT_SinOut_SumCredTeoAcum                   37.738
D_UBIG_NACIMIENTO_CAMANA                   27.037
TT_SinOut_AvgSinAplzAcum                   21.549
TT_SinOut_CantCursosAplzAcum               17.049
D_OcupacionPapa_DISCAPACITADO              16.631
D_UBIG_RESIDENCIA_CAMANA                   16.552
TT_SinOut_SemestresEstudiadosAcum          16.468
TT_SinOut_CantCursosLlevadosAcum           13.941
TT_SinOut_SumCredPraAcum                   10.872
TT_SinOut_CursosLlevadosFueraCarreraAcum    7.901
D_ProfesionPapa_ODONTOLOGO                  7.060
D_OcupacionPapa_EMPLEADO                    6.213
D_OcupacionMama_AMADECASA                   6.118
TT_SinOut_edad                              5.964
TT_SinOut_CantCursosAnulados                5.454
D_SEXO_F                                    5.264
TT_SinOut_ANIO_INGRESO                      5.197
### Entrenamos 2 modelos adicionales con la data de UNDER y OVER
set.seed(696)
modelo_rf_under <- train(DESERTOR ~ ., data = under_train, method = "rf", trControl = ctrl, metric="Accuracy")
modelo_rf_over  <- train(DESERTOR ~ ., data = over_train, method = "rf", trControl = ctrl, metric="Accuracy")

Indicadores del Modelo

########################################
######## INDICADORES DEL MODELO ########
########################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbRf_smote <- predict(modelo_rf_smote,smote_train,type="prob") %>% as.data.frame()
colnames(ProbRf_smote) <- c("ProbRf_NO","ProbRf_SI")
head(ProbRf_smote,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredRf_Smote <- as.factor(ifelse(ProbRf_smote$ProbRf_SI >= 0.5, "SI", "NO")) 
levels(ClasePredRf_Smote) <- c("NO","SI")

#Data balanceada con la probabilidad y clase predicha
DataRf_smote_train <- cbind(smote_train,ProbRf_smote,ClasePredRf_Smote)

# Prediciendo la probabilidad en la muestra de entrenamiento desbalaceada
ProbRf_Training <- predict(modelo_rf_smote,Training,type="prob") %>% as.data.frame()
colnames(ProbRf_Training) <- c("ProbRf_NO","ProbRf_SI")
head(ProbRf_Training)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredRf_Training <- as.factor(ifelse(ProbRf_Training$ProbRf_SI >= 0.5, 1, 0)) 
levels(ClasePredRf_Training) <- c("NO","SI")

#Data desbalanceada con la probabilidad y clase predicha
DataRf_Training <- cbind(Training,ProbRf_Training,ClasePredRf_Training)


##########################
# Tabla de clasificación #
##########################


# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_Rf_Smote <- mean(ClasePredRf_Smote==smote_train$DESERTOR)
Accuracy_Rf_Smote
[1] 1
# Calcular el % de acierto (accuracy) en la muestra desbalanceada
Accuracy_Rf_Train <- mean(ClasePredRf_Training==Training$DESERTOR)
Accuracy_Rf_Train
[1] 0.9804816
# Calcular el error de mala clasificación en la muestra balanceada
Error_Rf_Smote <- mean(ClasePredRf_Smote!=smote_train$DESERTOR)
Error_Rf_Smote 
[1] 0
# Calcular el error de mala clasificación en la muestra desbalanceada
Error_Rf_Train <- mean(ClasePredRf_Training!=Training$DESERTOR)
Error_Rf_Train 
[1] 0.01951836
#Cruce de clase real y predicha en la muestra balanceada
library(gmodels)
CrossTable(smote_train$DESERTOR,ClasePredRf_Smote,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  22764 

 
                     | ClasePredRf_Smote 
smote_train$DESERTOR |        NO |        SI | Row Total | 
---------------------|-----------|-----------|-----------|
                  NO |     11382 |         0 |     11382 | 
                     |     1.000 |     0.000 |     0.500 | 
---------------------|-----------|-----------|-----------|
                  SI |         0 |     11382 |     11382 | 
                     |     0.000 |     1.000 |     0.500 | 
---------------------|-----------|-----------|-----------|
        Column Total |     11382 |     11382 |     22764 | 
---------------------|-----------|-----------|-----------|

 
#Cruce de clase real y predicha en la muestra desbalanceada
library(gmodels)
CrossTable(Training$DESERTOR,ClasePredRf_Training,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  24541 

 
                  | ClasePredRf_Training 
Training$DESERTOR |        NO |        SI | Row Total | 
------------------|-----------|-----------|-----------|
               NO |     22165 |       479 |     22644 | 
                  |     0.979 |     0.021 |     0.923 | 
------------------|-----------|-----------|-----------|
               SI |         0 |      1897 |      1897 | 
                  |     0.000 |     1.000 |     0.077 | 
------------------|-----------|-----------|-----------|
     Column Total |     22165 |      2376 |     24541 | 
------------------|-----------|-----------|-----------|

 
#Matriz de confusión
library(caret)
caret::confusionMatrix(ClasePredRf_Smote,smote_train$DESERTOR,positive="SI") #Muestra balanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 11382     0
        SI     0 11382
                                     
               Accuracy : 1          
                 95% CI : (0.9998, 1)
    No Information Rate : 0.5        
    P-Value [Acc > NIR] : < 2.2e-16  
                                     
                  Kappa : 1          
                                     
 Mcnemar's Test P-Value : NA         
                                     
            Sensitivity : 1.0        
            Specificity : 1.0        
         Pos Pred Value : 1.0        
         Neg Pred Value : 1.0        
             Prevalence : 0.5        
         Detection Rate : 0.5        
   Detection Prevalence : 0.5        
      Balanced Accuracy : 1.0        
                                     
       'Positive' Class : SI         
                                     
caret::confusionMatrix(ClasePredRf_Training,Training$DESERTOR,positive="SI") #Muestra desbalanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 22165     0
        SI   479  1897
                                          
               Accuracy : 0.9805          
                 95% CI : (0.9787, 0.9822)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.8774          
                                          
 Mcnemar's Test P-Value : < 2.2e-16       
                                          
            Sensitivity : 1.00000         
            Specificity : 0.97885         
         Pos Pred Value : 0.79840         
         Neg Pred Value : 1.00000         
             Prevalence : 0.07730         
         Detection Rate : 0.07730         
   Detection Prevalence : 0.09682         
      Balanced Accuracy : 0.98942         
                                          
       'Positive' Class : SI              
                                          
#CURVAS DE ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Rf_Smote <- colAUC(ProbRf_smote$ProbRf_SI,smote_train$DESERTOR,plotROC = TRUE) #Muestra balanceada

#abline(0, 1,col="red") 

AUC_Rf_Train <- colAUC(ProbRf_Training$ProbRf_SI,Training$DESERTOR,plotROC = TRUE) #Muestra desbalanceada

#abline(0, 1,col="red") 


AUC_Rf_Smote #Devuelve el área bajo la curva en la muestra balanceada
          [,1]
NO vs. SI    1
AUC_Rf_Train #Devuelve el área bajo la curva en la muestra desbalanceada
               [,1]
NO vs. SI 0.9972239
#CURVAS DE ROC
# Usando el paquete pROC
library(pROC)

# Área bajo la curva
roc_modelo_rf_smote <- roc(smote_train$DESERTOR,ProbRf_smote$ProbRf_SI)
roc_modelo_rf_smote

Call:
roc.default(response = smote_train$DESERTOR, predictor = ProbRf_smote$ProbRf_SI)

Data: ProbRf_smote$ProbRf_SI in 11382 controls (smote_train$DESERTOR NO) < 11382 cases (smote_train$DESERTOR SI).
Area under the curve: 1
roc_modelo_rf_train <- roc(Training$DESERTOR,ProbRf_Training$ProbRf_SI)
roc_modelo_rf_train

Call:
roc.default(response = Training$DESERTOR, predictor = ProbRf_Training$ProbRf_SI)

Data: ProbRf_Training$ProbRf_SI in 22644 controls (Training$DESERTOR NO) < 1897 cases (Training$DESERTOR SI).
Area under the curve: 0.9972
#Puntos de corte muestra balanceada
PtosCorte_Smote <- data.frame(prob1=roc_modelo_rf_smote$thresholds,
                              sen1=roc_modelo_rf_smote$sensitivities,
                              esp1=roc_modelo_rf_smote$specificities)

#Puntos de corte muestra desbalanceada
PtosCorte_Train <- data.frame(prob2=roc_modelo_rf_train$thresholds,
                              sen2=roc_modelo_rf_train$sensitivities,
                              esp2=roc_modelo_rf_train$specificities)

# Punto de corte óptimo (mayor sensibilidad y especificidad) usando pROC
coords(roc_modelo_rf_smote, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
  threshold specificity sensitivity    accuracy 
       0.49        1.00        1.00        1.00 
coords(roc_modelo_rf_train, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
  threshold specificity sensitivity    accuracy 
  0.5910000   0.9887829   0.9989457   0.9895685 
coords(roc_modelo_rf_smote, "best")
  threshold specificity sensitivity 
       0.49        1.00        1.00 
coords(roc_modelo_rf_train, "best")
  threshold specificity sensitivity 
  0.5910000   0.9887829   0.9989457 
plot(roc_modelo_rf_smote,print.thres=T)

plot(roc_modelo_rf_train,print.thres=T)

######################################
######## EVALUCION DE MODELOS ######## 
######################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbRf_Test <- predict(modelo_rf_smote,Testing,type="prob") %>% as.data.frame()
colnames(ProbRf_Test) <- c("ProbRf_NO","ProbRf_SI")
head(ProbRf_Test,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredRf_Test <- as.factor(ifelse(ProbRf_Test$ProbRf_SI >=   0.595 , 1, 0))
levels(ClasePredRf_Test) <- c("NO","SI")

head(cbind(Testing,ProbRf_Test,ClasePredRf_Test),8)
# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_Rf_Test <- mean(ClasePredRf_Test==Testing$DESERTOR)
Accuracy_Rf_Test
[1] 0.9292504
#Matriz de confusión ... vamos a sacar las matrices para muestras de smote, under y over
library(caret)
cm_rf_smote <- caret::confusionMatrix(ClasePredRf_Test,Testing$DESERTOR,positive="SI") #Muestra balanceada
cm_rf_smote
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 10101   600
        SI   189   262
                                          
               Accuracy : 0.9293          
                 95% CI : (0.9243, 0.9339)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 0.004663        
                                          
                  Kappa : 0.3654          
                                          
 Mcnemar's Test P-Value : < 2.2e-16       
                                          
            Sensitivity : 0.30394         
            Specificity : 0.98163         
         Pos Pred Value : 0.58093         
         Neg Pred Value : 0.94393         
             Prevalence : 0.07730         
         Detection Rate : 0.02349         
   Detection Prevalence : 0.04044         
      Balanced Accuracy : 0.64279         
                                          
       'Positive' Class : SI              
                                          
cm_rf_under <- caret::confusionMatrix(predict(modelo_rf_under,Testing)
                                      ,Testing$DESERTOR,positive="SI") #Muestra under
cm_rf_under
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 8620  279
        SI 1670  583
                                          
               Accuracy : 0.8252          
                 95% CI : (0.8181, 0.8322)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.2956          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.67633         
            Specificity : 0.83771         
         Pos Pred Value : 0.25877         
         Neg Pred Value : 0.96865         
             Prevalence : 0.07730         
         Detection Rate : 0.05228         
   Detection Prevalence : 0.20203         
      Balanced Accuracy : 0.75702         
                                          
       'Positive' Class : SI              
                                          
cm_rf_over <- caret::confusionMatrix(predict(modelo_rf_under,Testing)
                                      ,Testing$DESERTOR,positive="SI") #Muestra over
cm_rf_over
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 8618  278
        SI 1672  584
                                         
               Accuracy : 0.8251         
                 95% CI : (0.818, 0.8322)
    No Information Rate : 0.9227         
    P-Value [Acc > NIR] : 1              
                                         
                  Kappa : 0.2958         
                                         
 Mcnemar's Test P-Value : <2e-16         
                                         
            Sensitivity : 0.67749        
            Specificity : 0.83751        
         Pos Pred Value : 0.25887        
         Neg Pred Value : 0.96875        
             Prevalence : 0.07730        
         Detection Rate : 0.05237        
   Detection Prevalence : 0.20230        
      Balanced Accuracy : 0.75750        
                                         
       'Positive' Class : SI             
                                         
# Calculando el estadístico KS
library(InformationValue)
ks_stat(Testing$DESERTOR,ProbRf_Test$ProbRf_SI,returnKSTable = T)
ks_stat(Testing$DESERTOR,ProbRf_Test$ProbRf_SI)
[1] 0.4217
# Graficando el estadístico KS 
ks_plot(Testing$DESERTOR,ProbRf_Test$ProbRf_SI)

#Curvas de ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Rf_Test <- colAUC(ProbRf_Test$ProbRf_SI,Testing$DESERTOR,plotROC = TRUE) #Muestra balanceada

#abline(0, 1,col="red") 
AUC_Rf_Test
              [,1]
NO vs. SI 0.786805
#Coeficiente de Gini
gini_test <-  2*AUC_Rf_Test -1 ; gini_test
             [,1]
NO vs. SI 0.57361

RAMDOM FOREST II

#####################################################################################################



###########################################################
#  RAMDOM FOREST OWN   #
###########################################################


library(caret)
library(randomForest)

set.seed(696)
modelo_RF_own_smote <- randomForest(DESERTOR ~ ., 
                        data = smote_train,
                    ntree = 500,
                    keep.forest = TRUE)
set.seed(696)
modelo_RF_own_under <- randomForest(DESERTOR ~ ., data = under_train, ntree = 1000, keep.forest = TRUE)
modelo_RF_own_over  <- randomForest(DESERTOR ~ ., data = over_train, ntree = 500, keep.forest = TRUE)

summary(modelo_RF_own_smote)
                Length Class  Mode     
call                5  -none- call     
type                1  -none- character
predicted       22764  factor numeric  
err.rate         1500  -none- numeric  
confusion           6  -none- numeric  
votes           45528  matrix numeric  
oob.times       22764  -none- numeric  
classes             2  -none- character
importance        194  -none- numeric  
importanceSD        0  -none- NULL     
localImportance     0  -none- NULL     
proximity           0  -none- NULL     
ntree               1  -none- numeric  
mtry                1  -none- numeric  
forest             14  -none- list     
y               22764  factor numeric  
test                0  -none- NULL     
inbag               0  -none- NULL     
terms               3  terms  call     
############

#pred <- predict(modelo_RF_own_smote, Testing, type = "class")
#tab <- table(Testing[,"DESERTOR"], pred, dnn= c("Actual", "Predicho"))
#caret::confusionMatrix(tab,positive="SI")

# library(ROCR)
# probs <- predict(modelo_RF_own_smote, Testing, type = "prob")
# head(probs)
# pred <- prediction(probs[,2], Testing[,"DESERTOR"])
# perf <- performance(pred, "tpr", "fpr")
# perf



########################################
######## INDICADORES DEL MODELO ########
########################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbRFO_smote <- predict(modelo_RF_own_smote,smote_train,type="prob") %>% as.data.frame()
colnames(ProbRFO_smote) <- c("ProbNb_NO","ProbNb_SI")
head(ProbRFO_smote,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredRFo_Smote <- as.factor(ifelse(ProbRFO_smote$ProbNb_SI >= 0.5, "SI", "NO")) 
levels(ClasePredRFo_Smote) <- c("NO","SI")

#Data balanceada con la probabilidad y clase predicha
DataRFo_smote_train <- cbind(smote_train,ProbRFO_smote,ClasePredRFo_Smote)

# Prediciendo la probabilidad en la muestra de entrenamiento desbalaceada
ProbRFo_Training <- predict(modelo_RF_own_smote,Training,type="prob") %>% as.data.frame()
colnames(ProbRFo_Training) <- c("ProbNb_NO","ProbNb_SI")
head(ProbRFo_Training)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredRFo_Training <- as.factor(ifelse(ProbRFo_Training$ProbNb_SI >= 0.5, 1, 0))
levels(ClasePredRFo_Training) <- c("NO","SI")

#Data desbalanceada con la probabilidad y clase predicha
DataNb_Training <- cbind(Training,ProbRFo_Training,ClasePredRFo_Training)


##########################
# Tabla de clasificación #
##########################


# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_RFo_Smote <- mean(ClasePredRFo_Smote==smote_train$DESERTOR)
Accuracy_RFo_Smote
[1] 0.9984625
# Calcular el % de acierto (accuracy) en la muestra desbalanceada
Accuracy_RFo_Train <- mean(ClasePredRFo_Training==Training$DESERTOR)
Accuracy_RFo_Train
[1] 0.989324
# Calcular el error de mala clasificación en la muestra balanceada
Error_RFo_Smote <- mean(ClasePredRFo_Smote!=smote_train$DESERTOR)
Error_RFo_Smote 
[1] 0.001537515
# Calcular el error de mala clasificación en la muestra desbalanceada
Error_RFo_Train <- mean(ClasePredRFo_Training!=Training$DESERTOR)
Error_RFo_Train 
[1] 0.01067601
#Cruce de clase real y predicha en la muestra balanceada
library(gmodels)
CrossTable(smote_train$DESERTOR,ClasePredRFo_Smote,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  22764 

 
                     | ClasePredRFo_Smote 
smote_train$DESERTOR |        NO |        SI | Row Total | 
---------------------|-----------|-----------|-----------|
                  NO |     11382 |         0 |     11382 | 
                     |     1.000 |     0.000 |     0.500 | 
---------------------|-----------|-----------|-----------|
                  SI |        35 |     11347 |     11382 | 
                     |     0.003 |     0.997 |     0.500 | 
---------------------|-----------|-----------|-----------|
        Column Total |     11417 |     11347 |     22764 | 
---------------------|-----------|-----------|-----------|

 
#Cruce de clase real y predicha en la muestra desbalanceada
library(gmodels)
CrossTable(Training$DESERTOR,ClasePredRFo_Training,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  24541 

 
                  | ClasePredRFo_Training 
Training$DESERTOR |        NO |        SI | Row Total | 
------------------|-----------|-----------|-----------|
               NO |     22417 |       227 |     22644 | 
                  |     0.990 |     0.010 |     0.923 | 
------------------|-----------|-----------|-----------|
               SI |        35 |      1862 |      1897 | 
                  |     0.018 |     0.982 |     0.077 | 
------------------|-----------|-----------|-----------|
     Column Total |     22452 |      2089 |     24541 | 
------------------|-----------|-----------|-----------|

 
#Matriz de confusión
library(caret)
caret::confusionMatrix(ClasePredRFo_Smote,smote_train$DESERTOR,positive="SI") #Muestra balanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 11382    35
        SI     0 11347
                                          
               Accuracy : 0.9985          
                 95% CI : (0.9979, 0.9989)
    No Information Rate : 0.5             
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.9969          
                                          
 Mcnemar's Test P-Value : 9.081e-09       
                                          
            Sensitivity : 0.9969          
            Specificity : 1.0000          
         Pos Pred Value : 1.0000          
         Neg Pred Value : 0.9969          
             Prevalence : 0.5000          
         Detection Rate : 0.4985          
   Detection Prevalence : 0.4985          
      Balanced Accuracy : 0.9985          
                                          
       'Positive' Class : SI              
                                          
caret::confusionMatrix(ClasePredRFo_Training,Training$DESERTOR,positive="SI") #Muestra desbalanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 22417    35
        SI   227  1862
                                         
               Accuracy : 0.9893         
                 95% CI : (0.988, 0.9906)
    No Information Rate : 0.9227         
    P-Value [Acc > NIR] : < 2.2e-16      
                                         
                  Kappa : 0.9285         
                                         
 Mcnemar's Test P-Value : < 2.2e-16      
                                         
            Sensitivity : 0.98155        
            Specificity : 0.98998        
         Pos Pred Value : 0.89134        
         Neg Pred Value : 0.99844        
             Prevalence : 0.07730        
         Detection Rate : 0.07587        
   Detection Prevalence : 0.08512        
      Balanced Accuracy : 0.98576        
                                         
       'Positive' Class : SI             
                                         
#CURVAS DE ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Nb_Smote <- colAUC(ProbRFO_smote$ProbNb_SI,smote_train$DESERTOR,plotROC = TRUE) #Muestra balanceada

#abline(0, 1,col="red") 

AUC_Nb_Train <- colAUC(ProbRFo_Training$ProbNb_SI,Training$DESERTOR,plotROC = TRUE) #Muestra desbalanceada

#abline(0, 1,col="red") 


AUC_Nb_Smote #Devuelve el área bajo la curva en la muestra balanceada
               [,1]
NO vs. SI 0.9999998
AUC_Nb_Train #Devuelve el área bajo la curva en la muestra desbalanceada
               [,1]
NO vs. SI 0.9980956
#CURVAS DE ROC
# Usando el paquete pROC
library(pROC)

# Área bajo la curva
roc_modelo_RF_own_smote <- roc(smote_train$DESERTOR,ProbRFO_smote$ProbNb_SI)
roc_modelo_RF_own_smote

Call:
roc.default(response = smote_train$DESERTOR, predictor = ProbRFO_smote$ProbNb_SI)

Data: ProbRFO_smote$ProbNb_SI in 11382 controls (smote_train$DESERTOR NO) < 11382 cases (smote_train$DESERTOR SI).
Area under the curve: 1
roc_modelo_RF_own_train <- roc(Training$DESERTOR,ProbRFo_Training$ProbNb_SI)
roc_modelo_RF_own_train

Call:
roc.default(response = Training$DESERTOR, predictor = ProbRFo_Training$ProbNb_SI)

Data: ProbRFo_Training$ProbNb_SI in 22644 controls (Training$DESERTOR NO) < 1897 cases (Training$DESERTOR SI).
Area under the curve: 0.9981
#Puntos de corte muestra balanceada
PtosCorte_Smote <- data.frame(prob1=roc_modelo_RF_own_smote$thresholds,
                              sen1=roc_modelo_RF_own_smote$sensitivities,
                              esp1=roc_modelo_RF_own_smote$specificities)

#Puntos de corte muestra desbalanceada
PtosCorte_Train <- data.frame(prob2=roc_modelo_RF_own_train$thresholds,
                              sen2=roc_modelo_RF_own_train$sensitivities,
                              esp2=roc_modelo_RF_own_train$specificities)

# Punto de corte óptimo (mayor sensibilidad y especificidad) usando pROC
coords(roc_modelo_RF_own_smote, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
                 best      best
threshold   0.3970000 0.4170000
specificity 0.9997364 0.9998243
sensitivity 1.0000000 0.9999121
accuracy    0.9998682 0.9998682
coords(roc_modelo_RF_own_train, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
  threshold specificity sensitivity    accuracy 
  0.4590000   0.9850733   0.9952557   0.9858604 
coords(roc_modelo_RF_own_smote, "best")
                 best      best
threshold   0.3970000 0.4170000
specificity 0.9997364 0.9998243
sensitivity 1.0000000 0.9999121
coords(roc_modelo_RF_own_train, "best")
  threshold specificity sensitivity 
  0.4590000   0.9850733   0.9952557 
plot(roc_modelo_RF_own_smote,print.thres=T)

plot(roc_modelo_RF_own_train,print.thres=T)

######################################
######## EVALUCION DE MODELOS ######## 
######################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbRFo_Test <- predict(modelo_RF_own_smote,Testing,type="prob") %>% as.data.frame()
colnames(ProbRFo_Test) <- c("ProbNb_NO","ProbNb_SI")
head(ProbRFo_Test,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredRFo_Test <- as.factor(ifelse(ProbRFo_Test$ProbNb_SI >= 0.437, 1, 0))
levels(ClasePredRFo_Test) <- c("NO","SI")

head(cbind(Testing,ProbRFo_Test,ClasePredRFo_Test),8)
# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_Nb_Test <- mean(ClasePredRFo_Test==Testing$DESERTOR)
Accuracy_Nb_Test
[1] 0.9381277
#Matriz de confusión
library(caret)
cm_RF_own_smote<- caret::confusionMatrix(ClasePredRFo_Test,Testing$DESERTOR,positive="SI") #Muestra balanceada
cm_RF_own_smote
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 10132   532
        SI   158   330
                                          
               Accuracy : 0.9381          
                 95% CI : (0.9335, 0.9425)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1.711e-10       
                                          
                  Kappa : 0.4586          
                                          
 Mcnemar's Test P-Value : < 2.2e-16       
                                          
            Sensitivity : 0.38283         
            Specificity : 0.98465         
         Pos Pred Value : 0.67623         
         Neg Pred Value : 0.95011         
             Prevalence : 0.07730         
         Detection Rate : 0.02959         
   Detection Prevalence : 0.04376         
      Balanced Accuracy : 0.68374         
                                          
       'Positive' Class : SI              
                                          
cm_RF_own_under<- caret::confusionMatrix(predict(modelo_RF_own_under,Testing)
                                         ,Testing$DESERTOR,positive="SI") #Muestra under
cm_RF_own_under
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 8552  273
        SI 1738  589
                                          
               Accuracy : 0.8197          
                 95% CI : (0.8124, 0.8268)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.2892          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.68329         
            Specificity : 0.83110         
         Pos Pred Value : 0.25312         
         Neg Pred Value : 0.96907         
             Prevalence : 0.07730         
         Detection Rate : 0.05282         
   Detection Prevalence : 0.20866         
      Balanced Accuracy : 0.75720         
                                          
       'Positive' Class : SI              
                                          
cm_RF_own_over<- caret::confusionMatrix(predict(modelo_RF_own_over,Testing)
                                         ,Testing$DESERTOR,positive="SI") #Muestra over
cm_RF_own_over
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 10188   575
        SI   102   287
                                          
               Accuracy : 0.9393          
                 95% CI : (0.9347, 0.9437)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 6.313e-12       
                                          
                  Kappa : 0.4315          
                                          
 Mcnemar's Test P-Value : < 2.2e-16       
                                          
            Sensitivity : 0.33295         
            Specificity : 0.99009         
         Pos Pred Value : 0.73779         
         Neg Pred Value : 0.94658         
             Prevalence : 0.07730         
         Detection Rate : 0.02574         
   Detection Prevalence : 0.03488         
      Balanced Accuracy : 0.66152         
                                          
       'Positive' Class : SI              
                                          
# Calculando el estadístico KS
library(InformationValue)
ks_stat(Testing$DESERTOR,ProbRFo_Test$ProbNb_SI,returnKSTable = T)
ks_stat(Testing$DESERTOR,ProbRFo_Test$ProbNb_SI)
[1] 0.4622
# Graficando el estadístico KS 
ks_plot(Testing$DESERTOR,ProbRFo_Test$ProbNb_SI)

#Curvas de ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Nb_Test <- colAUC(ProbRFo_Test$ProbNb_SI,Testing$DESERTOR,plotROC = TRUE) #Muestra balanceada

#abline(0, 1,col="red") 
AUC_Nb_Test
              [,1]
NO vs. SI 0.804003
#Coeficiente de Gini
gini_test <-  2*AUC_Nb_Test -1 ; gini_test
              [,1]
NO vs. SI 0.608006
#####################################################################################################

NAIVE BAYES

#####################################################################################################



###########################################################
#  NAIBBY BAYES CON CARET    #
###########################################################


library(e1071)
set.seed(696)
modelo_Nb_smote <- naiveBayes(DESERTOR ~ ., 
                        data = smote_train,
                        probability = TRUE)
modelo_Nb_under <- naiveBayes(DESERTOR ~ ., data = under_train)
modelo_Nb_over  <- naiveBayes(DESERTOR ~ ., data = over_train)

summary(modelo_Nb_smote)
          Length Class  Mode     
apriori     2    table  numeric  
tables    194    -none- list     
levels      2    -none- character
isnumeric 194    -none- logical  
call        5    -none- call     
########################################
######## INDICADORES DEL MODELO ########
########################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbNb_smote <- predict(modelo_Nb_smote,smote_train,type="raw") %>% as.data.frame()
colnames(ProbNb_smote) <- c("ProbNb_NO","ProbNb_SI")
head(ProbNb_smote,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredNb_Smote <- as.factor(ifelse(ProbNb_smote$ProbNb_SI >= 0.5, "SI", "NO")) 
levels(ClasePredNb_Smote) <- c("NO","SI")

#Data balanceada con la probabilidad y clase predicha
DataNb_smote_train <- cbind(smote_train,ProbNb_smote,ClasePredNb_Smote)

# Prediciendo la probabilidad en la muestra de entrenamiento desbalaceada
ProbNb_Training <- predict(modelo_Nb_smote,Training,type="raw") %>% as.data.frame()
colnames(ProbNb_Training) <- c("ProbNb_NO","ProbNb_SI")
head(ProbNb_Training)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredNb_Training <- as.factor(ifelse(ProbNb_Training$ProbNb_SI >= 0.5, 1, 0))
levels(ClasePredNb_Training) <- c("NO","SI")

#Data desbalanceada con la probabilidad y clase predicha
DataNb_Training <- cbind(Training,ProbNb_Training,ClasePredNb_Training)


##########################
# Tabla de clasificación #
##########################


# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_Nb_Smote <- mean(ClasePredNb_Smote==smote_train$DESERTOR)
Accuracy_Nb_Smote
[1] 0.645449
# Calcular el % de acierto (accuracy) en la muestra desbalanceada
Accuracy_Nb_Train <- mean(ClasePredNb_Training==Training$DESERTOR)
Accuracy_Nb_Train
[1] 0.4281814
# Calcular el error de mala clasificación en la muestra balanceada
Error_Nb_Smote <- mean(ClasePredNb_Smote!=smote_train$DESERTOR)
Error_Nb_Smote 
[1] 0.354551
# Calcular el error de mala clasificación en la muestra desbalanceada
Error_Nb_Train <- mean(ClasePredNb_Training!=Training$DESERTOR)
Error_Nb_Train 
[1] 0.5718186
#Cruce de clase real y predicha en la muestra balanceada
library(gmodels)
CrossTable(smote_train$DESERTOR,ClasePredNb_Smote,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  22764 

 
                     | ClasePredNb_Smote 
smote_train$DESERTOR |        NO |        SI | Row Total | 
---------------------|-----------|-----------|-----------|
                  NO |      4692 |      6690 |     11382 | 
                     |     0.412 |     0.588 |     0.500 | 
---------------------|-----------|-----------|-----------|
                  SI |      1381 |     10001 |     11382 | 
                     |     0.121 |     0.879 |     0.500 | 
---------------------|-----------|-----------|-----------|
        Column Total |      6073 |     16691 |     22764 | 
---------------------|-----------|-----------|-----------|

 
#Cruce de clase real y predicha en la muestra desbalanceada
library(gmodels)
CrossTable(Training$DESERTOR,ClasePredNb_Training,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  24541 

 
                  | ClasePredNb_Training 
Training$DESERTOR |        NO |        SI | Row Total | 
------------------|-----------|-----------|-----------|
               NO |      9304 |     13340 |     22644 | 
                  |     0.411 |     0.589 |     0.923 | 
------------------|-----------|-----------|-----------|
               SI |       693 |      1204 |      1897 | 
                  |     0.365 |     0.635 |     0.077 | 
------------------|-----------|-----------|-----------|
     Column Total |      9997 |     14544 |     24541 | 
------------------|-----------|-----------|-----------|

 
#Matriz de confusión
library(caret)
caret::confusionMatrix(ClasePredNb_Smote,smote_train$DESERTOR,positive="SI") #Muestra balanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO  4692  1381
        SI  6690 10001
                                          
               Accuracy : 0.6454          
                 95% CI : (0.6392, 0.6517)
    No Information Rate : 0.5             
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.2909          
                                          
 Mcnemar's Test P-Value : < 2.2e-16       
                                          
            Sensitivity : 0.8787          
            Specificity : 0.4122          
         Pos Pred Value : 0.5992          
         Neg Pred Value : 0.7726          
             Prevalence : 0.5000          
         Detection Rate : 0.4393          
   Detection Prevalence : 0.7332          
      Balanced Accuracy : 0.6454          
                                          
       'Positive' Class : SI              
                                          
caret::confusionMatrix(ClasePredNb_Training,Training$DESERTOR,positive="SI") #Muestra desbalanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO  9304   693
        SI 13340  1204
                                         
               Accuracy : 0.4282         
                 95% CI : (0.422, 0.4344)
    No Information Rate : 0.9227         
    P-Value [Acc > NIR] : 1              
                                         
                  Kappa : 0.0112         
                                         
 Mcnemar's Test P-Value : <2e-16         
                                         
            Sensitivity : 0.63469        
            Specificity : 0.41088        
         Pos Pred Value : 0.08278        
         Neg Pred Value : 0.93068        
             Prevalence : 0.07730        
         Detection Rate : 0.04906        
   Detection Prevalence : 0.59264        
      Balanced Accuracy : 0.52278        
                                         
       'Positive' Class : SI             
                                         
#CURVAS DE ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Nb_Smote <- colAUC(ProbNb_smote$ProbNb_SI,smote_train$DESERTOR,plotROC = TRUE) #Muestra balanceada
abline(0, 1,col="red") 

AUC_Nb_Train <- colAUC(ProbNb_Training$ProbNb_SI,Training$DESERTOR,plotROC = TRUE) #Muestra desbalanceada
abline(0, 1,col="red") 

AUC_Nb_Smote #Devuelve el área bajo la curva en la muestra balanceada
               [,1]
NO vs. SI 0.7404039
AUC_Nb_Train #Devuelve el área bajo la curva en la muestra desbalanceada
               [,1]
NO vs. SI 0.5342359
#CURVAS DE ROC
# Usando el paquete pROC
library(pROC)

# Área bajo la curva
roc_modelo_Nb_smote <- roc(smote_train$DESERTOR,ProbNb_smote$ProbNb_SI)
roc_modelo_Nb_smote

Call:
roc.default(response = smote_train$DESERTOR, predictor = ProbNb_smote$ProbNb_SI)

Data: ProbNb_smote$ProbNb_SI in 11382 controls (smote_train$DESERTOR NO) < 11382 cases (smote_train$DESERTOR SI).
Area under the curve: 0.7404
roc_modelo_Nb_train <- roc(Training$DESERTOR,ProbNb_Training$ProbNb_SI)
roc_modelo_Nb_train

Call:
roc.default(response = Training$DESERTOR, predictor = ProbNb_Training$ProbNb_SI)

Data: ProbNb_Training$ProbNb_SI in 22644 controls (Training$DESERTOR NO) < 1897 cases (Training$DESERTOR SI).
Area under the curve: 0.5342
#Puntos de corte muestra balanceada
PtosCorte_Smote <- data.frame(prob1=roc_modelo_Nb_smote$thresholds,
                              sen1=roc_modelo_Nb_smote$sensitivities,
                              esp1=roc_modelo_Nb_smote$specificities)

#Puntos de corte muestra desbalanceada
PtosCorte_Train <- data.frame(prob2=roc_modelo_Nb_train$thresholds,
                              sen2=roc_modelo_Nb_train$sensitivities,
                              esp2=roc_modelo_Nb_train$specificities)

# Punto de corte óptimo (mayor sensibilidad y especificidad) usando pROC
coords(roc_modelo_Nb_smote, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
  threshold specificity sensitivity    accuracy 
  1.0000000   0.7068178   0.7490775   0.7279476 
coords(roc_modelo_Nb_train, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
   threshold  specificity  sensitivity     accuracy 
1.777951e-11 2.913796e-01 7.622562e-01 3.277780e-01 
coords(roc_modelo_Nb_smote, "best")
  threshold specificity sensitivity 
  1.0000000   0.7068178   0.7490775 
coords(roc_modelo_Nb_train, "best")
   threshold  specificity  sensitivity 
1.777951e-11 2.913796e-01 7.622562e-01 
plot(roc_modelo_Nb_smote,print.thres=T)

plot(roc_modelo_Nb_train,print.thres=T)

######################################
######## EVALUCION DE MODELOS ######## 
######################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbNb_Test <- predict(modelo_Nb_smote,Testing,type="raw") %>% as.data.frame()
colnames(ProbNb_Test) <- c("ProbNb_NO","ProbNb_SI")
head(ProbNb_Test,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredNb_Test <- as.factor(ifelse(ProbNb_Test$ProbNb_SI >= 0.5, 1, 0))
levels(ClasePredNb_Test) <- c("NO","SI")

head(cbind(Testing,ProbNb_Test,ClasePredNb_Test),8)
# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_Nb_Test <- mean(ClasePredNb_Test==Testing$DESERTOR)
Accuracy_Nb_Test
[1] 0.5037661
#Matriz de confusión
library(caret)
cm_Nb_smote<- caret::confusionMatrix(ClasePredNb_Test,Testing$DESERTOR,positive="SI") #Muestra balanceada
cm_Nb_smote
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 5155  399
        SI 5135  463
                                          
               Accuracy : 0.5038          
                 95% CI : (0.4944, 0.5131)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.0108          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.53712         
            Specificity : 0.50097         
         Pos Pred Value : 0.08271         
         Neg Pred Value : 0.92816         
             Prevalence : 0.07730         
         Detection Rate : 0.04152         
   Detection Prevalence : 0.50197         
      Balanced Accuracy : 0.51905         
                                          
       'Positive' Class : SI              
                                          
cm_Nb_under<- caret::confusionMatrix(predict(modelo_Nb_under,Testing),Testing$DESERTOR,positive="SI") #Muestra under
cm_Nb_under
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 4953  239
        SI 5337  623
                                          
               Accuracy : 0.5             
                 95% CI : (0.4907, 0.5093)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.055           
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.72274         
            Specificity : 0.48134         
         Pos Pred Value : 0.10453         
         Neg Pred Value : 0.95397         
             Prevalence : 0.07730         
         Detection Rate : 0.05586         
   Detection Prevalence : 0.53443         
      Balanced Accuracy : 0.60204         
                                          
       'Positive' Class : SI              
                                          
cm_Nb_over<- caret::confusionMatrix(predict(modelo_Nb_over,Testing),Testing$DESERTOR,positive="SI") #Muestra Over
cm_Nb_over
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 1357   81
        SI 8933  781
                                          
               Accuracy : 0.1917          
                 95% CI : (0.1844, 0.1991)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.0066          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.90603         
            Specificity : 0.13188         
         Pos Pred Value : 0.08040         
         Neg Pred Value : 0.94367         
             Prevalence : 0.07730         
         Detection Rate : 0.07003         
   Detection Prevalence : 0.87105         
      Balanced Accuracy : 0.51895         
                                          
       'Positive' Class : SI              
                                          
# Calculando el estadístico KS
library(InformationValue)
ks_stat(Testing$DESERTOR,ProbNb_Test$ProbNb_SI,returnKSTable = T)
ks_stat(Testing$DESERTOR,ProbNb_Test$ProbNb_SI)
[1] 0.0622
# Graficando el estadístico KS 
ks_plot(Testing$DESERTOR,ProbNb_Test$ProbNb_SI)

#Curvas de ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Nb_Test <- colAUC(ProbNb_Test$ProbNb_SI,Testing$DESERTOR,plotROC = TRUE) #Muestra balanceada
abline(0, 1,col="red") 

AUC_Nb_Test
               [,1]
NO vs. SI 0.5310909
#Coeficiente de Gini
gini_test <-  2*AUC_Nb_Test -1 ; gini_test
                [,1]
NO vs. SI 0.06218188
#####################################################################################################

ARBOLES DE DECISIÓN - BAGGING

#####################################################################################################



####################################################
#  BAGGING CON CARET Y VALIDACIÓN CRUZADA REPETIDA #
####################################################

# Relación de parámetros a ajustar de un modelo
modelLookup(model='treebag')
# Aplicando el modelo con Validación Cruzada Repetida 
ctrl <- trainControl(method="cv", repeats = 1, number=10)#repeatedcv

set.seed(696)
modelo_TreeBagg_smote <- train(DESERTOR ~ ., 
                    data = smote_train, 
                    method = "treebag",
                    trControl = ctrl, 
                    #tuneLength = 20, 
                    metric="se")#Accuracy
modelo_TreeBagg_under <- caret::train(DESERTOR ~ ., data = under_train,method = "treebag",trControl = ctrl, 
                    #tuneLength = 20, 
                    metric="se")
modelo_TreeBagg_over <- caret::train(DESERTOR ~ ., data = over_train,method = "treebag",trControl = ctrl, 
                    #tuneLength = 20, 
                    metric="se")
modelo_TreeBagg_smote
Bagged CART 

22764 samples
  194 predictor
    2 classes: 'NO', 'SI' 

No pre-processing
Resampling: Cross-Validated (10 fold) 
Summary of sample sizes: 20488, 20488, 20488, 20486, 20487, 20488, ... 
Resampling results:

  Accuracy   Kappa    
  0.9279569  0.8559137
#plot(modelo_TreeBagg_smote)
varImp(modelo_TreeBagg_smote)
treebag variable importance

  only 20 most important variables shown (out of 194)

                                          Overall
TT_SinOut_AvgConAplzAcum                  100.000
D_GradoInstruccionMama_SECUNDARIACOMPLETA  92.695
TT_SinOut_AvgSinAplzAcum                   62.368
TT_SinOut_ProbabDesercion                  47.464
TT_SinOut_SemestresEstudiadosAcum          37.470
TT_SinOut_SumCredTeoAcum                   36.308
TT_SinOut_CantCursosLlevadosAcum           30.250
TT_SinOut_CursosLlevadosFueraCarreraAcum   27.959
D_OcupacionPapa_DISCAPACITADO              20.064
D_UBIG_NACIMIENTO_CAMANA                   19.212
TT_SinOut_CantCursosAnulados               15.961
TT_SinOut_CantCursosAplzAcum               11.690
TT_SinOut_SumCredPraAcum                   11.277
D_GradoInstruccionPapa_PRIMARIAINCOMPLETA   9.839
D_ProfesionPapa_AGRONOMOYAFINES             9.816
D_MODALIDAD_INGRESO_SegundoExamenGeneral    8.756
TT_SinOut_edad                              6.059
TT_SinOut_ANIO_INGRESO                      5.859
TT_SinOut_AvgVezMatriAcum                   5.106
D_GradoInstruccionPapa_SECUNDARIACOMPLETA   3.997
########################################
######## INDICADORES DEL MODELO ########
########################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbBag_smote <- predict(modelo_TreeBagg_smote,smote_train,type="prob") %>% as.data.frame()
colnames(ProbBag_smote) <- c("ProbBag_NO","ProbBag_SI")
head(ProbBag_smote,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredBag_Smote <- as.factor(ifelse(ProbBag_smote$ProbBag_SI >= 0.5, "SI", "NO")) 
levels(ClasePredBag_Smote) <- c("NO","SI")

#Data balanceada con la probabilidad y clase predicha
DataBag_smote_train <- cbind(smote_train,ProbBag_smote,ClasePredBag_Smote)

# Prediciendo la probabilidad en la muestra de entrenamiento desbalaceada
ProbBag_Training <- predict(modelo_TreeBagg_smote,Training,type="prob") %>% as.data.frame()
colnames(ProbBag_Training) <- c("ProbBag_NO","ProbBag_SI")
head(ProbBag_Training)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredBag_Training <- as.factor(ifelse(ProbBag_Training$ProbBag_SI >= 0.5, 1, 0))
levels(ClasePredBag_Training) <- c("NO","SI")

#Data desbalanceada con la probabilidad y clase predicha
DataBag_Training <- cbind(Training,ProbBag_Training,ClasePredBag_Training)


##########################
# Tabla de clasificación #
##########################


# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_Bag_Smote <- mean(ClasePredBag_Smote==smote_train$DESERTOR)
Accuracy_Bag_Smote
[1] 0.9973203
# Calcular el % de acierto (accuracy) en la muestra desbalanceada
Accuracy_Bag_Train <- mean(ClasePredBag_Training==Training$DESERTOR)
Accuracy_Bag_Train
[1] 0.9704169
# Calcular el error de mala clasificación en la muestra balanceada
Error_Bag_Smote <- mean(ClasePredBag_Smote!=smote_train$DESERTOR)
Error_Bag_Smote 
[1] 0.00267967
# Calcular el error de mala clasificación en la muestra desbalanceada
Error_Bag_Train <- mean(ClasePredBag_Training!=Training$DESERTOR)
Error_Bag_Train 
[1] 0.02958315
#Cruce de clase real y predicha en la muestra balanceada
library(gmodels)
CrossTable(smote_train$DESERTOR,ClasePredBag_Smote,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  22764 

 
                     | ClasePredBag_Smote 
smote_train$DESERTOR |        NO |        SI | Row Total | 
---------------------|-----------|-----------|-----------|
                  NO |     11381 |         1 |     11382 | 
                     |     1.000 |     0.000 |     0.500 | 
---------------------|-----------|-----------|-----------|
                  SI |        60 |     11322 |     11382 | 
                     |     0.005 |     0.995 |     0.500 | 
---------------------|-----------|-----------|-----------|
        Column Total |     11441 |     11323 |     22764 | 
---------------------|-----------|-----------|-----------|

 
#Cruce de clase real y predicha en la muestra desbalanceada
library(gmodels)
CrossTable(Training$DESERTOR,ClasePredBag_Training,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  24541 

 
                  | ClasePredBag_Training 
Training$DESERTOR |        NO |        SI | Row Total | 
------------------|-----------|-----------|-----------|
               NO |     21978 |       666 |     22644 | 
                  |     0.971 |     0.029 |     0.923 | 
------------------|-----------|-----------|-----------|
               SI |        60 |      1837 |      1897 | 
                  |     0.032 |     0.968 |     0.077 | 
------------------|-----------|-----------|-----------|
     Column Total |     22038 |      2503 |     24541 | 
------------------|-----------|-----------|-----------|

 
#Matriz de confusión
library(caret)
caret::confusionMatrix(ClasePredBag_Smote,smote_train$DESERTOR,positive="SI") #Muestra balanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 11381    60
        SI     1 11322
                                          
               Accuracy : 0.9973          
                 95% CI : (0.9966, 0.9979)
    No Information Rate : 0.5             
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.9946          
                                          
 Mcnemar's Test P-Value : 1.118e-13       
                                          
            Sensitivity : 0.9947          
            Specificity : 0.9999          
         Pos Pred Value : 0.9999          
         Neg Pred Value : 0.9948          
             Prevalence : 0.5000          
         Detection Rate : 0.4974          
   Detection Prevalence : 0.4974          
      Balanced Accuracy : 0.9973          
                                          
       'Positive' Class : SI              
                                          
caret::confusionMatrix(ClasePredBag_Training,Training$DESERTOR,positive="SI") #Muestra desbalanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 21978    60
        SI   666  1837
                                          
               Accuracy : 0.9704          
                 95% CI : (0.9682, 0.9725)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.8191          
                                          
 Mcnemar's Test P-Value : < 2.2e-16       
                                          
            Sensitivity : 0.96837         
            Specificity : 0.97059         
         Pos Pred Value : 0.73392         
         Neg Pred Value : 0.99728         
             Prevalence : 0.07730         
         Detection Rate : 0.07485         
   Detection Prevalence : 0.10199         
      Balanced Accuracy : 0.96948         
                                          
       'Positive' Class : SI              
                                          
#CURVAS DE ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Bag_Smote <- colAUC(ProbBag_smote$ProbBag_SI,smote_train$DESERTOR,plotROC = TRUE) #Muestra balanceada

#abline(0, 1,col="red") 

AUC_Bag_Train <- colAUC(ProbBag_Training$ProbBag_SI,Training$DESERTOR,plotROC = TRUE) #Muestra desbalanceada

#abline(0, 1,col="red") 


AUC_Bag_Smote #Devuelve el área bajo la curva en la muestra balanceada
               [,1]
NO vs. SI 0.9999952
AUC_Bag_Train #Devuelve el área bajo la curva en la muestra desbalanceada
               [,1]
NO vs. SI 0.9908134
#CURVAS DE ROC
# Usando el paquete pROC
library(pROC)

# Área bajo la curva
roc_modelo_bag_smote <- roc(smote_train$DESERTOR,ProbBag_smote$ProbBag_SI)
roc_modelo_bag_smote

Call:
roc.default(response = smote_train$DESERTOR, predictor = ProbBag_smote$ProbBag_SI)

Data: ProbBag_smote$ProbBag_SI in 11382 controls (smote_train$DESERTOR NO) < 11382 cases (smote_train$DESERTOR SI).
Area under the curve: 1
roc_modelo_bag_train <- roc(Training$DESERTOR,ProbBag_Training$ProbBag_SI)
roc_modelo_bag_train

Call:
roc.default(response = Training$DESERTOR, predictor = ProbBag_Training$ProbBag_SI)

Data: ProbBag_Training$ProbBag_SI in 22644 controls (Training$DESERTOR NO) < 1897 cases (Training$DESERTOR SI).
Area under the curve: 0.9908
#Puntos de corte muestra balanceada
PtosCorte_Smote <- data.frame(prob1=roc_modelo_bag_smote$thresholds,
                              sen1=roc_modelo_bag_smote$sensitivities,
                              esp1=roc_modelo_bag_smote$specificities)

#Puntos de corte muestra desbalanceada
PtosCorte_Train <- data.frame(prob2=roc_modelo_bag_train$thresholds,
                              sen2=roc_modelo_bag_train$sensitivities,
                              esp2=roc_modelo_bag_train$specificities)

# Punto de corte óptimo (mayor sensibilidad y especificidad) usando pROC
coords(roc_modelo_bag_smote, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
  threshold specificity sensitivity    accuracy 
  0.4200000   0.9994729   0.9987700   0.9991214 
coords(roc_modelo_bag_train, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
  threshold specificity sensitivity    accuracy 
  0.4600000   0.9632132   0.9841856   0.9648344 
coords(roc_modelo_bag_smote, "best")
  threshold specificity sensitivity 
  0.4200000   0.9994729   0.9987700 
coords(roc_modelo_bag_train, "best")
  threshold specificity sensitivity 
  0.4600000   0.9632132   0.9841856 
plot(roc_modelo_bag_smote,print.thres=T)

plot(roc_modelo_bag_train,print.thres=T)

######################################
######## EVALUCION DE MODELOS ######## 
######################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbBag_Test <- predict(modelo_TreeBagg_smote,Testing,type="prob") %>% as.data.frame()
colnames(ProbBag_Test) <- c("ProbBag_NO","ProbBag_SI")
head(ProbBag_Test,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredBag_Test <- as.factor(ifelse(ProbBag_Test$ProbBag_SI >=  0.46, 1, 0))
levels(ClasePredBag_Test) <- c("NO","SI")

head(cbind(Testing,ProbBag_Test,ClasePredBag_Test),8)
# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_Bag_Test <- mean(ClasePredBag_Test==Testing$DESERTOR)
Accuracy_Bag_Test
[1] 0.8459469
#Matriz de confusión
library(caret)
cm_TreeBagg_smote <- caret::confusionMatrix(ClasePredBag_Test,Testing$DESERTOR,positive="SI") #Muestra balanceada
cm_TreeBagg_smote
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 9030  458
        SI 1260  404
                                          
               Accuracy : 0.8459          
                 95% CI : (0.8391, 0.8526)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.2428          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.46868         
            Specificity : 0.87755         
         Pos Pred Value : 0.24279         
         Neg Pred Value : 0.95173         
             Prevalence : 0.07730         
         Detection Rate : 0.03623         
   Detection Prevalence : 0.14921         
      Balanced Accuracy : 0.67311         
                                          
       'Positive' Class : SI              
                                          
cm_TreeBagg_under <- caret::confusionMatrix( predict(modelo_TreeBagg_under,Testing)
                                             ,Testing$DESERTOR,positive="SI") #Muestra Under
cm_TreeBagg_under
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 8305  269
        SI 1985  593
                                          
               Accuracy : 0.7979          
                 95% CI : (0.7903, 0.8053)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.2589          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.68794         
            Specificity : 0.80709         
         Pos Pred Value : 0.23002         
         Neg Pred Value : 0.96863         
             Prevalence : 0.07730         
         Detection Rate : 0.05317         
   Detection Prevalence : 0.23117         
      Balanced Accuracy : 0.74751         
                                          
       'Positive' Class : SI              
                                          
cm_TreeBagg_over <- caret::confusionMatrix( predict(modelo_TreeBagg_over,Testing)
                                             ,Testing$DESERTOR,positive="SI") #Muestra Over
cm_TreeBagg_over
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 9943  550
        SI  347  312
                                          
               Accuracy : 0.9196          
                 95% CI : (0.9144, 0.9245)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 0.8954          
                                          
                  Kappa : 0.3679          
                                          
 Mcnemar's Test P-Value : 1.535e-11       
                                          
            Sensitivity : 0.36195         
            Specificity : 0.96628         
         Pos Pred Value : 0.47344         
         Neg Pred Value : 0.94758         
             Prevalence : 0.07730         
         Detection Rate : 0.02798         
   Detection Prevalence : 0.05909         
      Balanced Accuracy : 0.66411         
                                          
       'Positive' Class : SI              
                                          
# Calculando el estadístico KS
library(InformationValue)
ks_stat(Testing$DESERTOR,ProbBag_Test$ProbBag_SI,returnKSTable = T)
ks_stat(Testing$DESERTOR,ProbBag_Test$ProbBag_SI)
[1] 0.3979
# Graficando el estadístico KS 
ks_plot(Testing$DESERTOR,ProbBag_Test$ProbBag_SI)

#Curvas de ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Bag_Test <- colAUC(ProbBag_Test$ProbBag_SI,Testing$DESERTOR,plotROC = TRUE) #Muestra balanceada
abline(0, 1,col="red") 

AUC_Bag_Test
               [,1]
NO vs. SI 0.7540509
#Coeficiente de Gini
gini_test <-  2*AUC_Bag_Test -1 ; gini_test
               [,1]
NO vs. SI 0.5081017

MODELO ARBOLES DE DESICIÓN CART

#####################################################################################################



#####################################################################
############################ MODELO CART ############################
#####################################################################


##################################################
#  CART CON CARET Y VALIDACIÓN CRUZADA REPETIDA  #
##################################################

# Relación de modelos 
library(caret)
#names(getModelInfo())

#Relación de parámetros a ajustar de un modelo
modelLookup(model='rpart')
# Aplicando el modelo con Validación Cruzada Repetida 
ctrl <- trainControl(method="cv", number=10, repeats = 1)

set.seed(696)
modelo_cart_smote <- train(DESERTOR ~ ., 
                     data = smote_train, 
                     method = "rpart", 
                     trControl = ctrl, 
                     tuneLength= 20,
                     metric="Accuracy")

modelo_cart_under <- train(DESERTOR ~ ., data = under_train, method = "rpart", trControl = ctrl, metric="Accuracy")
modelo_cart_over  <- train(DESERTOR ~ ., data = over_train,  method = "rpart", trControl = ctrl, metric="Accuracy")

ImpVar_Cart <- varImp(modelo_cart_smote)
plot(ImpVar_Cart)

########################################
######## INDICADORES DEL MODELO ########
########################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbCart_smote <- predict(modelo_cart_smote,smote_train,type="prob") %>% as.data.frame()
colnames(ProbCart_smote) <- c("ProbCart_NO","ProbCart_SI")
head(ProbCart_smote,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredCart_Smote <- as.factor(ifelse(ProbCart_smote$ProbCart_SI >= 0.5, "SI", "NO")) 
levels(ClasePredCart_Smote) <- c("NO","SI")

#Data balanceada con la probabilidad y clase predicha
DataCart_smote_train <- cbind(smote_train,ProbCart_smote,ClasePredCart_Smote)

# Prediciendo la probabilidad en la muestra de entrenamiento desbalaceada
ProbCart_Training <- predict(modelo_cart_smote,Training,type="prob") %>% as.data.frame()
colnames(ProbCart_Training) <- c("ProbCart_NO","ProbCart_SI")
head(ProbCart_Training)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredCart_Training <- as.factor(ifelse(ProbCart_Training$ProbCart_SI >= 0.5, 1, 0))
levels(ClasePredCart_Training) <- c("NO","SI")

#Data desbalanceada con la probabilidad y clase predicha
DataCart_Training <- cbind(Training,ProbCart_Training,ClasePredCart_Training)


##########################
# Tabla de clasificación #
##########################


# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_Cart_Smote <- mean(ClasePredCart_Smote==smote_train$DESERTOR)
Accuracy_Cart_Smote
[1] 0.9183799
# Calcular el % de acierto (accuracy) en la muestra desbalanceada
Accuracy_Cart_Train <- mean(ClasePredCart_Training==Training$DESERTOR)
Accuracy_Cart_Train
[1] 0.906157
# Calcular el error de mala clasificación en la muestra balanceada
Error_Cart_Smote <- mean(ClasePredCart_Smote!=smote_train$DESERTOR)
Error_Cart_Smote 
[1] 0.0816201
# Calcular el error de mala clasificación en la muestra desbalanceada
Error_Cart_Train <- mean(ClasePredCart_Training!=Training$DESERTOR)
Error_Cart_Train 
[1] 0.09384296
#Cruce de clase real y predicha en la muestra balanceada
library(gmodels)
CrossTable(smote_train$DESERTOR,ClasePredCart_Smote,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  22764 

 
                     | ClasePredCart_Smote 
smote_train$DESERTOR |        NO |        SI | Row Total | 
---------------------|-----------|-----------|-----------|
                  NO |     10895 |       487 |     11382 | 
                     |     0.957 |     0.043 |     0.500 | 
---------------------|-----------|-----------|-----------|
                  SI |      1371 |     10011 |     11382 | 
                     |     0.120 |     0.880 |     0.500 | 
---------------------|-----------|-----------|-----------|
        Column Total |     12266 |     10498 |     22764 | 
---------------------|-----------|-----------|-----------|

 
#Cruce de clase real y predicha en la muestra desbalanceada
library(gmodels)
CrossTable(Training$DESERTOR,ClasePredCart_Training,
           prop.t=FALSE, prop.c=FALSE,prop.chisq=FALSE)

 
   Cell Contents
|-------------------------|
|                       N |
|           N / Row Total |
|-------------------------|

 
Total Observations in Table:  24541 

 
                  | ClasePredCart_Training 
Training$DESERTOR |        NO |        SI | Row Total | 
------------------|-----------|-----------|-----------|
               NO |     21619 |      1025 |     22644 | 
                  |     0.955 |     0.045 |     0.923 | 
------------------|-----------|-----------|-----------|
               SI |      1278 |       619 |      1897 | 
                  |     0.674 |     0.326 |     0.077 | 
------------------|-----------|-----------|-----------|
     Column Total |     22897 |      1644 |     24541 | 
------------------|-----------|-----------|-----------|

 
#Matriz de confusión
library(caret)
caret::confusionMatrix(ClasePredCart_Smote,smote_train$DESERTOR,positive="SI") #Muestra balanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 10895  1371
        SI   487 10011
                                          
               Accuracy : 0.9184          
                 95% CI : (0.9147, 0.9219)
    No Information Rate : 0.5             
    P-Value [Acc > NIR] : < 2.2e-16       
                                          
                  Kappa : 0.8368          
                                          
 Mcnemar's Test P-Value : < 2.2e-16       
                                          
            Sensitivity : 0.8795          
            Specificity : 0.9572          
         Pos Pred Value : 0.9536          
         Neg Pred Value : 0.8882          
             Prevalence : 0.5000          
         Detection Rate : 0.4398          
   Detection Prevalence : 0.4612          
      Balanced Accuracy : 0.9184          
                                          
       'Positive' Class : SI              
                                          
caret::confusionMatrix(ClasePredCart_Training,Training$DESERTOR,positive="SI") #Muestra desbalanceada
Confusion Matrix and Statistics

          Reference
Prediction    NO    SI
        NO 21619  1278
        SI  1025   619
                                          
               Accuracy : 0.9062          
                 95% CI : (0.9024, 0.9098)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.2993          
                                          
 Mcnemar's Test P-Value : 1.512e-07       
                                          
            Sensitivity : 0.32630         
            Specificity : 0.95473         
         Pos Pred Value : 0.37652         
         Neg Pred Value : 0.94418         
             Prevalence : 0.07730         
         Detection Rate : 0.02522         
   Detection Prevalence : 0.06699         
      Balanced Accuracy : 0.64052         
                                          
       'Positive' Class : SI              
                                          
#CURVAS DE ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Cart_Smote <- colAUC(ProbCart_smote$ProbCart_SI,smote_train$DESERTOR,plotROC = TRUE) #Muestra balanceada

#abline(0, 1,col="red") 

AUC_Cart_Train <- colAUC(ProbCart_Training$ProbCart_SI,Training$DESERTOR,plotROC = TRUE) #Muestra desbalanceada

#abline(0, 1,col="red") 


AUC_Cart_Smote #Devuelve el área bajo la curva en la muestra balanceada
               [,1]
NO vs. SI 0.9515476
AUC_Cart_Train #Devuelve el área bajo la curva en la muestra desbalanceada
               [,1]
NO vs. SI 0.7676283
#CURVAS DE ROC
# Usando el paquete pROC
library(pROC)

# Área bajo la curva
roc_modelo_cart_smote <- roc(smote_train$DESERTOR,ProbCart_smote$ProbCart_SI)
roc_modelo_cart_smote

Call:
roc.default(response = smote_train$DESERTOR, predictor = ProbCart_smote$ProbCart_SI)

Data: ProbCart_smote$ProbCart_SI in 11382 controls (smote_train$DESERTOR NO) < 11382 cases (smote_train$DESERTOR SI).
Area under the curve: 0.9515
roc_modelo_cart_train <- roc(Training$DESERTOR,ProbCart_Training$ProbCart_SI)
roc_modelo_cart_train

Call:
roc.default(response = Training$DESERTOR, predictor = ProbCart_Training$ProbCart_SI)

Data: ProbCart_Training$ProbCart_SI in 22644 controls (Training$DESERTOR NO) < 1897 cases (Training$DESERTOR SI).
Area under the curve: 0.7676
#Puntos de corte muestra balanceada
PtosCorte_Smote <- data.frame(prob1=roc_modelo_cart_smote$thresholds,
                              sen1=roc_modelo_cart_smote$sensitivities,
                              esp1=roc_modelo_cart_smote$specificities)

#Puntos de corte muestra desbalanceada
PtosCorte_Train <- data.frame(prob2=roc_modelo_cart_train$thresholds,
                              sen2=roc_modelo_cart_train$sensitivities,
                              esp2=roc_modelo_cart_train$specificities)

# Punto de corte óptimo (mayor sensibilidad y especificidad) usando pROC
coords(roc_modelo_cart_smote, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
  threshold specificity sensitivity    accuracy 
  0.5183824   0.9572131   0.8795467   0.9183799 
coords(roc_modelo_cart_train, "best",ret=c("threshold","specificity", "sensitivity","accuracy"))
  threshold specificity sensitivity    accuracy 
  0.1591943   0.7938968   0.5872430   0.7779227 
coords(roc_modelo_cart_smote, "best")
  threshold specificity sensitivity 
  0.5183824   0.9572131   0.8795467 
coords(roc_modelo_cart_train, "best")
  threshold specificity sensitivity 
  0.1591943   0.7938968   0.5872430 
plot(roc_modelo_cart_smote,print.thres=T)

plot(roc_modelo_cart_train,print.thres=T)

######################################
######## EVALUCION DE MODELOS ######## 
######################################


# Prediciendo la probabilidad en la muestra de entrenamiento balaceada
ProbCart_Test <- predict(modelo_cart_smote,Testing,type="prob") %>% as.data.frame()
colnames(ProbCart_Test) <- c("ProbCart_NO","ProbCart_SI")
head(ProbCart_Test,20)
# Prediciendo la clase (con punto de corte = 0.5)
ClasePredCart_Test <- as.factor(ifelse(ProbCart_Test$ProbCart_SI >= 0.1760868, 1, 0))
levels(ClasePredCart_Test) <- c("NO","SI")

head(cbind(Testing,ProbCart_Test,ClasePredCart_Test),8)
# Calcular el % de acierto (accuracy) en la muestra balanceada
Accuracy_Cart_Test <- mean(ClasePredCart_Test==Testing$DESERTOR)
Accuracy_Cart_Test
[1] 0.7593257
#Matriz de confusión
library(caret)
cm_cart_smote <- caret::confusionMatrix(ClasePredCart_Test,Testing$DESERTOR,positive="SI") #Muestra balanceada
cm_cart_smote
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 7960  354
        SI 2330  508
                                          
               Accuracy : 0.7593          
                 95% CI : (0.7513, 0.7672)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.177           
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.58933         
            Specificity : 0.77357         
         Pos Pred Value : 0.17900         
         Neg Pred Value : 0.95742         
             Prevalence : 0.07730         
         Detection Rate : 0.04555         
   Detection Prevalence : 0.25448         
      Balanced Accuracy : 0.68145         
                                          
       'Positive' Class : SI              
                                          
cm_cart_under <- caret::confusionMatrix(predict(modelo_cart_under,Testing)
                                        ,Testing$DESERTOR,positive="SI") #Muestra under
cm_cart_under
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 8680  390
        SI 1610  472
                                          
               Accuracy : 0.8207          
                 95% CI : (0.8134, 0.8277)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.2373          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.54756         
            Specificity : 0.84354         
         Pos Pred Value : 0.22671         
         Neg Pred Value : 0.95700         
             Prevalence : 0.07730         
         Detection Rate : 0.04232         
   Detection Prevalence : 0.18669         
      Balanced Accuracy : 0.69555         
                                          
       'Positive' Class : SI              
                                          
cm_cart_over <- caret::confusionMatrix(predict(modelo_cart_over,Testing)
                                        ,Testing$DESERTOR,positive="SI") #Muestra under
cm_cart_over
Confusion Matrix and Statistics

          Reference
Prediction   NO   SI
        NO 8779  400
        SI 1511  462
                                          
               Accuracy : 0.8286          
                 95% CI : (0.8215, 0.8356)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.2447          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.53596         
            Specificity : 0.85316         
         Pos Pred Value : 0.23416         
         Neg Pred Value : 0.95642         
             Prevalence : 0.07730         
         Detection Rate : 0.04143         
   Detection Prevalence : 0.17692         
      Balanced Accuracy : 0.69456         
                                          
       'Positive' Class : SI              
                                          
# Calculando el estadístico KS
library(InformationValue)
ks_stat(Testing$DESERTOR,ProbCart_Test$ProbCart_SI,returnKSTable = T)
ks_stat(Testing$DESERTOR,ProbCart_Test$ProbCart_SI)
[1] 0.3476
# Graficando el estadístico KS 
ks_plot(Testing$DESERTOR,ProbCart_Test$ProbCart_SI)

#Curvas de ROC
# Curva ROC usando el paquete caTools
library(caTools)
AUC_Cart_Test <- colAUC(ProbCart_Test$ProbCart_SI,Testing$DESERTOR,plotROC = TRUE) #Muestra balanceada

#abline(0, 1,col="red") 
AUC_Cart_Test
               [,1]
NO vs. SI 0.7309421
#Coeficiente de Gini
gini_test <-  2*AUC_Cart_Test -1 ; gini_test
               [,1]
NO vs. SI 0.4618842

MODELO XGBOOST

#####################################################################################################

###########################################################
#  XG BOOSTING Y VALIDACIÓN CRUZADA REPETIDA   #
###########################################################


library(caret)
library(randomForest)
library(xgboost)
summary(over_train$DESERTOR)
   NO    SI 
22644 22644 
set.seed(696)
modelo_XGBoot_smote = xgboost::xgboost(data = as.matrix(smote_train[, -1]),#smote_train[, -1]),
                     label = ifelse(as.numeric(smote_train$DESERTOR) == 2, 1, 0)# Es necesario tener una categ. binaria
                     ,objective = "binary:logistic",#num_class 
                     nrounds = 200)
[1] train-error:0.087814 
[2] train-error:0.075953 
[3] train-error:0.072746 
[4] train-error:0.072395 
[5] train-error:0.071780 
[6] train-error:0.071692 
[7] train-error:0.071253 
[8] train-error:0.071121 
[9] train-error:0.070594 
[10]    train-error:0.069803 
[11]    train-error:0.069803 
[12]    train-error:0.069584 
[13]    train-error:0.069320 
[14]    train-error:0.068222 
[15]    train-error:0.066640 
[16]    train-error:0.066421 
[17]    train-error:0.065147 
[18]    train-error:0.065015 
[19]    train-error:0.064488 
[20]    train-error:0.064005 
[21]    train-error:0.063609 
[22]    train-error:0.062731 
[23]    train-error:0.062423 
[24]    train-error:0.062247 
[25]    train-error:0.061413 
[26]    train-error:0.061193 
[27]    train-error:0.060095 
[28]    train-error:0.059919 
[29]    train-error:0.059436 
[30]    train-error:0.057942 
[31]    train-error:0.057811 
[32]    train-error:0.057371 
[33]    train-error:0.056932 
[34]    train-error:0.056668 
[35]    train-error:0.056449 
[36]    train-error:0.056493 
[37]    train-error:0.055790 
[38]    train-error:0.055658 
[39]    train-error:0.055394 
[40]    train-error:0.054999 
[41]    train-error:0.055043 
[42]    train-error:0.054340 
[43]    train-error:0.054296 
[44]    train-error:0.053330 
[45]    train-error:0.053242 
[46]    train-error:0.052451 
[47]    train-error:0.052276 
[48]    train-error:0.052144 
[49]    train-error:0.051968 
[50]    train-error:0.051748 
[51]    train-error:0.050606 
[52]    train-error:0.049640 
[53]    train-error:0.049200 
[54]    train-error:0.048366 
[55]    train-error:0.047443 
[56]    train-error:0.046301 
[57]    train-error:0.045774 
[58]    train-error:0.045554 
[59]    train-error:0.045291 
[60]    train-error:0.044852 
[61]    train-error:0.044852 
[62]    train-error:0.044632 
[63]    train-error:0.044324 
[64]    train-error:0.043973 
[65]    train-error:0.043578 
[66]    train-error:0.043402 
[67]    train-error:0.043270 
[68]    train-error:0.043226 
[69]    train-error:0.042743 
[70]    train-error:0.042743 
[71]    train-error:0.042348 
[72]    train-error:0.041557 
[73]    train-error:0.041249 
[74]    train-error:0.040810 
[75]    train-error:0.040415 
[76]    train-error:0.040283 
[77]    train-error:0.039492 
[78]    train-error:0.039448 
[79]    train-error:0.039229 
[80]    train-error:0.039009 
[81]    train-error:0.038965 
[82]    train-error:0.038745 
[83]    train-error:0.038614 
[84]    train-error:0.038394 
[85]    train-error:0.038218 
[86]    train-error:0.037252 
[87]    train-error:0.037164 
[88]    train-error:0.036681 
[89]    train-error:0.036198 
[90]    train-error:0.036066 
[91]    train-error:0.035802 
[92]    train-error:0.035451 
[93]    train-error:0.034924 
[94]    train-error:0.035055 
[95]    train-error:0.034660 
[96]    train-error:0.034309 
[97]    train-error:0.033913 
[98]    train-error:0.033694 
[99]    train-error:0.033606 
[100]   train-error:0.033386 
[101]   train-error:0.033342 
[102]   train-error:0.033035 
[103]   train-error:0.033122 
[104]   train-error:0.032947 
[105]   train-error:0.032507 
[106]   train-error:0.032288 
[107]   train-error:0.031629 
[108]   train-error:0.031190 
[109]   train-error:0.030443 
[110]   train-error:0.030047 
[111]   train-error:0.029740 
[112]   train-error:0.029784 
[113]   train-error:0.029828 
[114]   train-error:0.029784 
[115]   train-error:0.029652 
[116]   train-error:0.029301 
[117]   train-error:0.029037 
[118]   train-error:0.029125 
[119]   train-error:0.028861 
[120]   train-error:0.028422 
[121]   train-error:0.028246 
[122]   train-error:0.028115 
[123]   train-error:0.027939 
[124]   train-error:0.027895 
[125]   train-error:0.027763 
[126]   train-error:0.027148 
[127]   train-error:0.026885 
[128]   train-error:0.026885 
[129]   train-error:0.026885 
[130]   train-error:0.026577 
[131]   train-error:0.026313 
[132]   train-error:0.025962 
[133]   train-error:0.025435 
[134]   train-error:0.025303 
[135]   train-error:0.025083 
[136]   train-error:0.025040 
[137]   train-error:0.024952 
[138]   train-error:0.024908 
[139]   train-error:0.024205 
[140]   train-error:0.024205 
[141]   train-error:0.023985 
[142]   train-error:0.023678 
[143]   train-error:0.023238 
[144]   train-error:0.023019 
[145]   train-error:0.022755 
[146]   train-error:0.022623 
[147]   train-error:0.022184 
[148]   train-error:0.022184 
[149]   train-error:0.022008 
[150]   train-error:0.021833 
[151]   train-error:0.021701 
[152]   train-error:0.021877 
[153]   train-error:0.021833 
[154]   train-error:0.021745 
[155]   train-error:0.021657 
[156]   train-error:0.021437 
[157]   train-error:0.021218 
[158]   train-error:0.020954 
[159]   train-error:0.020954 
[160]   train-error:0.020822 
[161]   train-error:0.020647 
[162]   train-error:0.020295 
[163]   train-error:0.020076 
[164]   train-error:0.019768 
[165]   train-error:0.019636 
[166]   train-error:0.019109 
[167]   train-error:0.018670 
[168]   train-error:0.018187 
[169]   train-error:0.018143 
[170]   train-error:0.017923 
[171]   train-error:0.017747 
[172]   train-error:0.017747 
[173]   train-error:0.017528 
[174]   train-error:0.017352 
[175]   train-error:0.017264 
[176]   train-error:0.017220 
[177]   train-error:0.017044 
[178]   train-error:0.016825 
[179]   train-error:0.016561 
[180]   train-error:0.016517 
[181]   train-error:0.016298 
[182]   train-error:0.016386 
[183]   train-error:0.016034 
[184]   train-error:0.015902 
[185]   train-error:0.015771 
[186]   train-error:0.015814 
[187]   train-error:0.015507 
[188]   train-error:0.015463 
[189]   train-error:0.015419 
[190]   train-error:0.014936 
[191]   train-error:0.014804 
[192]   train-error:0.014804 
[193]   train-error:0.014409 
[194]   train-error:0.014277 
[195]   train-error:0.014321 
[196]   train-error:0.013969 
[197]   train-error:0.014013 
[198]   train-error:0.013969 
[199]   train-error:0.013969 
[200]   train-error:0.013706 
modelo_XGBoot_over = xgboost::xgboost(data = as.matrix(over_train[, -1]),#smote_train[, -1]),
                     label = ifelse(as.numeric(over_train$DESERTOR) == 2, 1, 0)# Es necesario tener una categ. binaria
                     ,objective = "binary:logistic",#num_class 
                     nrounds = 200)
[1] train-error:0.239688 
[2] train-error:0.229399 
[3] train-error:0.222509 
[4] train-error:0.213809 
[5] train-error:0.209945 
[6] train-error:0.208576 
[7] train-error:0.200473 
[8] train-error:0.195085 
[9] train-error:0.191817 
[10]    train-error:0.186871 
[11]    train-error:0.184177 
[12]    train-error:0.181615 
[13]    train-error:0.177795 
[14]    train-error:0.174969 
[15]    train-error:0.169736 
[16]    train-error:0.165541 
[17]    train-error:0.161632 
[18]    train-error:0.158894 
[19]    train-error:0.157702 
[20]    train-error:0.156355 
[21]    train-error:0.152778 
[22]    train-error:0.150106 
[23]    train-error:0.144784 
[24]    train-error:0.145027 
[25]    train-error:0.142643 
[26]    train-error:0.141649 
[27]    train-error:0.137829 
[28]    train-error:0.135842 
[29]    train-error:0.130211 
[30]    train-error:0.127804 
[31]    train-error:0.126170 
[32]    train-error:0.125640 
[33]    train-error:0.125243 
[34]    train-error:0.124492 
[35]    train-error:0.122129 
[36]    train-error:0.117625 
[37]    train-error:0.116411 
[38]    train-error:0.116300 
[39]    train-error:0.113275 
[40]    train-error:0.112281 
[41]    train-error:0.111023 
[42]    train-error:0.110537 
[43]    train-error:0.109543 
[44]    train-error:0.108307 
[45]    train-error:0.108395 
[46]    train-error:0.106033 
[47]    train-error:0.105414 
[48]    train-error:0.103714 
[49]    train-error:0.101285 
[50]    train-error:0.099342 
[51]    train-error:0.098657 
[52]    train-error:0.096957 
[53]    train-error:0.096339 
[54]    train-error:0.096582 
[55]    train-error:0.095897 
[56]    train-error:0.094705 
[57]    train-error:0.093292 
[58]    train-error:0.091768 
[59]    train-error:0.091172 
[60]    train-error:0.090223 
[61]    train-error:0.088876 
[62]    train-error:0.086999 
[63]    train-error:0.086557 
[64]    train-error:0.086005 
[65]    train-error:0.083907 
[66]    train-error:0.083907 
[67]    train-error:0.083687 
[68]    train-error:0.082538 
[69]    train-error:0.081766 
[70]    train-error:0.080264 
[71]    train-error:0.079955 
[72]    train-error:0.080021 
[73]    train-error:0.078564 
[74]    train-error:0.077747 
[75]    train-error:0.076532 
[76]    train-error:0.075870 
[77]    train-error:0.074302 
[78]    train-error:0.073242 
[79]    train-error:0.072602 
[80]    train-error:0.072624 
[81]    train-error:0.070747 
[82]    train-error:0.069555 
[83]    train-error:0.067501 
[84]    train-error:0.066883 
[85]    train-error:0.066000 
[86]    train-error:0.065580 
[87]    train-error:0.065669 
[88]    train-error:0.064697 
[89]    train-error:0.064410 
[90]    train-error:0.064874 
[91]    train-error:0.064498 
[92]    train-error:0.063659 
[93]    train-error:0.063350 
[94]    train-error:0.060987 
[95]    train-error:0.060148 
[96]    train-error:0.058647 
[97]    train-error:0.057984 
[98]    train-error:0.057830 
[99]    train-error:0.057631 
[100]   train-error:0.056792 
[101]   train-error:0.056726 
[102]   train-error:0.055224 
[103]   train-error:0.054783 
[104]   train-error:0.053502 
[105]   train-error:0.053193 
[106]   train-error:0.051449 
[107]   train-error:0.049925 
[108]   train-error:0.049527 
[109]   train-error:0.048644 
[110]   train-error:0.048225 
[111]   train-error:0.047849 
[112]   train-error:0.047430 
[113]   train-error:0.046922 
[114]   train-error:0.046701 
[115]   train-error:0.046458 
[116]   train-error:0.046282 
[117]   train-error:0.045553 
[118]   train-error:0.044868 
[119]   train-error:0.044140 
[120]   train-error:0.043477 
[121]   train-error:0.043279 
[122]   train-error:0.043102 
[123]   train-error:0.041932 
[124]   train-error:0.041247 
[125]   train-error:0.041335 
[126]   train-error:0.041115 
[127]   train-error:0.040011 
[128]   train-error:0.039944 
[129]   train-error:0.039105 
[130]   train-error:0.037869 
[131]   train-error:0.036566 
[132]   train-error:0.035307 
[133]   train-error:0.034667 
[134]   train-error:0.034557 
[135]   train-error:0.033916 
[136]   train-error:0.033188 
[137]   train-error:0.033166 
[138]   train-error:0.033077 
[139]   train-error:0.032967 
[140]   train-error:0.032547 
[141]   train-error:0.032503 
[142]   train-error:0.032415 
[143]   train-error:0.032061 
[144]   train-error:0.031819 
[145]   train-error:0.031244 
[146]   train-error:0.031134 
[147]   train-error:0.030648 
[148]   train-error:0.029787 
[149]   train-error:0.029500 
[150]   train-error:0.029500 
[151]   train-error:0.029456 
[152]   train-error:0.029213 
[153]   train-error:0.028573 
[154]   train-error:0.028573 
[155]   train-error:0.028153 
[156]   train-error:0.027601 
[157]   train-error:0.027447 
[158]   train-error:0.026585 
[159]   train-error:0.026431 
[160]   train-error:0.026298 
[161]   train-error:0.026078 
[162]   train-error:0.026011 
[163]   train-error:0.025636 
[164]   train-error:0.025459 
[165]   train-error:0.025371 
[166]   train-error:0.025327 
[167]   train-error:0.025327 
[168]   train-error:0.025194 
[169]   train-error:0.025084 
[170]   train-error:0.024620 
[171]   train-error:0.024311 
[172]   train-error:0.024068 
[173]   train-error:0.024002 
[174]   train-error:0.023472 
[175]   train-error:0.023251 
[176]   train-error:0.023008 
[177]   train-error:0.022986 
[178]   train-error:0.022500 
[179]   train-error:0.022456 
[180]   train-error:0.022346 
[181]   train-error:0.022280 
[182]   train-error:0.022081 
[183]   train-error:0.021993 
[184]   train-error:0.021838 
[185]   train-error:0.021794 
[186]   train-error:0.021639 
[187]   train-error:0.021043 
[188]   train-error:0.021021 
[189]   train-error:0.020933 
[190]   train-error:0.020933 
[191]   train-error:0.020668 
[192]   train-error:0.020491 
[193]   train-error:0.020292 
[194]   train-error:0.020292 
[195]   train-error:0.020248 
[196]   train-error:0.019652 
[197]   train-error:0.019630 
[198]   train-error:0.019586 
[199]   train-error:0.019497 
[200]   train-error:0.019497 
modelo_XGBoot_under = xgboost::xgboost(data = as.matrix(under_train[, -1]),#smote_train[, -1]),
                     label = ifelse(as.numeric(under_train$DESERTOR) == 2, 1, 0)# Es necesario tener una categ. binaria
                     ,objective = "binary:logistic",#num_class 
                     nrounds = 200)
[1] train-error:0.240380 
[2] train-error:0.236690 
[3] train-error:0.229837 
[4] train-error:0.215867 
[5] train-error:0.209278 
[6] train-error:0.204006 
[7] train-error:0.201371 
[8] train-error:0.195045 
[9] train-error:0.195045 
[10]    train-error:0.188719 
[11]    train-error:0.182920 
[12]    train-error:0.180285 
[13]    train-error:0.178440 
[14]    train-error:0.176067 
[15]    train-error:0.173959 
[16]    train-error:0.167370 
[17]    train-error:0.163943 
[18]    train-error:0.161571 
[19]    train-error:0.153927 
[20]    train-error:0.150764 
[21]    train-error:0.147865 
[22]    train-error:0.143384 
[23]    train-error:0.140485 
[24]    train-error:0.139431 
[25]    train-error:0.137849 
[26]    train-error:0.134423 
[27]    train-error:0.132578 
[28]    train-error:0.129415 
[29]    train-error:0.127306 
[30]    train-error:0.126516 
[31]    train-error:0.127043 
[32]    train-error:0.122298 
[33]    train-error:0.121244 
[34]    train-error:0.121244 
[35]    train-error:0.117554 
[36]    train-error:0.115445 
[37]    train-error:0.112546 
[38]    train-error:0.111492 
[39]    train-error:0.106484 
[40]    train-error:0.102794 
[41]    train-error:0.102794 
[42]    train-error:0.097786 
[43]    train-error:0.095414 
[44]    train-error:0.095414 
[45]    train-error:0.094887 
[46]    train-error:0.091460 
[47]    train-error:0.086979 
[48]    train-error:0.086452 
[49]    train-error:0.086716 
[50]    train-error:0.085662 
[51]    train-error:0.080127 
[52]    train-error:0.077754 
[53]    train-error:0.076436 
[54]    train-error:0.074591 
[55]    train-error:0.072746 
[56]    train-error:0.071692 
[57]    train-error:0.071429 
[58]    train-error:0.071165 
[59]    train-error:0.069584 
[60]    train-error:0.067739 
[61]    train-error:0.066421 
[62]    train-error:0.064839 
[63]    train-error:0.061940 
[64]    train-error:0.060886 
[65]    train-error:0.059831 
[66]    train-error:0.059041 
[67]    train-error:0.057196 
[68]    train-error:0.056932 
[69]    train-error:0.055087 
[70]    train-error:0.054033 
[71]    train-error:0.052188 
[72]    train-error:0.051397 
[73]    train-error:0.049552 
[74]    train-error:0.049025 
[75]    train-error:0.047180 
[76]    train-error:0.047180 
[77]    train-error:0.048234 
[78]    train-error:0.048234 
[79]    train-error:0.046653 
[80]    train-error:0.045598 
[81]    train-error:0.042963 
[82]    train-error:0.042699 
[83]    train-error:0.041645 
[84]    train-error:0.041645 
[85]    train-error:0.041381 
[86]    train-error:0.039800 
[87]    train-error:0.039800 
[88]    train-error:0.039273 
[89]    train-error:0.037428 
[90]    train-error:0.035582 
[91]    train-error:0.034792 
[92]    train-error:0.031892 
[93]    train-error:0.031365 
[94]    train-error:0.030311 
[95]    train-error:0.029257 
[96]    train-error:0.027939 
[97]    train-error:0.027675 
[98]    train-error:0.027675 
[99]    train-error:0.025830 
[100]   train-error:0.025567 
[101]   train-error:0.025303 
[102]   train-error:0.024512 
[103]   train-error:0.024512 
[104]   train-error:0.025040 
[105]   train-error:0.024776 
[106]   train-error:0.024249 
[107]   train-error:0.023458 
[108]   train-error:0.022667 
[109]   train-error:0.022140 
[110]   train-error:0.021613 
[111]   train-error:0.022140 
[112]   train-error:0.022404 
[113]   train-error:0.022140 
[114]   train-error:0.020032 
[115]   train-error:0.019768 
[116]   train-error:0.019504 
[117]   train-error:0.020295 
[118]   train-error:0.019768 
[119]   train-error:0.019504 
[120]   train-error:0.018977 
[121]   train-error:0.018714 
[122]   train-error:0.018450 
[123]   train-error:0.018977 
[124]   train-error:0.018977 
[125]   train-error:0.018977 
[126]   train-error:0.018450 
[127]   train-error:0.018187 
[128]   train-error:0.018187 
[129]   train-error:0.016869 
[130]   train-error:0.016342 
[131]   train-error:0.015024 
[132]   train-error:0.015024 
[133]   train-error:0.014760 
[134]   train-error:0.014760 
[135]   train-error:0.014497 
[136]   train-error:0.014760 
[137]   train-error:0.014233 
[138]   train-error:0.013442 
[139]   train-error:0.012124 
[140]   train-error:0.012124 
[141]   train-error:0.011334 
[142]   train-error:0.011597 
[143]   train-error:0.011597 
[144]   train-error:0.011861 
[145]   train-error:0.011070 
[146]   train-error:0.011334 
[147]   train-error:0.010543 
[148]   train-error:0.010543 
[149]   train-error:0.010543 
[150]   train-error:0.009489 
[151]   train-error:0.009489 
[152]   train-error:0.009489 
[153]   train-error:0.009225 
[154]   train-error:0.008698 
[155]   train-error:0.008698 
[156]   train-error:0.008698 
[157]   train-error:0.008434 
[158]   train-error:0.008434 
[159]   train-error:0.008434 
[160]   train-error:0.008434 
[161]   train-error:0.008434 
[162]   train-error:0.008434 
[163]   train-error:0.007644 
[164]   train-error:0.007644 
[165]   train-error:0.007907 
[166]   train-error:0.007907 
[167]   train-error:0.007116 
[168]   train-error:0.006589 
[169]   train-error:0.005535 
[170]   train-error:0.005535 
[171]   train-error:0.005535 
[172]   train-error:0.005535 
[173]   train-error:0.005535 
[174]   train-error:0.005271 
[175]   train-error:0.005271 
[176]   train-error:0.005535 
[177]   train-error:0.005008 
[178]   train-error:0.005008 
[179]   train-error:0.005008 
[180]   train-error:0.005008 
[181]   train-error:0.004744 
[182]   train-error:0.004217 
[183]   train-error:0.004481 
[184]   train-error:0.004481 
[185]   train-error:0.004481 
[186]   train-error:0.004481 
[187]   train-error:0.003954 
[188]   train-error:0.003954 
[189]   train-error:0.003954 
[190]   train-error:0.003954 
[191]   train-error:0.003426 
[192]   train-error:0.003426 
[193]   train-error:0.002899 
[194]   train-error:0.003163 
[195]   train-error:0.002899 
[196]   train-error:0.002899 
[197]   train-error:0.002899 
[198]   train-error:0.002899 
[199]   train-error:0.002899 
[200]   train-error:0.002372 
pred_smote <- predict(modelo_XGBoot_smote, newdata = as.matrix(Testing[,-1]))
pred_under <- predict(modelo_XGBoot_over, newdata = as.matrix(Testing[,-1]))
pred_over <- predict(modelo_XGBoot_under, newdata = as.matrix(Testing[,-1]))

pred_smote = ifelse(pred_smote > 0.5, 2, 1) %>% as.factor()
pred_under = ifelse(pred_under > 0.5, 2, 1) %>% as.factor()
pred_over = ifelse(pred_over > 0.5, 2, 1) %>% as.factor()

levels(pred_smote) <- c("NO","SI")
levels(pred_under) <- c("NO","SI")
levels(pred_over) <- c("NO","SI")

cm_XGBoot_smote <- caret::confusionMatrix(table(pred_smote,Testing[,1],dnn = c("Predicho", "Actual")),positive="SI")
cm_XGBoot_smote
Confusion Matrix and Statistics

        Actual
Predicho   NO   SI
      NO 9869  483
      SI  421  379
                                          
               Accuracy : 0.9189          
                 95% CI : (0.9137, 0.9239)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 0.93330         
                                          
                  Kappa : 0.4123          
                                          
 Mcnemar's Test P-Value : 0.04248         
                                          
            Sensitivity : 0.43968         
            Specificity : 0.95909         
         Pos Pred Value : 0.47375         
         Neg Pred Value : 0.95334         
             Prevalence : 0.07730         
         Detection Rate : 0.03398         
   Detection Prevalence : 0.07174         
      Balanced Accuracy : 0.69938         
                                          
       'Positive' Class : SI              
                                          
cm_XGBoot_under <- caret::confusionMatrix(table(pred_under,Testing[,1],dnn = c("Predicho", "Actual")),positive="SI")
cm_XGBoot_under
Confusion Matrix and Statistics

        Actual
Predicho   NO   SI
      NO 9876  469
      SI  414  393
                                          
               Accuracy : 0.9208          
                 95% CI : (0.9157, 0.9258)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 0.77770         
                                          
                  Kappa : 0.4282          
                                          
 Mcnemar's Test P-Value : 0.06918         
                                          
            Sensitivity : 0.45592         
            Specificity : 0.95977         
         Pos Pred Value : 0.48699         
         Neg Pred Value : 0.95466         
             Prevalence : 0.07730         
         Detection Rate : 0.03524         
   Detection Prevalence : 0.07236         
      Balanced Accuracy : 0.70784         
                                          
       'Positive' Class : SI              
                                          
cm_XGBoot_over <- caret::confusionMatrix(table(pred_over,Testing[,1],dnn = c("Predicho", "Actual")),positive="SI")
cm_XGBoot_over
Confusion Matrix and Statistics

        Actual
Predicho   NO   SI
      NO 7834  264
      SI 2456  598
                                        
               Accuracy : 0.7561        
                 95% CI : (0.748, 0.764)
    No Information Rate : 0.9227        
    P-Value [Acc > NIR] : 1             
                                        
                  Kappa : 0.2102        
                                        
 Mcnemar's Test P-Value : <2e-16        
                                        
            Sensitivity : 0.69374       
            Specificity : 0.76132       
         Pos Pred Value : 0.19581       
         Neg Pred Value : 0.96740       
             Prevalence : 0.07730       
         Detection Rate : 0.05362       
   Detection Prevalence : 0.27385       
      Balanced Accuracy : 0.72753       
                                        
       'Positive' Class : SI            
                                        
######### CROSS VALIDATIONSSS #####
# library(caret)
# training_set<- over_train
# folds = createFolds(over_train$DESERTOR, k = 10)
# cv = lapply(folds, function(x) { 
#   training_fold = training_set[-x, ]
#   test_fold = training_set[x, ]
#   classifier = xgboost(data = as.matrix(training_set[, -85]),
#                        label = ifelse(as.numeric(training_set$DESERTOR) == 2, 1, 0), objective = "binary:logistic",
#                        nrounds = 5)
#   y_pred = predict(classifier, newdata = as.matrix(test_fold[,-85]))
#   y_pred = ifelse(y_pred > 0.5, 2, 1) %>% as.factor()
#   levels(y_pred) <- c("NO","SI")
#   
#   cm = table(test_fold[, 85], y_pred)
#   print(cm)
#   accuracy = (cm[1,1]+cm[2,2])/(cm[1,1]+cm[1,2]+cm[2,1]+cm[2,2])
#   sensibilidad = (cm[2,2])/(cm[2,1]+cm[2,2])
#   print(accuracy)
#   print(sensibilidad)
#   return(sensibilidad)  
# })
# accuracy = mean(as.numeric(cv))
# accuracy_sd = sd(as.numeric(cv))


#####################################################################################################

MODELO SVM

modelo_SVM_smote <- svm(DESERTOR ~ ., data = smote_train, 
           #class.weights = c("0"=0.3, "1"=0.7),
           cost=100)# es coste es para disminur el error mientras mas grande el algoritmo tratara de ob tener una menor error posible
modelo_SVM_under <- svm(DESERTOR ~ ., data = under_train,cost=10)
modelo_SVM_over  <- svm(DESERTOR ~ ., data = over_train,cost=100)
modelo_SVM_weigths <- svm(DESERTOR ~ ., data =  Training, class.weights = c("NO"=0.1, "SI"=0.9),cost=10)

############################################################
###### REALIZAMOS LAS EVALUACIONES EN BASE A LA DATA DE TESTING

cm_SVM_smote <- caret::confusionMatrix(table(predict(modelo_SVM_smote,Testing)
                                             ,Testing[,1],dnn = c("Predicho", "Actual")),positive="SI")
cm_SVM_smote
Confusion Matrix and Statistics

        Actual
Predicho   NO   SI
      NO 7554  573
      SI 2736  289
                                          
               Accuracy : 0.7033          
                 95% CI : (0.6947, 0.7118)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.0323          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.33527         
            Specificity : 0.73411         
         Pos Pred Value : 0.09554         
         Neg Pred Value : 0.92949         
             Prevalence : 0.07730         
         Detection Rate : 0.02591         
   Detection Prevalence : 0.27125         
      Balanced Accuracy : 0.53469         
                                          
       'Positive' Class : SI              
                                          
cm_SVM_under <- caret::confusionMatrix(table(predict(modelo_SVM_under,Testing)
                                             ,Testing[,1],dnn = c("Predicho", "Actual")),positive="SI")
cm_SVM_under
Confusion Matrix and Statistics

        Actual
Predicho   NO   SI
      NO 6581  208
      SI 3709  654
                                          
               Accuracy : 0.6488          
                 95% CI : (0.6398, 0.6576)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.1392          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.75870         
            Specificity : 0.63955         
         Pos Pred Value : 0.14990         
         Neg Pred Value : 0.96936         
             Prevalence : 0.07730         
         Detection Rate : 0.05864         
   Detection Prevalence : 0.39123         
      Balanced Accuracy : 0.69913         
                                          
       'Positive' Class : SI              
                                          
cm_SVM_over  <- caret::confusionMatrix(table(predict(modelo_SVM_over,Testing)
                                             ,Testing[,1],dnn = c("Predicho", "Actual")),positive="SI")
cm_SVM_over
Confusion Matrix and Statistics

        Actual
Predicho   NO   SI
      NO 7915  612
      SI 2375  250
                                          
               Accuracy : 0.7322          
                 95% CI : (0.7238, 0.7404)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.0306          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.29002         
            Specificity : 0.76919         
         Pos Pred Value : 0.09524         
         Neg Pred Value : 0.92823         
             Prevalence : 0.07730         
         Detection Rate : 0.02242         
   Detection Prevalence : 0.23538         
      Balanced Accuracy : 0.52961         
                                          
       'Positive' Class : SI              
                                          
cm_SVM_weigths  <- caret::confusionMatrix(table(predict(modelo_SVM_weigths,Testing)
                                             ,Testing[,1],dnn = c("Predicho", "Actual")),positive="SI")
cm_SVM_weigths
Confusion Matrix and Statistics

        Actual
Predicho   NO   SI
      NO 8992  494
      SI 1298  368
                                          
               Accuracy : 0.8393          
                 95% CI : (0.8324, 0.8461)
    No Information Rate : 0.9227          
    P-Value [Acc > NIR] : 1               
                                          
                  Kappa : 0.2107          
                                          
 Mcnemar's Test P-Value : <2e-16          
                                          
            Sensitivity : 0.4269          
            Specificity : 0.8739          
         Pos Pred Value : 0.2209          
         Neg Pred Value : 0.9479          
             Prevalence : 0.0773          
         Detection Rate : 0.0330          
   Detection Prevalence : 0.1494          
      Balanced Accuracy : 0.6504          
                                          
       'Positive' Class : SI              
                                          
#table(smote_train$DESERTOR, fitted(modelo_SVM_smote), dnn = c("Actual", "Predicho"))

RESUMEN DE RESULTADOS

#################################################################################################################
################################### RESUMEN DE RESULTADOS #######################################################
# #################################################################################################################
        # RF_MDL <- caret::train(x = x_trainRF, y = y_trainRF ,verbose = FALSE    
        #                   , method = "rf", metric = "Acurracy", tuneGrid = tunegrid
        #                   , trControl = ctrl)
        # mc_PredictOrigTuneGrid<- table(predict(RF_MDL,x_testRF),y_testRF)
        # mc_PredictOrigTuneGrid
        # cm_RF <- confusionMatrix(predict(RF_MDL,x_testRF), y_testRF,positive="SI")
        # cm_RF$byClass

models <- list( 
                  rf_smote          = modelo_rf_smote,
                  rf_under          = modelo_rf_under,
                  rf_over           = modelo_rf_over,
                  RF_own_smote      = modelo_RF_own_smote,
                  RF_own_under      = modelo_RF_own_under,
                  RF_own_over       = modelo_RF_own_over,
                  Nb_smote          = modelo_Nb_smote,
                  Nb_under          = modelo_Nb_under,
                  Nb_over           = modelo_Nb_over,
                  TreeBagg_smote    = modelo_TreeBagg_smote,
                  TreeBagg_under    = modelo_TreeBagg_under,
                  TreeBagg_over     = modelo_TreeBagg_over,
                  cart_smote        = modelo_cart_smote,
                  cart_under        = modelo_cart_under,
                  cart_over         = modelo_cart_over,
                  XGBoot_smote      = modelo_XGBoot_smote,
                  XGBoot_under      = modelo_XGBoot_under,
                  XGBoot_over       = modelo_XGBoot_over,
                  SVM_smote         = modelo_SVM_smote,
                  SVM_under         = modelo_SVM_under,
                  SVM_over          = modelo_SVM_over,
                  SVM_weigths       = modelo_SVM_weigths
) 



# resampling <- resamples(models)
# bwplot(resampling)

library(dplyr)
comparison <- data.frame(model = names(models),                         Sensitivity = rep(NA, length(models)),
                         Specificity = rep(NA, length(models)),         Precision = rep(NA, length(models)),
                         Recall = rep(NA, length(models)),              F1 = rep(NA, length(models)))

for (name in names(models)) {
  switch(name,
        rf_smote        ={rowModel<- 1 },           rf_under        ={rowModel<- 2 },           rf_over         ={rowModel<- 3 },
            RF_own_smote    ={rowModel<- 4 },           RF_own_under    ={rowModel<- 5 },           RF_own_over     ={rowModel<- 6 },
            Nb_smote        ={rowModel<- 7 },           Nb_under        ={rowModel<- 8 },           Nb_over         ={rowModel<- 9 },
            TreeBagg_smote  ={rowModel<- 10},           TreeBagg_under  ={rowModel<- 11},           TreeBagg_over   ={rowModel<- 12},
            cart_smote      ={rowModel<- 13},           cart_under      ={rowModel<- 14},           cart_over       ={rowModel<- 15},
            XGBoot_smote    ={rowModel<- 16},           XGBoot_under    ={rowModel<- 17},           XGBoot_over     ={rowModel<- 18},
            SVM_smote       ={rowModel<- 19},           SVM_under       ={rowModel<- 20},           SVM_over        ={rowModel<- 21},
            SVM_weigths     ={rowModel<- 22}
  )
  model <- get(paste0("cm_", name))
  comparison[rowModel,'Precision' ] <-model$byClass["Precision"]
  comparison[rowModel,'Sensitivity' ] <-model$byClass["Sensitivity"]
  comparison[rowModel,'Specificity' ] <-model$byClass["Specificity"] ## IMPORTANTE
  comparison[rowModel,'Recall' ] <-model$byClass["Recall"]
  comparison[rowModel,'F1' ] <-model$byClass["F1"]
}
comparison
colnames(comparison) <- c("            model","Sensitivity","Specificity"," Precision","    Recall","        F1");
write.csv(comparison[,1:6],file="UPRIVADA_ModeloGeneral.csv", sep=",",row.names = FALSE)