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
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 ...
#knitr::kable(head(DataSetUPRIVADAFRMTO), caption = "Table with kable",)
DataSetUPRIVADAFRMTO
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
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")
Una vez observada nuestra variable objetivo y su distribución analizaremos las variables CUANTITATIVAS
##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 = "%")
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))
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")
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
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
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")
##############################################################
################## 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 ########
########################################
# 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 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
#####################################################################################################
#####################################################################################################
###########################################################
# 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
#####################################################################################################
#####################################################################################################
####################################################
# 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 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
#####################################################################################################
###########################################################
# 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_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 #######################################################
# #################################################################################################################
# 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)