library(readxl)
data <- read_excel("C:/Users/emper/OneDrive/Base_tp_Mat_Pura.xlsx")
View(data)
head(data)
## # A tibble: 6 × 44
##    IDEM     CI SEXO  CARRERA ING_A ING_P TIPO_INGRESO MODALIDAD ANTES ASIG_APROB
##   <dbl>  <dbl> <chr> <chr>   <dbl> <chr> <chr>        <chr>     <dbl>      <dbl>
## 1     2 8.08e5 F     2009P    2009 Prim… INGRESO      Presenci…    NA         40
## 2    11 2.99e6 M     2009P    2009 Prim… INGRESO      Presenci…    NA         40
## 3    12 3.01e6 F     2009P    2009 Prim… TRASLADO     Presenci…     1          3
## 4    22 3.46e6 F     2009P    2009 Prim… INGRESO      Presenci…    NA         23
## 5    24 3.57e6 F     2009P    2009 Prim… INGRESO      Presenci…    NA          8
## 6    29 3.87e6 F     2009P    2009 Prim… INGRESO      Presenci…    NA          6
## # ℹ 34 more variables: SIT_ACAD <chr>, ESTADO_ACADEMICO <dbl>,
## #   RENDIMIENTO <chr>, CIUDAD <chr>, DEPARTAMENTO <chr>, RESIDENCIA <chr>,
## #   EDAD <dbl>, EST_CIVIL <dbl>, TIPO_COL <dbl>, TRABAJA <dbl>,
## #   SOLVENTAR <dbl>, EDUC_PAD <dbl>, PUNT_PAD <dbl>, OCUP_PAD <dbl>,
## #   EDUC_MAD <dbl>, PUNT_MAD <dbl>, OCUP_MAD <dbl>, OCUP_PAD_MAD <dbl>,
## #   ESTUDIOS_PADRES <dbl>, INGRESO <dbl>, DEPENDENCIA <dbl>, CASA <dbl>,
## #   CASA_CANT <chr>, TERRENO <dbl>, AUTO <dbl>, AIRE <dbl>, CALEFON <chr>, …
library(dplyr) 
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(MASS)
## 
## Adjuntando el paquete: 'MASS'
## The following object is masked from 'package:dplyr':
## 
##     select
library(car)
## Cargando paquete requerido: carData
## 
## Adjuntando el paquete: 'car'
## The following object is masked from 'package:dplyr':
## 
##     recode
library(caret)
## Cargando paquete requerido: lattice
library(readxl)
library(gmodels)
table(data$ESTADO_ACADEMICO)
## 
##   0   1 
##  54 118
data$ESTADO_ACADEMICO <- factor(data$ESTADO_ACADEMICO, 
                    levels = c("0","1"),
                    labels = c("NO DESERTOR", "DESERTOR"))
# Gráfico de barras con colores vivos y etiquetas de valor
ggplot(data, aes(x = ESTADO_ACADEMICO)) + 
  geom_bar(aes(fill = ESTADO_ACADEMICO)) + 
  scale_fill_manual(values = c("green", "red")) +  
  geom_text(stat = 'count', aes(label = after_stat(count)), vjust = -0.5) + 
  theme_minimal() + 
  labs(title = "Distribución del Estado Académico. Area Matemática. FACEN-UNA", 
       y = "Frecuencia") + 
  theme(legend.position = "none")

# Tabla de frecuencias absolutas y relativas para toda la población
frecuencia_absoluta_total <- table(data$SIT_ACAD)
frecuencia_relativa_total <- prop.table(frecuencia_absoluta_total)

# Crear un data frame con ambas frecuencias
tabla_frecuencias_total <- data.frame(
  "SIT_ACAD" = names(frecuencia_absoluta_total),
  "Frecuencia Absoluta" = as.numeric(frecuencia_absoluta_total),
  "Frecuencia Relativa (%)" = round(100 * as.numeric(frecuencia_relativa_total), 2)
)

# Mostrar la tabla
tabla_frecuencias_total
##    SIT_ACAD Frecuencia.Absoluta Frecuencia.Relativa....
## 1    ACTIVO                  21                   12.21
## 2 DESERCIÓN                 118                   68.60
## 3    EGRESO                  33                   19.19
boxplot(ESTADO_ACADEMICO~SIT_ACAD, data=data)

#Para convertir varias variables a factor
#Las guardamos en un vector
cols <- c("SEXO", "TIPO_INGRESO", "SIT_ACAD", "RENDIMIENTO", "DEPARTAMENTO",           "EST_CIVIL", "TIPO_COL", "TRABAJA", "SOLVENTAR", 
          "ESTUDIOS_PADRES", "INGRESO", "NIVEL_SOCIO", 
          "OCUP_PAD", "OCUP_MAD", "RESIDENCIA")
#Le aplicamos una misma función a todas las colum=nas con lapply  
data[cols] <- lapply(data[cols], factor)
data$SEXO <- factor(data$SEXO, 
                    levels = c("F","M"),
                    labels = c("FEMENINO", "MASCULINO"))
data$TIPO_INGRESO <- factor(data$TIPO_INGRESO, 
                            levels = c("INGRESO","TRASLADO", "ADMISION DIRECTA"),
                            labels = c("INGRESO","TRASLADO", "ADMISION DIRECTA"))
data$SIT_ACAD <- factor(data$SIT_ACAD, 
                        levels = c("EGRESO","ACTIVO", "DESERCIÓN"),
                        labels = c("EGRESO","ACTIVO", "DESERCIÓN"))
data$EST_CIVIL <- factor(data$EST_CIVIL, 
                         levels = c(1, 2, 3, 4),
                         labels = c("Soltero/a", "Casado/a","Divordiado/a","Otro"))
data$TIPO_COL <- factor(data$TIPO_COL, 
                        levels = c(1, 2, 3),
                        labels = c("Público", "subvencionado","Privado"))
data$TRABAJA <- factor(data$TRABAJA, 
                       levels = c(1, 2),
                       labels = c("SI","NO"))
data$SOLVENTAR <- factor(data$SOLVENTAR, 
                         levels = c(1, 2, 3, 4),
                         labels = c("Beca/exoneración total", "Beca/exoneración parcial","Trabajo Personal","Ayuda Familiar"))
data$ESTUDIOS_PADRES <- factor(data$ESTUDIOS_PADRES, 
                                    levels = c(1, 2, 3, 4, 5),
                                    labels = c("hasta 13 años", "14-23 años","24-29 años","30-34 años","Más de 34 años"))
data$INGRESO <- factor(data$INGRESO, 
                       levels = c(1, 2, 3, 4, 5),
                       labels = c("Hasta dos salarios mínimos", "Más de dos y hasta cinco salarios mínimos","Más de cinco y hasta diez salarios mínimos","Más de diez y hasta quince salarios mínimos","Más de quince salarios mínimos"))
data$NIVEL_SOCIO <- factor(data$NIVEL_SOCIO, 
                           levels = c("BAJO","MEDIO BAJO","MEDIO","MEDIO ALTO", "ALTO"),
                           labels = c("BAJO","MEDIO BAJO","MEDIO", "MEDIO ALTO", "ALTO"))
data$RENDIMIENTO <- factor(data$RENDIMIENTO, 
                        levels = c("APROBADO","NO APROBADO"),
                        labels = c("APROBADO","NO APROBADO"))
data$OCUP_PAD <- factor(data$OCUP_PAD, 
                       levels = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11),
                       labels = c("Obrero/a, Jornalero/a, Servicio doméstico", "Vendedor/a, Técnico/a independiente o con Oficio","Administrativo/a o Técnico/a dependiente","Policía/Militar rango subalterno/Comerciante/Docente de primaria y secundaria","Profesional dependiente o independiente/Docente Universitario","Gerente o Director dependiente/Policía/Militar rango superior", "Empresario/a", "Con ocupación no remunerada (ama de casa)", "Fallecido", "Desempleado", "No sabe"))
data$OCUP_MAD <- factor(data$OCUP_MAD, 
                        levels = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11),
                        labels = c("Obrero/a, Jornalero/a, Servicio doméstico", "Vendedor/a, Técnico/a independiente o con Oficio","Administrativo/a o Técnico/a dependiente","Policía/Militar rango subalterno/Comerciante/Docente de primaria y secundaria","Profesional dependiente o independiente/Docente Universitario","Gerente o Director dependiente/Policía/Militar rango superior", "Empresario/a", "Con ocupación no remunerada (ama de casa)", "Fallecido", "Desempleado", "No sabe"))
data$RESIDENCIA <- factor(data$RESIDENCIA, 
                        levels = c("ASUNCIÓN","CENTRAL","RESTO"),
                        labels = c("ASUNCIÓN","CENTRAL","RESTO DEL PAÍS"))
#visualizar las variables
str(data)
## tibble [172 × 44] (S3: tbl_df/tbl/data.frame)
##  $ IDEM            : num [1:172] 2 11 12 22 24 29 34 38 39 43 ...
##  $ CI              : num [1:172] 808452 2992817 3006309 3464226 3567401 ...
##  $ SEXO            : Factor w/ 2 levels "FEMENINO","MASCULINO": 1 2 1 1 1 1 1 1 2 2 ...
##  $ CARRERA         : chr [1:172] "2009P" "2009P" "2009P" "2009P" ...
##  $ ING_A           : num [1:172] 2009 2009 2009 2009 2009 ...
##  $ ING_P           : chr [1:172] "Primero" "Primero" "Primero" "Primero" ...
##  $ TIPO_INGRESO    : Factor w/ 3 levels "INGRESO","TRASLADO",..: 1 1 2 1 1 1 1 1 1 1 ...
##  $ MODALIDAD       : chr [1:172] "Presencial" "Presencial" "Presencial" "Presencial" ...
##  $ ANTES           : num [1:172] NA NA 1 NA NA NA NA NA NA NA ...
##  $ ASIG_APROB      : num [1:172] 40 40 3 23 8 6 40 40 0 0 ...
##  $ SIT_ACAD        : Factor w/ 3 levels "EGRESO","ACTIVO",..: 1 1 3 3 3 3 1 1 3 3 ...
##  $ ESTADO_ACADEMICO: Factor w/ 2 levels "NO DESERTOR",..: 1 1 2 2 2 2 1 1 2 2 ...
##  $ RENDIMIENTO     : Factor w/ 2 levels "APROBADO","NO APROBADO": 1 1 1 1 2 1 1 1 2 2 ...
##  $ CIUDAD          : chr [1:172] "ASUNCIÓN" "VILLETA" "FDO DE LA MORA" "YAGUARÓN" ...
##  $ DEPARTAMENTO    : Factor w/ 7 levels "ALTO PARAGUAY",..: 2 3 3 6 3 2 3 3 3 3 ...
##  $ RESIDENCIA      : Factor w/ 3 levels "ASUNCIÓN","CENTRAL",..: 1 2 2 3 2 1 2 2 2 2 ...
##  $ EDAD            : num [1:172] 45 19 30 22 18 19 19 18 26 20 ...
##  $ EST_CIVIL       : Factor w/ 4 levels "Soltero/a","Casado/a",..: 2 1 1 1 1 1 1 1 1 1 ...
##  $ TIPO_COL        : Factor w/ 3 levels "Público","subvencionado",..: 1 1 1 2 1 1 1 1 1 1 ...
##  $ TRABAJA         : Factor w/ 2 levels "SI","NO": 2 2 1 2 2 2 2 2 2 1 ...
##  $ SOLVENTAR       : Factor w/ 4 levels "Beca/exoneración total",..: 4 4 3 4 4 4 4 1 4 4 ...
##  $ EDUC_PAD        : num [1:172] 8 4 1 3 4 4 2 2 1 6 ...
##  $ PUNT_PAD        : num [1:172] 14 10 0 7 10 10 3 3 0 13 ...
##  $ OCUP_PAD        : Factor w/ 11 levels "Obrero/a, Jornalero/a, Servicio doméstico",..: 9 2 5 1 1 3 1 2 1 3 ...
##  $ EDUC_MAD        : num [1:172] 5 4 2 4 4 4 2 1 2 2 ...
##  $ PUNT_MAD        : num [1:172] 12 10 3 10 10 10 3 0 3 3 ...
##  $ OCUP_MAD        : Factor w/ 11 levels "Obrero/a, Jornalero/a, Servicio doméstico",..: 3 2 8 4 1 8 8 8 1 2 ...
##  $ OCUP_PAD_MAD    : num [1:172] 26 20 3 17 20 20 6 3 3 16 ...
##  $ ESTUDIOS_PADRES : Factor w/ 5 levels "hasta 13 años",..: 3 2 1 2 2 2 1 1 1 2 ...
##  $ INGRESO         : Factor w/ 5 levels "Hasta dos salarios mínimos",..: 2 1 1 1 1 1 1 1 2 1 ...
##  $ DEPENDENCIA     : num [1:172] NA NA NA NA NA NA NA NA NA NA ...
##  $ CASA            : num [1:172] 1 2 1 1 2 1 1 1 2 1 ...
##  $ CASA_CANT       : chr [1:172] "1" NA "1" "1" ...
##  $ TERRENO         : num [1:172] 1 2 1 2 2 2 1 1 2 1 ...
##  $ AUTO            : num [1:172] 1 2 2 2 2 1 1 1 2 1 ...
##  $ AIRE            : num [1:172] 1 2 2 2 2 1 2 2 2 1 ...
##  $ CALEFON         : chr [1:172] "3" NA NA NA ...
##  $ TELEFONO        : num [1:172] 1 2 1 1 1 1 2 1 2 1 ...
##  $ CABLE           : num [1:172] 1 1 2 2 2 2 2 1 1 1 ...
##  $ PC              : num [1:172] 1 2 2 1 2 1 2 2 2 1 ...
##  $ INTERNET        : num [1:172] 1 2 2 2 2 2 2 2 2 2 ...
##  $ TRANSPORTE      : chr [1:172] "1" "1" "1" "1" ...
##  $ TRANSPORTE_MEDIO: chr [1:172] NA NA NA NA ...
##  $ NIVEL_SOCIO     : Factor w/ 5 levels "BAJO","MEDIO BAJO",..: 2 1 1 2 1 2 2 1 1 2 ...

Reporte de la base de datos

summary(data)
##       IDEM             CI                 SEXO      CARRERA         
##  Min.   :  2.0   Min.   : 808452   FEMENINO :92   Length:172        
##  1st Qu.:167.8   1st Qu.:4006056   MASCULINO:80   Class :character  
##  Median :356.5   Median :4786564                  Mode  :character  
##  Mean   :360.7   Mean   :4510419                                    
##  3rd Qu.:473.2   3rd Qu.:5118704                                    
##  Max.   :759.0   Max.   :7087824                                    
##                                                                     
##      ING_A         ING_P                     TIPO_INGRESO  MODALIDAD        
##  Min.   :2009   Length:172         INGRESO         :167   Length:172        
##  1st Qu.:2011   Class :character   TRASLADO        :  1   Class :character  
##  Median :2013   Mode  :character   ADMISION DIRECTA:  4   Mode  :character  
##  Mean   :2013                                                               
##  3rd Qu.:2015                                                               
##  Max.   :2017                                                               
##                                                                             
##      ANTES          ASIG_APROB         SIT_ACAD      ESTADO_ACADEMICO
##  Min.   : 1.000   Min.   : 0.00   EGRESO   : 33   NO DESERTOR: 54    
##  1st Qu.: 3.000   1st Qu.: 0.75   ACTIVO   : 21   DESERTOR   :118    
##  Median :12.000   Median : 9.00   DESERCIÓN:118                      
##  Mean   : 9.778   Mean   :15.27                                      
##  3rd Qu.:13.000   3rd Qu.:30.00                                      
##  Max.   :19.000   Max.   :40.00                                      
##  NA's   :163                                                         
##       RENDIMIENTO     CIUDAD                    DEPARTAMENTO
##  APROBADO   :111   Length:172         ALTO PARAGUAY   : 2   
##  NO APROBADO: 61   Class :character   ASUNCIÓN        :60   
##                    Mode  :character   CENTRAL         :94   
##                                       CORDILLERA      : 5   
##                                       GUAIRÁ          : 1   
##                                       PARAGUARÍ       : 6   
##                                       PRESIDENTE HAYES: 4   
##           RESIDENCIA      EDAD              EST_CIVIL            TIPO_COL  
##  ASUNCIÓN      :60   Min.   :18.00   Soltero/a   :149   Público      :120  
##  CENTRAL       :94   1st Qu.:19.00   Casado/a    : 22   subvencionado: 14  
##  RESTO DEL PAÍS:18   Median :20.27   Divordiado/a:  1   Privado      : 38  
##                      Mean   :24.43   Otro        :  0                      
##                      3rd Qu.:26.00                                         
##                      Max.   :61.00                                         
##                                                                            
##  TRABAJA                     SOLVENTAR     EDUC_PAD         PUNT_PAD    
##  SI: 56   Beca/exoneración total  :24   Min.   : 1.000   Min.   : 0.00  
##  NO:116   Beca/exoneración parcial:11   1st Qu.: 2.000   1st Qu.: 3.00  
##           Trabajo Personal        :51   Median : 4.500   Median :11.00  
##           Ayuda Familiar          :86   Mean   : 4.872   Mean   :10.01  
##                                         3rd Qu.: 7.000   3rd Qu.:14.00  
##                                         Max.   :10.000   Max.   :20.00  
##                                                                         
##                                                           OCUP_PAD 
##  Obrero/a, Jornalero/a, Servicio doméstico                    :65  
##  Vendedor/a, Técnico/a independiente o con Oficio             :33  
##  Administrativo/a o Técnico/a dependiente                     :17  
##  Profesional dependiente o independiente/Docente Universitario:15  
##  Fallecido                                                    :13  
##  No sabe                                                      : 9  
##  (Other)                                                      :20  
##     EDUC_MAD         PUNT_MAD     
##  Min.   : 1.000   Min.   : 0.000  
##  1st Qu.: 3.000   1st Qu.: 7.000  
##  Median : 4.000   Median :10.000  
##  Mean   : 4.599   Mean   : 9.535  
##  3rd Qu.: 6.000   3rd Qu.:13.000  
##  Max.   :10.000   Max.   :20.000  
##                                   
##                                                                           OCUP_MAD 
##  Con ocupación no remunerada (ama de casa)                                    :59  
##  Obrero/a, Jornalero/a, Servicio doméstico                                    :43  
##  Vendedor/a, Técnico/a independiente o con Oficio                             :19  
##  Policía/Militar rango subalterno/Comerciante/Docente de primaria y secundaria:14  
##  Profesional dependiente o independiente/Docente Universitario                :13  
##  Administrativo/a o Técnico/a dependiente                                     :10  
##  (Other)                                                                      :14  
##   OCUP_PAD_MAD         ESTUDIOS_PADRES
##  Min.   : 0.00   hasta 13 años :45    
##  1st Qu.:13.00   14-23 años    :57    
##  Median :20.00   24-29 años    :46    
##  Mean   :19.54   30-34 años    :19    
##  3rd Qu.:27.00   Más de 34 años: 5    
##  Max.   :40.00                        
##                                       
##                                         INGRESO     DEPENDENCIA    
##  Hasta dos salarios mínimos                 :134   Min.   : 1.000  
##  Más de dos y hasta cinco salarios mínimos  : 28   1st Qu.: 3.000  
##  Más de cinco y hasta diez salarios mínimos :  6   Median : 4.000  
##  Más de diez y hasta quince salarios mínimos:  1   Mean   : 3.994  
##  Más de quince salarios mínimos             :  3   3rd Qu.: 5.000  
##                                                    Max.   :10.000  
##                                                    NA's   :15      
##       CASA       CASA_CANT            TERRENO           AUTO      
##  Min.   :1.00   Length:172         Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.00   Class :character   1st Qu.:1.000   1st Qu.:1.000  
##  Median :1.00   Mode  :character   Median :2.000   Median :2.000  
##  Mean   :1.23                      Mean   :1.724   Mean   :1.626  
##  3rd Qu.:1.00                      3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :2.00                      Max.   :2.000   Max.   :2.000  
##  NA's   :46                        NA's   :27      NA's   :1      
##       AIRE         CALEFON             TELEFONO         CABLE      
##  Min.   :1.000   Length:172         Min.   :1.000   Min.   :1.000  
##  1st Qu.:1.000   Class :character   1st Qu.:1.000   1st Qu.:1.000  
##  Median :2.000   Mode  :character   Median :2.000   Median :2.000  
##  Mean   :1.503                      Mean   :1.579   Mean   :1.528  
##  3rd Qu.:2.000                      3rd Qu.:2.000   3rd Qu.:2.000  
##  Max.   :2.000                      Max.   :2.000   Max.   :2.000  
##  NA's   :1                          NA's   :1       NA's   :28     
##        PC           INTERNET       TRANSPORTE        TRANSPORTE_MEDIO  
##  Min.   :1.000   Min.   : 1.000   Length:172         Length:172        
##  1st Qu.:1.000   1st Qu.: 1.000   Class :character   Class :character  
##  Median :1.000   Median : 1.000   Mode  :character   Mode  :character  
##  Mean   :1.316   Mean   : 1.533                                        
##  3rd Qu.:2.000   3rd Qu.: 2.000                                        
##  Max.   :2.000   Max.   :11.000                                        
##  NA's   :1       NA's   :50                                            
##      NIVEL_SOCIO 
##  BAJO      : 25  
##  MEDIO BAJO:128  
##  MEDIO     : 19  
##  MEDIO ALTO:  0  
##  ALTO      :  0  
##                  
## 

FRECUENCIAS SIMPLES

table(data$SEXO)
## 
##  FEMENINO MASCULINO 
##        92        80
table(data$TIPO_INGRESO)
## 
##          INGRESO         TRASLADO ADMISION DIRECTA 
##              167                1                4
table(data$SIT_ACAD)
## 
##    EGRESO    ACTIVO DESERCIÓN 
##        33        21       118
table(data$EST_CIVIL)
## 
##    Soltero/a     Casado/a Divordiado/a         Otro 
##          149           22            1            0
table(data$RENDIMIENTO)
## 
##    APROBADO NO APROBADO 
##         111          61
table(data$DEPARTAMENTO)
## 
##    ALTO PARAGUAY         ASUNCIÓN          CENTRAL       CORDILLERA 
##                2               60               94                5 
##           GUAIRÁ        PARAGUARÍ PRESIDENTE HAYES 
##                1                6                4
table(data$TIPO_COL)
## 
##       Público subvencionado       Privado 
##           120            14            38
table(data$TRABAJA)
## 
##  SI  NO 
##  56 116
table(data$SOLVENTAR)
## 
##   Beca/exoneración total Beca/exoneración parcial         Trabajo Personal 
##                       24                       11                       51 
##           Ayuda Familiar 
##                       86
table(data$ESTUDIOS_PADRES)
## 
##  hasta 13 años     14-23 años     24-29 años     30-34 años Más de 34 años 
##             45             57             46             19              5
table(data$OCUP_PAD)
## 
##                                     Obrero/a, Jornalero/a, Servicio doméstico 
##                                                                            65 
##                              Vendedor/a, Técnico/a independiente o con Oficio 
##                                                                            33 
##                                      Administrativo/a o Técnico/a dependiente 
##                                                                            17 
## Policía/Militar rango subalterno/Comerciante/Docente de primaria y secundaria 
##                                                                             6 
##                 Profesional dependiente o independiente/Docente Universitario 
##                                                                            15 
##                 Gerente o Director dependiente/Policía/Militar rango superior 
##                                                                             2 
##                                                                  Empresario/a 
##                                                                             5 
##                                     Con ocupación no remunerada (ama de casa) 
##                                                                             5 
##                                                                     Fallecido 
##                                                                            13 
##                                                                   Desempleado 
##                                                                             2 
##                                                                       No sabe 
##                                                                             9
table(data$OCUP_MAD)
## 
##                                     Obrero/a, Jornalero/a, Servicio doméstico 
##                                                                            43 
##                              Vendedor/a, Técnico/a independiente o con Oficio 
##                                                                            19 
##                                      Administrativo/a o Técnico/a dependiente 
##                                                                            10 
## Policía/Militar rango subalterno/Comerciante/Docente de primaria y secundaria 
##                                                                            14 
##                 Profesional dependiente o independiente/Docente Universitario 
##                                                                            13 
##                 Gerente o Director dependiente/Policía/Militar rango superior 
##                                                                             2 
##                                                                  Empresario/a 
##                                                                             6 
##                                     Con ocupación no remunerada (ama de casa) 
##                                                                            59 
##                                                                     Fallecido 
##                                                                             2 
##                                                                   Desempleado 
##                                                                             1 
##                                                                       No sabe 
##                                                                             3
table(data$RESIDENCIA)
## 
##       ASUNCIÓN        CENTRAL RESTO DEL PAÍS 
##             60             94             18
table(data$NIVEL_SOCIO)
## 
##       BAJO MEDIO BAJO      MEDIO MEDIO ALTO       ALTO 
##         25        128         19          0          0
levels(data$OCUP_PAD)
##  [1] "Obrero/a, Jornalero/a, Servicio doméstico"                                    
##  [2] "Vendedor/a, Técnico/a independiente o con Oficio"                             
##  [3] "Administrativo/a o Técnico/a dependiente"                                     
##  [4] "Policía/Militar rango subalterno/Comerciante/Docente de primaria y secundaria"
##  [5] "Profesional dependiente o independiente/Docente Universitario"                
##  [6] "Gerente o Director dependiente/Policía/Militar rango superior"                
##  [7] "Empresario/a"                                                                 
##  [8] "Con ocupación no remunerada (ama de casa)"                                    
##  [9] "Fallecido"                                                                    
## [10] "Desempleado"                                                                  
## [11] "No sabe"
library(dplyr)
data$OCUP_PAD_REC <- case_when(
  data$OCUP_PAD == 1 ~ '1-Obrero/a, Jornalero/a, Servicio doméstico',
  data$OCUP_PAD == 2 ~ '2-Vendedor/a, Técnico/a independiente o con Oficio',
  data$OCUP_PAD == 3 ~ '3-Administrativo/a o Técnico/a dependiente',
  data$OCUP_PAD == 4 ~ '4/6-Policía/Militar rango subalterno o superior, Comerciante/Docente',
  data$OCUP_PAD == 6 ~ '4/6-Policía/Militar rango subalterno o superior, Comerciante/Docente',
  data$OCUP_PAD == 5 ~ '5-Profesional dependiente o independiente/Docente Universitario',
  data$OCUP_PAD == 7 ~ '7-Empresario/a',
  data$OCUP_PAD == 8 ~ '8-Con ocupación no remunerada (ama de casa)',
  data$OCUP_PAD %in% c(9, 10, 11) ~ '9/10/11-Fallecido, Desempleado o No sabe',
  TRUE ~ NA_character_
)

# Verificar la nueva variable recategorizada
table(data$OCUP_PAD_REC)
## < table of extent 0 >
levels(data$OCUP_MAD)
##  [1] "Obrero/a, Jornalero/a, Servicio doméstico"                                    
##  [2] "Vendedor/a, Técnico/a independiente o con Oficio"                             
##  [3] "Administrativo/a o Técnico/a dependiente"                                     
##  [4] "Policía/Militar rango subalterno/Comerciante/Docente de primaria y secundaria"
##  [5] "Profesional dependiente o independiente/Docente Universitario"                
##  [6] "Gerente o Director dependiente/Policía/Militar rango superior"                
##  [7] "Empresario/a"                                                                 
##  [8] "Con ocupación no remunerada (ama de casa)"                                    
##  [9] "Fallecido"                                                                    
## [10] "Desempleado"                                                                  
## [11] "No sabe"
library(dplyr)
data$OCUP_MAD_REC <- case_when(
  data$OCUP_MAD == 1 ~ '1-Obrero/a, Jornalero/a, Servicio doméstico',
  data$OCUP_MAD == 2 ~ '2-Vendedor/a, Técnico/a independiente o con Oficio',
  data$OCUP_MAD == 3 ~ '3-Administrativo/a o Técnico/a dependiente',
  data$OCUP_MAD == 4 ~ '4/6-Policía/Militar rango subalterno o superior, Comerciante/Docente',
  data$OCUP_MAD == 6 ~ '4/6-Policía/Militar rango subalterno o superior, Comerciante/Docente',
  data$OCUP_MAD == 5 ~ '5-Profesional dependiente o independiente/Docente Universitario',
  data$OCUP_MAD == 7 ~ '7-Empresario/a',
  data$OCUP_MAD == 8 ~ '8-Con ocupación no remunerada (ama de casa)',
  data$OCUP_MAD %in% c(9, 10, 11) ~ '9/10/11-Fallecido, Desempleado o No sabe',
  TRUE ~ NA_character_
)

# Verificar la nueva variable recategorizada
table(data$OCUP_MAD_REC)
## < table of extent 0 >
# Suponiendo que 'data' es el conjunto de datos y 'ESTADO_ACADEMICO' es la variable de respuesta

# Crear un data.frame vacío para almacenar los resultados
resultados_chi <- data.frame(Variable = character(), Estadistico = numeric(), P_Valor = numeric(), Significancia = character(), stringsAsFactors = FALSE)

# Listado de las covariables
covariables <- c("RESIDENCIA", "TIPO_INGRESO", "SIT_ACAD", "RENDIMIENTO", 
                 "TRABAJA", "SOLVENTAR","ESTUDIOS_PADRES",  
                  "SEXO", "TIPO_COL", "INGRESO", "EST_CIVIL")

# Calcular las pruebas de chi-cuadrado o Fisher para cada covariable
for (var in covariables) {
  tabla <- table(data[[var]], data$ESTADO_ACADEMICO)  # Crear tabla de contingencia
  
  # Revisar si alguna celda tiene un valor menor a 5
  if (any(tabla < 5)) {
    # Usar prueba exacta de Fisher en caso de tablas pequeñas
    chi_test <- fisher.test(tabla)
    estadistico <- NA  # Fisher no proporciona un estadístico de chi-cuadrado
  } else {
    # Usar la prueba de chi-cuadrado
    chi_test <- chisq.test(tabla)
    estadistico <- chi_test$statistic  # Obtener el valor del estadístico
  }
  
  # Verificar si el p-value es un número
  if (!is.na(chi_test$p.value)) {
    # Determinar el nivel de significancia
    if (chi_test$p.value < 0.01) {
      significancia <- "*** (p < 0.01)"
    } else if (chi_test$p.value < 0.05) {
      significancia <- "** (p < 0.05)"
    } else if (chi_test$p.value < 0.1) {
      significancia <- "* (p < 0.1)"
    } else {
      significancia <- "No significativo"
    }
    
    # Agregar los resultados al data.frame
    resultados_chi <- rbind(resultados_chi, data.frame(
      Variable = var,
      Estadistico = estadistico,
      P_Valor = chi_test$p.value,
      Significancia = significancia,
      stringsAsFactors = FALSE
    ))
  }
}
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
# Ordenar los resultados por p-valor
resultados_chi <- resultados_chi[order(resultados_chi$P_Valor), ]

# Mostrar los resultadosm


print(resultados_chi)
##                   Variable Estadistico      P_Valor    Significancia
## 11                SIT_ACAD          NA 5.066139e-46   *** (p < 0.01)
## 12             RENDIMIENTO          NA 1.682786e-10   *** (p < 0.01)
## X-squared2       SOLVENTAR  9.93788556 1.910158e-02    ** (p < 0.05)
## X-squared1         TRABAJA  3.17416522 7.481143e-02      * (p < 0.1)
## 1             TIPO_INGRESO          NA 9.211163e-02      * (p < 0.1)
## 15               EST_CIVIL          NA 1.007470e-01 No significativo
## X-squared4        TIPO_COL  2.43640756 2.957609e-01 No significativo
## 14                 INGRESO          NA 6.314287e-01 No significativo
## X-squared3            SEXO  0.20774414 6.485413e-01 No significativo
## 13         ESTUDIOS_PADRES          NA 7.321888e-01 No significativo
## X-squared       RESIDENCIA  0.04636686 9.770832e-01 No significativo

#explicar estado civil en relacion al modelo, pues en el analisis bivariante resulto en su no aparicion.

# Tabla de frecuencias de la variable ESTADO_ACADEMICO
table(data$ING_A)
## 
## 2009 2010 2011 2012 2013 2014 2015 2016 2017 
##   14    7   28   19   27   23   15   21   18
# Tabla de frecuencias de la variable ESTADO_ACADEMICO
table(data$DEPARTAMENTO)
## 
##    ALTO PARAGUAY         ASUNCIÓN          CENTRAL       CORDILLERA 
##                2               60               94                5 
##           GUAIRÁ        PARAGUARÍ PRESIDENTE HAYES 
##                1                6                4
# Tabla de frecuencias de la variable ESTADO_ACADEMICO
table(data$OCUP_PAD)
## 
##                                     Obrero/a, Jornalero/a, Servicio doméstico 
##                                                                            65 
##                              Vendedor/a, Técnico/a independiente o con Oficio 
##                                                                            33 
##                                      Administrativo/a o Técnico/a dependiente 
##                                                                            17 
## Policía/Militar rango subalterno/Comerciante/Docente de primaria y secundaria 
##                                                                             6 
##                 Profesional dependiente o independiente/Docente Universitario 
##                                                                            15 
##                 Gerente o Director dependiente/Policía/Militar rango superior 
##                                                                             2 
##                                                                  Empresario/a 
##                                                                             5 
##                                     Con ocupación no remunerada (ama de casa) 
##                                                                             5 
##                                                                     Fallecido 
##                                                                            13 
##                                                                   Desempleado 
##                                                                             2 
##                                                                       No sabe 
##                                                                             9
# Tabla de frecuencias de la variable ESTADO_ACADEMICO
table(data$OCUP_MAD)
## 
##                                     Obrero/a, Jornalero/a, Servicio doméstico 
##                                                                            43 
##                              Vendedor/a, Técnico/a independiente o con Oficio 
##                                                                            19 
##                                      Administrativo/a o Técnico/a dependiente 
##                                                                            10 
## Policía/Militar rango subalterno/Comerciante/Docente de primaria y secundaria 
##                                                                            14 
##                 Profesional dependiente o independiente/Docente Universitario 
##                                                                            13 
##                 Gerente o Director dependiente/Policía/Militar rango superior 
##                                                                             2 
##                                                                  Empresario/a 
##                                                                             6 
##                                     Con ocupación no remunerada (ama de casa) 
##                                                                            59 
##                                                                     Fallecido 
##                                                                             2 
##                                                                   Desempleado 
##                                                                             1 
##                                                                       No sabe 
##                                                                             3
# Tabla de frecuencias de la variable ESTADO_ACADEMICO
table(data$INGRESO)
## 
##                  Hasta dos salarios mínimos 
##                                         134 
##   Más de dos y hasta cinco salarios mínimos 
##                                          28 
##  Más de cinco y hasta diez salarios mínimos 
##                                           6 
## Más de diez y hasta quince salarios mínimos 
##                                           1 
##              Más de quince salarios mínimos 
##                                           3
# Tabla de frecuencias de la variable ESTADO_ACADEMICO
table(data$NIVEL_SOCIO)
## 
##       BAJO MEDIO BAJO      MEDIO MEDIO ALTO       ALTO 
##         25        128         19          0          0
# Boxplot para ESTUDIOS_PADRES según SITUACION_ACADEMICA
ggplot(data, aes(x = ESTADO_ACADEMICO, y = EDAD)) +
  geom_boxplot(fill = "skyblue", color = "darkblue") +
  labs(title = "Boxplot de Estudios Padres por Situación Académica",
       x = "Estado Académico",
       y = "Edad") +
  theme_minimal()

# Boxplot para ASIG_APROB según SITUACION_ACADEMICA
ggplot(data, aes(x = ESTADO_ACADEMICO, y = ASIG_APROB)) +
  geom_boxplot(fill = "lightgreen", color = "darkgreen") +
  labs(title = "Boxplot de Asignaturas Aprobadas por Situación Académica",
       x = "Estado Académico",
       y = "Asignaturas Aprobadas") +
  theme_minimal()

#install.packages(c("ggplot2", "pscl", "dplyr", "car", "broom", "ROCR", "MASS"))
# Cargar los paquetes
library(ggplot2)
library(pscl)
## Classes and Methods for R originally developed in the
## Political Science Computational Laboratory
## Department of Political Science
## Stanford University (2002-2015),
## by and under the direction of Simon Jackman.
## hurdle and zeroinfl functions by Achim Zeileis.
library(dplyr)
library(car)
library(broom)
library(ROCR)
library(MASS)
# Ajustar el modelo de regresión logística bivariada para APROB_ASIG
modelo_aprob_asig <- glm(ESTADO_ACADEMICO ~ ASIG_APROB, family = binomial, data = data)
summary_aprob_asig <- summary(modelo_aprob_asig)

# Ajustar el modelo de regresión logística bivariada para EDAD
modelo_edad <- glm(ESTADO_ACADEMICO ~ EDAD, family = binomial, data = data)
summary_edad <- summary(modelo_edad)

# Crear una tabla con los resultados
resultados <- data.frame(
  Variable = c("ASIG_APROB", "EDAD"),
  Coeficiente = c(coef(summary_aprob_asig)[2, 1], coef(summary_edad)[2, 1]),
  Estadistico_z = c(coef(summary_aprob_asig)[2, 3], coef(summary_edad)[2, 3]),
  P_Valor = c(coef(summary_aprob_asig)[2, 4], coef(summary_edad)[2, 4]),
  Significancia = c(
    ifelse(coef(summary_aprob_asig)[2, 4] < 0.01, "*** (p < 0.01)",
           ifelse(coef(summary_aprob_asig)[2, 4] < 0.05, "** (p < 0.05)",
                  ifelse(coef(summary_aprob_asig)[2, 4] < 0.1, "* (p < 0.1)", "No significativo"))),
    ifelse(coef(summary_edad)[2, 4] < 0.01, "*** (p < 0.01)",
           ifelse(coef(summary_edad)[2, 4] < 0.05, "** (p < 0.05)",
                  ifelse(coef(summary_edad)[2, 4] < 0.1, "* (p < 0.1)", "No significativo")))
  )
)

# Mostrar la tabla
print(resultados)
##     Variable Coeficiente Estadistico_z      P_Valor  Significancia
## 1 ASIG_APROB  -0.3213448     -4.965362 6.857292e-07 *** (p < 0.01)
## 2       EDAD   0.0360694      1.656090 9.770354e-02    * (p < 0.1)
# Ajustar el modelo de regresión logística con ASIG_APROB como predictor
modelo_logisticoasig <- glm(ESTADO_ACADEMICO ~ ASIG_APROB, data = data, family = binomial)
# Resumen del modelo para ver los coeficientes y p-valores
summary(modelo_logisticoasig)
## 
## Call:
## glm(formula = ESTADO_ACADEMICO ~ ASIG_APROB, family = binomial, 
##     data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  7.24046    1.42421   5.084 3.70e-07 ***
## ASIG_APROB  -0.32134    0.06472  -4.965 6.86e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.046  on 171  degrees of freedom
## Residual deviance:  36.628  on 170  degrees of freedom
## AIC: 40.628
## 
## Number of Fisher Scoring iterations: 8
# Calcular los odds ratios
odds_ratiosasig <- exp(coef(modelo_logisticoasig))

# Mostrar los odds ratios
print(odds_ratiosasig)
##  (Intercept)   ASIG_APROB 
## 1394.7340160    0.7251731
table(data$TIPO_INGRESO)
## 
##          INGRESO         TRASLADO ADMISION DIRECTA 
##              167                1                4
# Crear un data.frame vacío para almacenar los resultados de las pruebas de asociación
resultados_asociacion <- data.frame(Variable1 = character(), Variable2 = character(), Estadistico = numeric(), P_Valor = numeric(), Significancia = character(), stringsAsFactors = FALSE)

# Listado de las covariables a analizar
covariables <- c("RESIDENCIA", "TIPO_INGRESO", "RENDIMIENTO", 
                 "TRABAJA", "SOLVENTAR","ESTUDIOS_PADRES",  
                  "SEXO", "TIPO_COL", "INGRESO", "EST_CIVIL")

# Calcular las pruebas de chi-cuadrado para cada par de covariables
for (i in 1:(length(covariables)-1)) {
  for (j in (i+1):length(covariables)) {
    var1 <- covariables[i]
    var2 <- covariables[j]
    
    # Crear la tabla de contingencia
    tabla <- table(data[[var1]], data[[var2]])
    
    # Usar la prueba de chi-cuadrado
    test_result <- chisq.test(tabla)
    estadistico <- test_result$statistic
    
    # Verificar si el p-value es un número válido
    if (!is.na(test_result$p.value)) {
      # Determinar el nivel de significancia
      if (test_result$p.value < 0.01) {
        significancia <- "*** (p < 0.01)"
      } else if (test_result$p.value < 0.05) {
        significancia <- "** (p < 0.05)"
      } else if (test_result$p.value < 0.1) {
        significancia <- "* (p < 0.1)"
      } else {
        significancia <- "No significativo"
      }
      
      # Agregar los resultados al data.frame
      resultados_asociacion <- rbind(resultados_asociacion, data.frame(
        Variable1 = var1,
        Variable2 = var2,
        Estadistico = estadistico,
        P_Valor = test_result$p.value,
        Significancia = significancia,
        stringsAsFactors = FALSE
      ))
    }
  }
}
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
## Warning in chisq.test(tabla): Chi-squared approximation may be incorrect
# Ordenar los resultados por p-valor
resultados_asociacion <- resultados_asociacion[order(resultados_asociacion$P_Valor), ]

# Mostrar los resultados
print(resultados_asociacion)
##                   Variable1       Variable2 Estadistico      P_Valor
## X-squared21         TRABAJA       SOLVENTAR  95.4592647 1.471002e-20
## X-squared32 ESTUDIOS_PADRES         INGRESO  54.5569827 4.203988e-06
## X-squared9     TIPO_INGRESO         TRABAJA  10.6672370 4.826574e-03
## X-squared10    TIPO_INGRESO       SOLVENTAR  17.7880389 6.784314e-03
## X-squared6       RESIDENCIA        TIPO_COL  10.8219138 2.864007e-02
## X-squared23         TRABAJA            SEXO   4.4325187 3.526044e-02
## X-squared24         TRABAJA        TIPO_COL   6.3691198 4.139646e-02
## X-squared35        TIPO_COL         INGRESO  15.2573642 5.433017e-02
## X-squared15     RENDIMIENTO         TRABAJA   3.6793668 5.508977e-02
## X-squared31 ESTUDIOS_PADRES        TIPO_COL  14.7842411 6.347905e-02
## X-squared26       SOLVENTAR ESTUDIOS_PADRES  18.2023540 1.096831e-01
## X-squared34            SEXO         INGRESO   7.3820919 1.170223e-01
## X-squared16     RENDIMIENTO       SOLVENTAR   5.7610360 1.238331e-01
## X-squared28       SOLVENTAR        TIPO_COL  10.0025246 1.245457e-01
## X-squared25         TRABAJA         INGRESO   6.2593069 1.806019e-01
## X-squared29       SOLVENTAR         INGRESO  15.0443509 2.390200e-01
## X-squared27       SOLVENTAR            SEXO   4.1688847 2.437956e-01
## X-squared4       RESIDENCIA ESTUDIOS_PADRES   9.3847211 3.108876e-01
## X-squared12    TIPO_INGRESO            SEXO   2.1854042 3.353092e-01
## X-squared        RESIDENCIA    TIPO_INGRESO   4.2731558 3.702986e-01
## X-squared19     RENDIMIENTO        TIPO_COL   1.9562434 3.760167e-01
## X-squared22         TRABAJA ESTUDIOS_PADRES   3.7255044 4.444273e-01
## X-squared3       RESIDENCIA       SOLVENTAR   5.8011731 4.458275e-01
## X-squared1       RESIDENCIA     RENDIMIENTO   1.4423188 4.861882e-01
## X-squared18     RENDIMIENTO            SEXO   0.4623384 4.965331e-01
## X-squared2       RESIDENCIA         TRABAJA   1.3547136 5.079579e-01
## X-squared17     RENDIMIENTO ESTUDIOS_PADRES   3.1928485 5.260868e-01
## X-squared11    TIPO_INGRESO ESTUDIOS_PADRES   6.6717232 5.724293e-01
## X-squared8     TIPO_INGRESO     RENDIMIENTO   0.9201163 6.312469e-01
## X-squared13    TIPO_INGRESO        TIPO_COL   2.4289421 6.574034e-01
## X-squared20     RENDIMIENTO         INGRESO   2.3960993 6.633323e-01
## X-squared7       RESIDENCIA         INGRESO   5.5693490 6.953452e-01
## X-squared30 ESTUDIOS_PADRES            SEXO   1.8141842 7.698863e-01
## X-squared33            SEXO        TIPO_COL   0.3645652 8.333658e-01
## X-squared5       RESIDENCIA            SEXO   0.1331789 9.355792e-01
## X-squared14    TIPO_INGRESO         INGRESO   1.4603629 9.933467e-01
##                Significancia
## X-squared21   *** (p < 0.01)
## X-squared32   *** (p < 0.01)
## X-squared9    *** (p < 0.01)
## X-squared10   *** (p < 0.01)
## X-squared6     ** (p < 0.05)
## X-squared23    ** (p < 0.05)
## X-squared24    ** (p < 0.05)
## X-squared35      * (p < 0.1)
## X-squared15      * (p < 0.1)
## X-squared31      * (p < 0.1)
## X-squared26 No significativo
## X-squared34 No significativo
## X-squared16 No significativo
## X-squared28 No significativo
## X-squared25 No significativo
## X-squared29 No significativo
## X-squared27 No significativo
## X-squared4  No significativo
## X-squared12 No significativo
## X-squared   No significativo
## X-squared19 No significativo
## X-squared22 No significativo
## X-squared3  No significativo
## X-squared1  No significativo
## X-squared18 No significativo
## X-squared2  No significativo
## X-squared17 No significativo
## X-squared11 No significativo
## X-squared8  No significativo
## X-squared13 No significativo
## X-squared20 No significativo
## X-squared7  No significativo
## X-squared30 No significativo
## X-squared33 No significativo
## X-squared5  No significativo
## X-squared14 No significativo
# Listado de las covariables seleccionadas
covariables <- c("SOLVENTAR","ESTUDIOS_PADRES","SEXO","INGRESO","RENDIMIENTO","TIPO_COL","TRABAJA","RESIDENCIA","TIPO_INGRESO","EST_CIVIL","EDAD")

# Crear una lista para almacenar los modelos ajustados
modelos_logisticos <- list()

# Iterar sobre cada covariable y ajustar un modelo de regresión logística bivariada
for (var in covariables) {
  # Ajustar el modelo de regresión logística bivariada
  formula_logit <- as.formula(paste("ESTADO_ACADEMICO ~", var))
  modelo_logistico <- glm(formula_logit, family = binomial, data = data)
  
  # Guardar el modelo en la lista
  modelos_logisticos[[var]] <- modelo_logistico
  
  # Mostrar el resumen del modelo
  cat("\nModelo de regresión logística bivariada para la covariable:", var, "\n")
  print(summary(modelo_logistico))
}
## 
## Modelo de regresión logística bivariada para la covariable: SOLVENTAR 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)   
## (Intercept)                        3.021e-15  4.082e-01   0.000  1.00000   
## SOLVENTARBeca/exoneración parcial -1.823e-01  7.303e-01  -0.250  0.80285   
## SOLVENTARTrabajo Personal          1.411e+00  5.395e-01   2.615  0.00891 **
## SOLVENTARAyuda Familiar            8.362e-01  4.710e-01   1.776  0.07579 . 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 204.32  on 168  degrees of freedom
## AIC: 212.32
## 
## Number of Fisher Scoring iterations: 4
## 
## 
## Modelo de regresión logística bivariada para la covariable: ESTUDIOS_PADRES 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##                               Estimate Std. Error z value Pr(>|z|)  
## (Intercept)                     0.5947     0.3114   1.910   0.0562 .
## ESTUDIOS_PADRES14-23 años       0.3463     0.4288   0.808   0.4194  
## ESTUDIOS_PADRES24-29 años       0.0339     0.4391   0.077   0.9385  
## ESTUDIOS_PADRES30-34 años       0.7270     0.6432   1.130   0.2583  
## ESTUDIOS_PADRESMás de 34 años  -0.1892     0.9645  -0.196   0.8445  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 211.97  on 167  degrees of freedom
## AIC: 221.97
## 
## Number of Fisher Scoring iterations: 4
## 
## 
## Modelo de regresión logística bivariada para la covariable: SEXO 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)    
## (Intercept)     0.8786     0.2290   3.837 0.000124 ***
## SEXOMASCULINO  -0.2041     0.3291  -0.620 0.535188    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 213.66  on 170  degrees of freedom
## AIC: 217.66
## 
## Number of Fisher Scoring iterations: 4
## 
## 
## Modelo de regresión logística bivariada para la covariable: INGRESO 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##                                                    Estimate Std. Error z value
## (Intercept)                                          0.8544     0.1888   4.526
## INGRESOMás de dos y hasta cinco salarios mínimos    -0.2666     0.4373  -0.610
## INGRESOMás de cinco y hasta diez salarios mínimos   -0.1613     0.8864  -0.182
## INGRESOMás de diez y hasta quince salarios mínimos  13.7117   882.7434   0.016
## INGRESOMás de quince salarios mínimos               -1.5476     1.2392  -1.249
##                                                    Pr(>|z|)    
## (Intercept)                                        6.01e-06 ***
## INGRESOMás de dos y hasta cinco salarios mínimos      0.542    
## INGRESOMás de cinco y hasta diez salarios mínimos     0.856    
## INGRESOMás de diez y hasta quince salarios mínimos    0.988    
## INGRESOMás de quince salarios mínimos                 0.212    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 211.33  on 167  degrees of freedom
## AIC: 221.33
## 
## Number of Fisher Scoring iterations: 13
## 
## 
## Modelo de regresión logística bivariada para la covariable: RENDIMIENTO 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)              0.1263     0.1902   0.664    0.507    
## RENDIMIENTONO APROBADO   3.2581     0.7437   4.381 1.18e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 171.04  on 170  degrees of freedom
## AIC: 175.04
## 
## Number of Fisher Scoring iterations: 6
## 
## 
## Modelo de regresión logística bivariada para la covariable: TIPO_COL 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)            0.65588    0.19248   3.408 0.000656 ***
## TIPO_COLsubvencionado -0.06809    0.59005  -0.115 0.908132    
## TIPO_COLPrivado        0.66588    0.44202   1.506 0.131952    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 211.48  on 169  degrees of freedom
## AIC: 217.48
## 
## Number of Fisher Scoring iterations: 4
## 
## 
## Modelo de regresión logística bivariada para la covariable: TRABAJA 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)   1.2993     0.3257   3.990 6.62e-05 ***
## TRABAJANO    -0.7329     0.3787  -1.935   0.0529 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 210.06  on 170  degrees of freedom
## AIC: 214.06
## 
## Number of Fisher Scoring iterations: 4
## 
## 
## Modelo de regresión logística bivariada para la covariable: RESIDENCIA 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##                          Estimate Std. Error z value Pr(>|z|)   
## (Intercept)               0.76913    0.27753   2.771  0.00558 **
## RESIDENCIACENTRAL         0.03796    0.35621   0.107  0.91514   
## RESIDENCIARESTO DEL PAÍS -0.07599    0.57186  -0.133  0.89429   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 214.00  on 169  degrees of freedom
## AIC: 220
## 
## Number of Fisher Scoring iterations: 4
## 
## 
## Modelo de regresión logística bivariada para la covariable: TIPO_INGRESO 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##                              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                    0.8218     0.1680   4.891    1e-06 ***
## TIPO_INGRESOTRASLADO          13.7443   882.7434   0.016   0.9876    
## TIPO_INGRESOADMISION DIRECTA  -1.9204     1.1669  -1.646   0.0998 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 210.03  on 169  degrees of freedom
## AIC: 216.03
## 
## Number of Fisher Scoring iterations: 13
## 
## 
## Modelo de regresión logística bivariada para la covariable: EST_CIVIL 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##                       Estimate Std. Error z value Pr(>|z|)    
## (Intercept)             0.6531     0.1727   3.783 0.000155 ***
## EST_CIVILCasado/a       1.1927     0.6448   1.850 0.064360 .  
## EST_CIVILDivordiado/a  13.9129   882.7434   0.016 0.987425    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 209.00  on 169  degrees of freedom
## AIC: 215
## 
## Number of Fisher Scoring iterations: 13
## 
## 
## Modelo de regresión logística bivariada para la covariable: EDAD 
## 
## Call:
## glm(formula = formula_logit, family = binomial, data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept) -0.07754    0.53175  -0.146   0.8841  
## EDAD         0.03607    0.02178   1.656   0.0977 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 210.88  on 170  degrees of freedom
## AIC: 214.88
## 
## Number of Fisher Scoring iterations: 4
# Ahora puedes analizar los coeficientes, p-valores y significancia para cada modelo
# Instalar y cargar el paquete necesario
#if (!require(broom)) install.packages("broom", dependencies = TRUE)
library(broom)

# Crear un data.frame vacío para almacenar los resultados del resumen
resumen_modelos <- data.frame(
  Modelo = integer(),
  Covariable = character(), 
  Categoria = character(), 
  Coeficiente = numeric(), 
  Z_Valor = numeric(), 
  P_Valor = numeric(), 
  Significancia = character(),
  stringsAsFactors = FALSE
)

# Listado de las covariables seleccionadas
covariables <- c("SOLVENTAR","ESTUDIOS_PADRES","SEXO","INGRESO","RENDIMIENTO","TIPO_COL","TRABAJA","RESIDENCIA","TIPO_INGRESO","EST_CIVIL","EDAD")

# Función para determinar la significancia
significancia_func <- function(p_valor) {
  if (p_valor < 0.01) {
    return("*** (p < 0.01)")
  } else if (p_valor < 0.05) {
    return("** (p < 0.05)")
  } else if (p_valor < 0.1) {
    return("* (p < 0.1)")
  } else {
    return("No significativo")
  }
}

# Iterar sobre cada covariable y ajustar un modelo de regresión logística bivariada
for (i in 1:length(covariables)) {
  var <- covariables[i]
  
  # Ajustar el modelo de regresión logística bivariada
  formula_logit <- as.formula(paste("ESTADO_ACADEMICO ~", var))
  modelo_logistico <- glm(formula_logit, family = binomial, data = data)
  
  # Extraer los resultados del modelo usando el paquete broom
  resultados <- tidy(modelo_logistico)
  
  # Agregar la covariable y número de modelo a los resultados
  resultados$Covariable <- var
  resultados$Modelo <- i
  
  # Calcular la significancia para cada fila
  resultados$Significancia <- sapply(resultados$p.value, significancia_func)
  
  # Agregar los resultados al resumen
  resumen_modelos <- rbind(resumen_modelos, data.frame(
    Modelo = resultados$Modelo,
    Covariable = resultados$Covariable,
    Categoria = resultados$term,
    Coeficiente = resultados$estimate,
    Z_Valor = resultados$statistic,
    P_Valor = resultados$p.value,
    Significancia = resultados$Significancia,
    stringsAsFactors = FALSE
  ))
}

# Ordenar por p-valor si lo prefieres
resumen_modelos <- resumen_modelos[order(resumen_modelos$P_Valor), ]

# Mostrar la tabla resumen ordenada
print(resumen_modelos)
##    Modelo      Covariable                                          Categoria
## 27      9    TIPO_INGRESO                                        (Intercept)
## 12      4         INGRESO                                        (Intercept)
## 18      5     RENDIMIENTO                             RENDIMIENTONO APROBADO
## 22      7         TRABAJA                                        (Intercept)
## 10      3            SEXO                                        (Intercept)
## 30     10       EST_CIVIL                                        (Intercept)
## 19      6        TIPO_COL                                        (Intercept)
## 24      8      RESIDENCIA                                        (Intercept)
## 3       1       SOLVENTAR                          SOLVENTARTrabajo Personal
## 23      7         TRABAJA                                          TRABAJANO
## 5       2 ESTUDIOS_PADRES                                        (Intercept)
## 31     10       EST_CIVIL                                  EST_CIVILCasado/a
## 4       1       SOLVENTAR                            SOLVENTARAyuda Familiar
## 34     11            EDAD                                               EDAD
## 29      9    TIPO_INGRESO                       TIPO_INGRESOADMISION DIRECTA
## 21      6        TIPO_COL                                    TIPO_COLPrivado
## 16      4         INGRESO              INGRESOMás de quince salarios mínimos
## 8       2 ESTUDIOS_PADRES                          ESTUDIOS_PADRES30-34 años
## 6       2 ESTUDIOS_PADRES                          ESTUDIOS_PADRES14-23 años
## 17      5     RENDIMIENTO                                        (Intercept)
## 11      3            SEXO                                      SEXOMASCULINO
## 13      4         INGRESO   INGRESOMás de dos y hasta cinco salarios mínimos
## 2       1       SOLVENTAR                  SOLVENTARBeca/exoneración parcial
## 9       2 ESTUDIOS_PADRES                      ESTUDIOS_PADRESMás de 34 años
## 14      4         INGRESO  INGRESOMás de cinco y hasta diez salarios mínimos
## 33     11            EDAD                                        (Intercept)
## 26      8      RESIDENCIA                           RESIDENCIARESTO DEL PAÍS
## 20      6        TIPO_COL                              TIPO_COLsubvencionado
## 25      8      RESIDENCIA                                  RESIDENCIACENTRAL
## 7       2 ESTUDIOS_PADRES                          ESTUDIOS_PADRES24-29 años
## 32     10       EST_CIVIL                              EST_CIVILDivordiado/a
## 28      9    TIPO_INGRESO                               TIPO_INGRESOTRASLADO
## 15      4         INGRESO INGRESOMás de diez y hasta quince salarios mínimos
## 1       1       SOLVENTAR                                        (Intercept)
##      Coeficiente       Z_Valor      P_Valor    Significancia
## 27  8.217646e-01  4.891063e+00 1.002929e-06   *** (p < 0.01)
## 12  8.544153e-01  4.525958e+00 6.012242e-06   *** (p < 0.01)
## 18  3.258097e+00  4.380776e+00 1.182576e-05   *** (p < 0.01)
## 22  1.299283e+00  3.989578e+00 6.619107e-05   *** (p < 0.01)
## 10  8.785504e-01  3.837175e+00 1.244579e-04   *** (p < 0.01)
## 30  6.531418e-01  3.782792e+00 1.550788e-04   *** (p < 0.01)
## 19  6.558758e-01  3.407505e+00 6.555970e-04   *** (p < 0.01)
## 24  7.691331e-01  2.771371e+00 5.582071e-03   *** (p < 0.01)
## 3   1.410987e+00  2.615376e+00 8.912936e-03   *** (p < 0.01)
## 23 -7.328875e-01 -1.935476e+00 5.293197e-02      * (p < 0.1)
## 5   5.947071e-01  1.909659e+00 5.617709e-02      * (p < 0.1)
## 31  1.192685e+00  1.849676e+00 6.436033e-02      * (p < 0.1)
## 4   8.362480e-01  1.775658e+00 7.578925e-02      * (p < 0.1)
## 34  3.606940e-02  1.656090e+00 9.770354e-02      * (p < 0.1)
## 29 -1.920377e+00 -1.645765e+00 9.981219e-02      * (p < 0.1)
## 21  6.658801e-01  1.506448e+00 1.319522e-01 No significativo
## 16 -1.547563e+00 -1.248831e+00 2.117268e-01 No significativo
## 8   7.270487e-01  1.130440e+00 2.582909e-01 No significativo
## 6   3.462762e-01  8.075397e-01 4.193556e-01 No significativo
## 17  1.262937e-01  6.639692e-01 5.067100e-01 No significativo
## 11 -2.040954e-01 -6.201057e-01 5.351882e-01 No significativo
## 13 -2.666287e-01 -6.097754e-01 5.420106e-01 No significativo
## 2  -1.823216e-01 -2.496541e-01 8.028549e-01 No significativo
## 9  -1.892420e-01 -1.962015e-01 8.444525e-01 No significativo
## 14 -1.612681e-01 -1.819438e-01 8.556268e-01 No significativo
## 33 -7.754269e-02 -1.458244e-01 8.840600e-01 No significativo
## 26 -7.598591e-02 -1.328755e-01 8.942919e-01 No significativo
## 20 -6.808912e-02 -1.153954e-01 9.081317e-01 No significativo
## 25  3.795835e-02  1.065602e-01 9.151379e-01 No significativo
## 7   3.390155e-02  7.720545e-02 9.384601e-01 No significativo
## 32  1.391293e+01  1.576101e-02 9.874251e-01 No significativo
## 28  1.374430e+01  1.556999e-02 9.875774e-01 No significativo
## 15  1.371165e+01  1.553300e-02 9.876070e-01 No significativo
## 1   3.020723e-15  7.399230e-15 1.000000e+00 No significativo
# Si quieres visualizar de manera más limpia, puedes utilizar la librería kableExtra para generar una tabla en formato HTML:
if (!require(kableExtra)) install.packages("kableExtra", dependencies = TRUE)
## Cargando paquete requerido: kableExtra
## 
## Adjuntando el paquete: 'kableExtra'
## The following object is masked from 'package:dplyr':
## 
##     group_rows
library(kableExtra)

resumen_modelos %>%
  kbl() %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Modelo Covariable Categoria Coeficiente Z_Valor P_Valor Significancia
27 9 TIPO_INGRESO (Intercept) 0.8217646 4.8910630 0.0000010 *** (p < 0.01)
12 4 INGRESO (Intercept) 0.8544153 4.5259584 0.0000060 *** (p < 0.01)
18 5 RENDIMIENTO RENDIMIENTONO APROBADO 3.2580965 4.3807756 0.0000118 *** (p < 0.01)
22 7 TRABAJA (Intercept) 1.2992830 3.9895776 0.0000662 *** (p < 0.01)
10 3 SEXO (Intercept) 0.8785504 3.8371747 0.0001245 *** (p < 0.01)
30 10 EST_CIVIL (Intercept) 0.6531418 3.7827923 0.0001551 *** (p < 0.01)
19 6 TIPO_COL (Intercept) 0.6558758 3.4075050 0.0006556 *** (p < 0.01)
24 8 RESIDENCIA (Intercept) 0.7691331 2.7713714 0.0055821 *** (p < 0.01)
3 1 SOLVENTAR SOLVENTARTrabajo Personal 1.4109870 2.6153757 0.0089129 *** (p < 0.01)
23 7 TRABAJA TRABAJANO -0.7328875 -1.9354755 0.0529320
  • (p < 0.1)
5 2 ESTUDIOS_PADRES (Intercept) 0.5947071 1.9096593 0.0561771
  • (p < 0.1)
31 10 EST_CIVIL EST_CIVILCasado/a 1.1926848 1.8496755 0.0643603
  • (p < 0.1)
4 1 SOLVENTAR SOLVENTARAyuda Familiar 0.8362480 1.7756583 0.0757892
  • (p < 0.1)
34 11 EDAD EDAD 0.0360694 1.6560903 0.0977035
  • (p < 0.1)
29 9 TIPO_INGRESO TIPO_INGRESOADMISION DIRECTA -1.9203768 -1.6457648 0.0998122
  • (p < 0.1)
21 6 TIPO_COL TIPO_COLPrivado 0.6658801 1.5064479 0.1319522 No significativo
16 4 INGRESO INGRESOMás de quince salarios mínimos -1.5475625 -1.2488312 0.2117268 No significativo
8 2 ESTUDIOS_PADRES ESTUDIOS_PADRES30-34 años 0.7270487 1.1304398 0.2582909 No significativo
6 2 ESTUDIOS_PADRES ESTUDIOS_PADRES14-23 años 0.3462762 0.8075397 0.4193556 No significativo
17 5 RENDIMIENTO (Intercept) 0.1262937 0.6639692 0.5067100 No significativo
11 3 SEXO SEXOMASCULINO -0.2040954 -0.6201057 0.5351882 No significativo
13 4 INGRESO INGRESOMás de dos y hasta cinco salarios mínimos -0.2666287 -0.6097754 0.5420106 No significativo
2 1 SOLVENTAR SOLVENTARBeca/exoneración parcial -0.1823216 -0.2496541 0.8028549 No significativo
9 2 ESTUDIOS_PADRES ESTUDIOS_PADRESMás de 34 años -0.1892420 -0.1962015 0.8444525 No significativo
14 4 INGRESO INGRESOMás de cinco y hasta diez salarios mínimos -0.1612681 -0.1819438 0.8556268 No significativo
33 11 EDAD (Intercept) -0.0775427 -0.1458244 0.8840600 No significativo
26 8 RESIDENCIA RESIDENCIARESTO DEL PAÍS -0.0759859 -0.1328755 0.8942919 No significativo
20 6 TIPO_COL TIPO_COLsubvencionado -0.0680891 -0.1153954 0.9081317 No significativo
25 8 RESIDENCIA RESIDENCIACENTRAL 0.0379584 0.1065602 0.9151379 No significativo
7 2 ESTUDIOS_PADRES ESTUDIOS_PADRES24-29 años 0.0339016 0.0772055 0.9384601 No significativo
32 10 EST_CIVIL EST_CIVILDivordiado/a 13.9129259 0.0157610 0.9874251 No significativo
28 9 TIPO_INGRESO TIPO_INGRESOTRASLADO 13.7443032 0.0155700 0.9875774 No significativo
15 4 INGRESO INGRESOMás de diez y hasta quince salarios mínimos 13.7116524 0.0155330 0.9876070 No significativo
1 1 SOLVENTAR (Intercept) 0.0000000 0.0000000 1.0000000 No significativo
#Ajustar el modelo de regresión logística con ASIG_APROB como predictor
modelo_logistico1 <- glm(ESTADO_ACADEMICO ~ SOLVENTAR, data = data, family = binomial)
# Resumen del modelo para ver los coeficientes y p-valores
summary(modelo_logistico1)
## 
## Call:
## glm(formula = ESTADO_ACADEMICO ~ SOLVENTAR, family = binomial, 
##     data = data)
## 
## Coefficients:
##                                     Estimate Std. Error z value Pr(>|z|)   
## (Intercept)                        3.021e-15  4.082e-01   0.000  1.00000   
## SOLVENTARBeca/exoneración parcial -1.823e-01  7.303e-01  -0.250  0.80285   
## SOLVENTARTrabajo Personal          1.411e+00  5.395e-01   2.615  0.00891 **
## SOLVENTARAyuda Familiar            8.362e-01  4.710e-01   1.776  0.07579 . 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 204.32  on 168  degrees of freedom
## AIC: 212.32
## 
## Number of Fisher Scoring iterations: 4
# Calcular los odds ratios
odds_ratios1 <- exp(coef(modelo_logistico1))
# Mostrar los odds ratios
print(odds_ratios1)
##                       (Intercept) SOLVENTARBeca/exoneración parcial 
##                         1.0000000                         0.8333333 
##         SOLVENTARTrabajo Personal           SOLVENTARAyuda Familiar 
##                         4.1000000                         2.3076923
#Ajustar el modelo de regresión logística con ASIG_APROB como predictor
modelo_logistico2 <- glm(ESTADO_ACADEMICO ~ RESIDENCIA, data = data, family = binomial)
# Resumen del modelo para ver los coeficientes y p-valores
summary(modelo_logistico2)
## 
## Call:
## glm(formula = ESTADO_ACADEMICO ~ RESIDENCIA, family = binomial, 
##     data = data)
## 
## Coefficients:
##                          Estimate Std. Error z value Pr(>|z|)   
## (Intercept)               0.76913    0.27753   2.771  0.00558 **
## RESIDENCIACENTRAL         0.03796    0.35621   0.107  0.91514   
## RESIDENCIARESTO DEL PAÍS -0.07599    0.57186  -0.133  0.89429   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 214.00  on 169  degrees of freedom
## AIC: 220
## 
## Number of Fisher Scoring iterations: 4
# Calcular los odds ratios
odds_ratios2 <- exp(coef(modelo_logistico2))
# Mostrar los odds ratios
print(odds_ratios2)
##              (Intercept)        RESIDENCIACENTRAL RESIDENCIARESTO DEL PAÍS 
##                2.1578947                1.0386880                0.9268293
#Ajustar el modelo de regresión logística con ASIG_APROB como predictor
modelo_logistico4 <- glm(ESTADO_ACADEMICO ~ TIPO_INGRESO, data = data, family = binomial)
# Resumen del modelo para ver los coeficientes y p-valores
summary(modelo_logistico4)
## 
## Call:
## glm(formula = ESTADO_ACADEMICO ~ TIPO_INGRESO, family = binomial, 
##     data = data)
## 
## Coefficients:
##                              Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                    0.8218     0.1680   4.891    1e-06 ***
## TIPO_INGRESOTRASLADO          13.7443   882.7434   0.016   0.9876    
## TIPO_INGRESOADMISION DIRECTA  -1.9204     1.1669  -1.646   0.0998 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 210.03  on 169  degrees of freedom
## AIC: 216.03
## 
## Number of Fisher Scoring iterations: 13
# Calcular los odds ratios
odds_ratios4 <- exp(coef(modelo_logistico4))
# Mostrar los odds ratios
print(odds_ratios4)
##                  (Intercept)         TIPO_INGRESOTRASLADO 
##                 2.274510e+00                 9.312688e+05 
## TIPO_INGRESOADMISION DIRECTA 
##                 1.465517e-01
#Ajustar el modelo de regresión logística con ASIG_APROB como predictor
modelo_logistico5 <- glm(ESTADO_ACADEMICO ~ RENDIMIENTO, data = data, family = binomial)
# Resumen del modelo para ver los coeficientes y p-valores
summary(modelo_logistico5)
## 
## Call:
## glm(formula = ESTADO_ACADEMICO ~ RENDIMIENTO, family = binomial, 
##     data = data)
## 
## Coefficients:
##                        Estimate Std. Error z value Pr(>|z|)    
## (Intercept)              0.1263     0.1902   0.664    0.507    
## RENDIMIENTONO APROBADO   3.2581     0.7437   4.381 1.18e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 171.04  on 170  degrees of freedom
## AIC: 175.04
## 
## Number of Fisher Scoring iterations: 6
# Calcular los odds ratios
odds_ratios5 <- exp(coef(modelo_logistico5))
# Mostrar los odds ratios
print(odds_ratios5)
##            (Intercept) RENDIMIENTONO APROBADO 
##               1.134615              26.000000
#Ajustar el modelo de regresión logística con ASIG_APROB como predictor
modelo_logistico6 <- glm(ESTADO_ACADEMICO ~ EDAD, data = data, family = binomial)
# Resumen del modelo para ver los coeficientes y p-valores
summary(modelo_logistico6)
## 
## Call:
## glm(formula = ESTADO_ACADEMICO ~ EDAD, family = binomial, data = data)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)  
## (Intercept) -0.07754    0.53175  -0.146   0.8841  
## EDAD         0.03607    0.02178   1.656   0.0977 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 210.88  on 170  degrees of freedom
## AIC: 214.88
## 
## Number of Fisher Scoring iterations: 4
# Calcular los odds ratios
odds_ratios6 <- exp(coef(modelo_logistico6))
# Mostrar los odds ratios
print(odds_ratios6)
## (Intercept)        EDAD 
##   0.9253875   1.0367278
library(MASS)
library(nnet)
# Ajustar el modelo nulo (sin predictores)
colSums(is.na(data))
##             IDEM               CI             SEXO          CARRERA 
##                0                0                0                0 
##            ING_A            ING_P     TIPO_INGRESO        MODALIDAD 
##                0                0                0                0 
##            ANTES       ASIG_APROB         SIT_ACAD ESTADO_ACADEMICO 
##              163                0                0                0 
##      RENDIMIENTO           CIUDAD     DEPARTAMENTO       RESIDENCIA 
##                0                1                0                0 
##             EDAD        EST_CIVIL         TIPO_COL          TRABAJA 
##                0                0                0                0 
##        SOLVENTAR         EDUC_PAD         PUNT_PAD         OCUP_PAD 
##                0                0                0                0 
##         EDUC_MAD         PUNT_MAD         OCUP_MAD     OCUP_PAD_MAD 
##                0                0                0                0 
##  ESTUDIOS_PADRES          INGRESO      DEPENDENCIA             CASA 
##                0                0               15               46 
##        CASA_CANT          TERRENO             AUTO             AIRE 
##               56               27                1                1 
##          CALEFON         TELEFONO            CABLE               PC 
##              136                1               28                1 
##         INTERNET       TRANSPORTE TRANSPORTE_MEDIO      NIVEL_SOCIO 
##               50                1              158                0 
##     OCUP_PAD_REC     OCUP_MAD_REC 
##              172              172
null_model <- multinom(ESTADO_ACADEMICO ~ 1, data = data)
## # weights:  2 (1 variable)
## initial  value 119.221315 
## final  value 107.023126 
## converged
# Ajustar el modelo completo (con todas las variables predictoras)

# Instalar la librería 'nnet' si aún no está instalada
#install.packages("MASS")
library(MASS)
#install.packages("nnet")
library(nnet)
library(MASS)
library(nnet)
full_model <- multinom(ESTADO_ACADEMICO ~ SOLVENTAR +ESTUDIOS_PADRES +SEXO+INGRESO+RENDIMIENTO+TIPO_COL+TRABAJA+RESIDENCIA+TIPO_INGRESO+EST_CIVIL+EDAD, data = data)
## # weights:  26 (25 variable)
## initial  value 119.221315 
## iter  10 value 69.084039
## iter  20 value 67.220228
## iter  30 value 67.115294
## iter  40 value 67.114567
## final  value 67.114566 
## converged
# Mostrar el resumen del modelo ajustado
summary(full_model)
## Warning in sqrt(diag(vc)): Se han producido NaNs
## Call:
## multinom(formula = ESTADO_ACADEMICO ~ SOLVENTAR + ESTUDIOS_PADRES + 
##     SEXO + INGRESO + RENDIMIENTO + TIPO_COL + TRABAJA + RESIDENCIA + 
##     TIPO_INGRESO + EST_CIVIL + EDAD, data = data)
## 
## Coefficients:
##                                                         Values    Std. Err.
## (Intercept)                                         0.85180647 1.390888e+00
## SOLVENTARBeca/exoneración parcial                  -0.11188591 9.949214e-01
## SOLVENTARTrabajo Personal                           0.18985129 8.986478e-01
## SOLVENTARAyuda Familiar                             0.72887994 6.022868e-01
## ESTUDIOS_PADRES14-23 años                           1.26411508 5.946407e-01
## ESTUDIOS_PADRES24-29 años                           0.40775375 6.539931e-01
## ESTUDIOS_PADRES30-34 años                           0.28300931 9.655656e-01
## ESTUDIOS_PADRESMás de 34 años                       0.69285758 1.303656e+00
## SEXOMASCULINO                                      -0.20155686 4.427256e-01
## INGRESOMás de dos y hasta cinco salarios mínimos   -1.39955611 7.587284e-01
## INGRESOMás de cinco y hasta diez salarios mínimos   0.43522878 1.183122e+00
## INGRESOMás de diez y hasta quince salarios mínimos 18.50025554          NaN
## INGRESOMás de quince salarios mínimos              -2.05806795 1.507878e+00
## RENDIMIENTONO APROBADO                              4.32985661 1.095275e+00
## TIPO_COLsubvencionado                              -0.16019201 8.574113e-01
## TIPO_COLPrivado                                     1.35930892 6.999035e-01
## TRABAJANO                                          -1.15351145 8.230146e-01
## RESIDENCIACENTRAL                                   0.20247386 4.899555e-01
## RESIDENCIARESTO DEL PAÍS                            0.59978738 8.330949e-01
## TIPO_INGRESOTRASLADO                               15.78261298          NaN
## TIPO_INGRESOADMISION DIRECTA                       -8.97445622 2.517425e+00
## EST_CIVILCasado/a                                   3.97453587 1.659967e+00
## EST_CIVILDivordiado/a                              13.63626277 1.572728e-06
## EST_CIVILOtro                                       0.00000000 0.000000e+00
## EDAD                                               -0.05247297 4.288386e-02
## 
## Residual Deviance: 134.2291 
## AIC: 182.2291
# Asegúrate de haber cargado la librería MASS
library(MASS)
library(nnet)
colSums(is.na(data))
##             IDEM               CI             SEXO          CARRERA 
##                0                0                0                0 
##            ING_A            ING_P     TIPO_INGRESO        MODALIDAD 
##                0                0                0                0 
##            ANTES       ASIG_APROB         SIT_ACAD ESTADO_ACADEMICO 
##              163                0                0                0 
##      RENDIMIENTO           CIUDAD     DEPARTAMENTO       RESIDENCIA 
##                0                1                0                0 
##             EDAD        EST_CIVIL         TIPO_COL          TRABAJA 
##                0                0                0                0 
##        SOLVENTAR         EDUC_PAD         PUNT_PAD         OCUP_PAD 
##                0                0                0                0 
##         EDUC_MAD         PUNT_MAD         OCUP_MAD     OCUP_PAD_MAD 
##                0                0                0                0 
##  ESTUDIOS_PADRES          INGRESO      DEPENDENCIA             CASA 
##                0                0               15               46 
##        CASA_CANT          TERRENO             AUTO             AIRE 
##               56               27                1                1 
##          CALEFON         TELEFONO            CABLE               PC 
##              136                1               28                1 
##         INTERNET       TRANSPORTE TRANSPORTE_MEDIO      NIVEL_SOCIO 
##               50                1              158                0 
##     OCUP_PAD_REC     OCUP_MAD_REC 
##              172              172
# Aplicar el método stepwise utilizando stepAIC correctamente
stepwise_model <- stepAIC(null_model, 
                          scope = list(lower = null_model, upper = full_model), 
                          direction = "both", 
                          trace = TRUE)
## Start:  AIC=216.05
## ESTADO_ACADEMICO ~ 1
## 
## # weights:  5 (4 variable)
## initial  value 119.221315 
## final  value 102.158119 
## converged
## # weights:  6 (5 variable)
## initial  value 119.221315 
## iter  10 value 105.986493
## iter  10 value 105.986493
## iter  10 value 105.986493
## final  value 105.986493 
## converged
## # weights:  3 (2 variable)
## initial  value 119.221315 
## iter  10 value 106.830845
## iter  10 value 106.830845
## iter  10 value 106.830845
## final  value 106.830845 
## converged
## # weights:  6 (5 variable)
## initial  value 119.221315 
## iter  10 value 105.678966
## iter  20 value 105.664524
## final  value 105.663600 
## converged
## # weights:  3 (2 variable)
## initial  value 119.221315 
## final  value 85.520772 
## converged
## # weights:  4 (3 variable)
## initial  value 119.221315 
## iter  10 value 105.737656
## final  value 105.737586 
## converged
## # weights:  3 (2 variable)
## initial  value 119.221315 
## final  value 105.029993 
## converged
## # weights:  4 (3 variable)
## initial  value 119.221315 
## final  value 107.000092 
## converged
## # weights:  4 (3 variable)
## initial  value 119.221315 
## iter  10 value 105.030384
## final  value 105.015138 
## converged
## # weights:  5 (4 variable)
## initial  value 119.221315 
## iter  10 value 104.518650
## iter  20 value 104.501206
## final  value 104.501198 
## converged
## # weights:  3 (2 variable)
## initial  value 119.221315 
## final  value 105.441918 
## converged
##                   Df    AIC
## + RENDIMIENTO      1 175.04
## + SOLVENTAR        3 212.32
## + TRABAJA          1 214.06
## + EDAD             1 214.88
## + EST_CIVIL        2 215.00
## + TIPO_INGRESO     2 216.03
## <none>               216.05
## + TIPO_COL         2 217.47
## + SEXO             1 217.66
## + RESIDENCIA       2 220.00
## + INGRESO          4 221.33
## + ESTUDIOS_PADRES  4 221.97
## # weights:  3 (2 variable)
## initial  value 119.221315 
## final  value 85.520772 
## converged
## 
## Step:  AIC=175.04
## ESTADO_ACADEMICO ~ RENDIMIENTO
## 
## # weights:  2 (1 variable)
## initial  value 119.221315 
## final  value 107.023126 
## converged
## # weights:  6 (5 variable)
## initial  value 119.221315 
## iter  10 value 82.968292
## final  value 82.968276 
## converged
## # weights:  7 (6 variable)
## initial  value 119.221315 
## iter  10 value 83.565042
## final  value 83.565023 
## converged
## # weights:  4 (3 variable)
## initial  value 119.221315 
## iter  10 value 84.891537
## final  value 84.891518 
## converged
## # weights:  7 (6 variable)
## initial  value 119.221315 
## iter  10 value 84.305603
## iter  20 value 84.271267
## final  value 84.269111 
## converged
## # weights:  5 (4 variable)
## initial  value 119.221315 
## final  value 84.888082 
## converged
## # weights:  4 (3 variable)
## initial  value 119.221315 
## iter  10 value 84.805507
## final  value 84.800038 
## converged
## # weights:  5 (4 variable)
## initial  value 119.221315 
## iter  10 value 85.404160
## iter  10 value 85.404160
## final  value 85.404160 
## converged
## # weights:  5 (4 variable)
## initial  value 119.221315 
## iter  10 value 81.094614
## iter  20 value 81.058453
## final  value 81.056295 
## converged
## # weights:  6 (5 variable)
## initial  value 119.221315 
## iter  10 value 83.917547
## iter  20 value 83.896131
## final  value 83.894023 
## converged
## # weights:  4 (3 variable)
## initial  value 119.221315 
## final  value 84.962547 
## converged
##                   Df    AIC
## + TIPO_INGRESO     2 170.11
## <none>               175.04
## + TRABAJA          1 175.60
## + SEXO             1 175.78
## + EST_CIVIL        2 175.79
## + EDAD             1 175.93
## + SOLVENTAR        3 175.94
## + TIPO_COL         2 177.78
## + RESIDENCIA       2 178.81
## + ESTUDIOS_PADRES  4 179.13
## + INGRESO          4 180.54
## - RENDIMIENTO      1 216.05
## # weights:  5 (4 variable)
## initial  value 119.221315 
## iter  10 value 81.094614
## iter  20 value 81.058453
## final  value 81.056295 
## converged
## 
## Step:  AIC=170.11
## ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO
## 
## # weights:  4 (3 variable)
## initial  value 119.221315 
## iter  10 value 105.030384
## final  value 105.015138 
## converged
## # weights:  3 (2 variable)
## initial  value 119.221315 
## final  value 85.520772 
## converged
## # weights:  8 (7 variable)
## initial  value 119.221315 
## iter  10 value 78.853841
## iter  20 value 78.796641
## iter  30 value 78.795677
## final  value 78.795581 
## converged
## # weights:  9 (8 variable)
## initial  value 119.221315 
## iter  10 value 78.392572
## iter  20 value 78.311742
## final  value 78.311736 
## converged
## # weights:  6 (5 variable)
## initial  value 119.221315 
## iter  10 value 80.710304
## iter  20 value 80.696417
## iter  30 value 80.693815
## iter  40 value 80.693416
## iter  50 value 80.692531
## iter  50 value 80.692531
## iter  50 value 80.692531
## final  value 80.692531 
## converged
## # weights:  9 (8 variable)
## initial  value 119.221315 
## iter  10 value 79.707975
## iter  20 value 79.636991
## final  value 79.636873 
## converged
## # weights:  7 (6 variable)
## initial  value 119.221315 
## iter  10 value 80.046383
## iter  20 value 79.989048
## final  value 79.981243 
## converged
## # weights:  6 (5 variable)
## initial  value 119.221315 
## iter  10 value 79.632104
## iter  20 value 79.585248
## iter  30 value 79.579422
## final  value 79.579151 
## converged
## # weights:  7 (6 variable)
## initial  value 119.221315 
## iter  10 value 81.050467
## iter  20 value 81.008463
## iter  30 value 81.005104
## final  value 81.005097 
## converged
## # weights:  8 (7 variable)
## initial  value 119.221315 
## iter  10 value 76.965244
## iter  20 value 76.913753
## iter  30 value 76.906326
## final  value 76.906083 
## converged
## # weights:  6 (5 variable)
## initial  value 119.221315 
## iter  10 value 80.101852
## iter  20 value 80.062846
## final  value 80.051989 
## converged
##                   Df    AIC
## + EST_CIVIL        2 165.81
## + TRABAJA          1 169.16
## + EDAD             1 170.10
## <none>               170.11
## + SEXO             1 171.38
## + SOLVENTAR        3 171.59
## + TIPO_COL         2 171.96
## + ESTUDIOS_PADRES  4 172.62
## + RESIDENCIA       2 174.01
## - TIPO_INGRESO     2 175.04
## + INGRESO          4 175.27
## - RENDIMIENTO      1 216.03
## # weights:  8 (7 variable)
## initial  value 119.221315 
## iter  10 value 76.965244
## iter  20 value 76.913753
## iter  30 value 76.906326
## final  value 76.906083 
## converged
## 
## Step:  AIC=165.81
## ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO + EST_CIVIL
## 
## # weights:  7 (6 variable)
## initial  value 119.221315 
## iter  10 value 100.137673
## iter  20 value 100.123457
## iter  30 value 100.122292
## final  value 100.122288 
## converged
## # weights:  6 (5 variable)
## initial  value 119.221315 
## iter  10 value 83.917547
## iter  20 value 83.896131
## final  value 83.894023 
## converged
## # weights:  5 (4 variable)
## initial  value 119.221315 
## iter  10 value 81.094614
## iter  20 value 81.058453
## final  value 81.056295 
## converged
## # weights:  11 (10 variable)
## initial  value 119.221315 
## iter  10 value 75.718403
## iter  20 value 75.608736
## iter  30 value 75.605994
## iter  40 value 75.604497
## final  value 75.604459 
## converged
## # weights:  12 (11 variable)
## initial  value 119.221315 
## iter  10 value 73.985984
## iter  20 value 73.872780
## final  value 73.868469 
## converged
## # weights:  9 (8 variable)
## initial  value 119.221315 
## iter  10 value 76.678047
## iter  20 value 76.622212
## iter  30 value 76.619369
## final  value 76.618521 
## converged
## # weights:  12 (11 variable)
## initial  value 119.221315 
## iter  10 value 74.281756
## iter  20 value 74.158842
## final  value 74.156997 
## converged
## # weights:  10 (9 variable)
## initial  value 119.221315 
## iter  10 value 76.320592
## iter  20 value 76.244081
## iter  30 value 76.243611
## final  value 76.241594 
## converged
## # weights:  9 (8 variable)
## initial  value 119.221315 
## iter  10 value 76.496075
## iter  20 value 76.427921
## iter  30 value 76.421418
## final  value 76.420443 
## converged
## # weights:  10 (9 variable)
## initial  value 119.221315 
## iter  10 value 76.968769
## iter  20 value 76.902237
## iter  30 value 76.901628
## final  value 76.899917 
## converged
## # weights:  9 (8 variable)
## initial  value 119.221315 
## iter  10 value 76.906266
## final  value 76.833985 
## converged
##                   Df    AIC
## <none>               165.81
## + TRABAJA          1 166.84
## + SEXO             1 167.24
## + EDAD             1 167.67
## + ESTUDIOS_PADRES  4 167.74
## + INGRESO          4 168.31
## + TIPO_COL         2 168.48
## + SOLVENTAR        3 169.21
## + RESIDENCIA       2 169.80
## - EST_CIVIL        2 170.11
## - TIPO_INGRESO     2 175.79
## - RENDIMIENTO      1 210.25
# Mostrar el resumen del modelo resultante del paso a paso
summary(stepwise_model)
## Call:
## multinom(formula = ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO + 
##     EST_CIVIL, data = data)
## 
## Coefficients:
##                                   Values   Std. Err.
## (Intercept)                  -0.02212452   0.2029251
## RENDIMIENTONO APROBADO        3.95038581   1.0289759
## TIPO_INGRESOTRASLADO          8.25440259  61.3386653
## TIPO_INGRESOADMISION DIRECTA -6.31171149   1.9893078
## EST_CIVILCasado/a             2.34345912   1.0660020
## EST_CIVILDivordiado/a         6.72012721 205.2502769
## EST_CIVILOtro                 0.00000000   0.0000000
## 
## Residual Deviance: 153.8122 
## AIC: 165.8122
library(MASS)
library(pander)
library(MASS) # Para el cálculo de intervalos de confianza
#Modelo Final
modelofinal<- glm(ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO + EST_CIVIL, data = data, family = binomial)
summary(modelofinal)
## 
## Call:
## glm(formula = ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO + 
##     EST_CIVIL, family = binomial, data = data)
## 
## Coefficients:
##                                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                    -0.02214    0.20293  -0.109 0.913133    
## RENDIMIENTONO APROBADO          3.95032    1.02894   3.839 0.000123 ***
## TIPO_INGRESOTRASLADO           15.58820 1455.39755   0.011 0.991454    
## TIPO_INGRESOADMISION DIRECTA   -6.31146    1.98927  -3.173 0.001510 ** 
## EST_CIVILCasado/a               2.34341    1.06597   2.198 0.027923 *  
## EST_CIVILDivordiado/a          11.63789 1455.39788   0.008 0.993620    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 153.81  on 166  degrees of freedom
## AIC: 165.81
## 
## Number of Fisher Scoring iterations: 14
# Predecir las probabilidades en los datos de entrenamiento
predicciones_probfinal <- predict(modelofinal, newdata = data, type = "response")

# Convertir las probabilidades en clases utilizando un umbral (0.5 por defecto)
predicciones_clasefinal <- ifelse(predicciones_probfinal > 0.5, 1, 0)

# Crear la matriz de confusión
matriz_confusionfinal <- table(Predicciones = predicciones_clasefinal, Real = data$ESTADO_ACADEMICO)

# Agregar los totales por filas y columnas
matriz_confusion_con_totalesfinal <- addmargins(matriz_confusionfinal)

# Mostrar la matriz de confusión con totales
print(matriz_confusion_con_totalesfinal)
##             Real
## Predicciones NO DESERTOR DESERTOR Sum
##          0            52       49 101
##          1             2       69  71
##          Sum          54      118 172
# Resumen del modelo para ver los coeficientes y p-valores
summary(modelofinal)
## 
## Call:
## glm(formula = ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO + 
##     EST_CIVIL, family = binomial, data = data)
## 
## Coefficients:
##                                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                    -0.02214    0.20293  -0.109 0.913133    
## RENDIMIENTONO APROBADO          3.95032    1.02894   3.839 0.000123 ***
## TIPO_INGRESOTRASLADO           15.58820 1455.39755   0.011 0.991454    
## TIPO_INGRESOADMISION DIRECTA   -6.31146    1.98927  -3.173 0.001510 ** 
## EST_CIVILCasado/a               2.34341    1.06597   2.198 0.027923 *  
## EST_CIVILDivordiado/a          11.63789 1455.39788   0.008 0.993620    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 153.81  on 166  degrees of freedom
## AIC: 165.81
## 
## Number of Fisher Scoring iterations: 14
# Calcular los odds ratios
odds_ratiosdfinal <- exp(coef(modelofinal))
# Mostrar los odds ratios
print(odds_ratiosdfinal)
##                  (Intercept)       RENDIMIENTONO APROBADO 
##                 9.781066e-01                 5.195185e+01 
##         TIPO_INGRESOTRASLADO TIPO_INGRESOADMISION DIRECTA 
##                 5.886692e+06                 1.815382e-03 
##            EST_CIVILCasado/a        EST_CIVILDivordiado/a 
##                 1.041667e+01                 1.133106e+05
# Calcular los intervalos de confianza para los coeficientes
confint_stepwisefinal <- confint(modelofinal)
## Waiting for profiling to be done...
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning in regularize.values(x, y, ties, missing(ties), na.rm = na.rm):
## collapsing to unique 'x' values
# Calcular los intervalos de confianza para los Odds Ratios
OR_ci_lowerfinal <- exp(confint_stepwisefinal[, 1]) 
OR_ci_upperfinal <- exp(confint_stepwisefinal[, 2])
#Mostrar los intervaloes 
print(OR_ci_lowerfinal)
##                  (Intercept)       RENDIMIENTONO APROBADO 
##                 6.560552e-01                 1.073386e+01 
##         TIPO_INGRESOTRASLADO TIPO_INGRESOADMISION DIRECTA 
##                9.269529e-123                 2.043723e-05 
##            EST_CIVILCasado/a        EST_CIVILDivordiado/a 
##                 1.903368e+00                 3.238145e-98
print(OR_ci_upperfinal)
##                  (Intercept)       RENDIMIENTONO APROBADO 
##                   1.45727107                 936.50274527 
##         TIPO_INGRESOTRASLADO TIPO_INGRESOADMISION DIRECTA 
##                           NA                   0.06981732 
##            EST_CIVILCasado/a        EST_CIVILDivordiado/a 
##                 194.44665580                           NA
# Mostrar la matriz de confusión con totales
print(matriz_confusion_con_totalesfinal)
##             Real
## Predicciones NO DESERTOR DESERTOR Sum
##          0            52       49 101
##          1             2       69  71
##          Sum          54      118 172
# Mostrar la matriz de confusión con totales
print(matriz_confusion_con_totalesfinal)
##             Real
## Predicciones NO DESERTOR DESERTOR Sum
##          0            52       49 101
##          1             2       69  71
##          Sum          54      118 172
# Ajustar el modelo de regresión logística
modelofinal2ajus <- glm(formula =ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO + 
    EST_CIVIL, family = binomial, data = data)

# Predecir las probabilidades en los datos de entrenamiento
predicciones_probfinal2ajus <- predict(modelofinal2ajus, newdata = data, type = "response")

# Crear una función para calcular la tasa de clasificación correcta con diferentes umbrales
calcular_tasa_clasificacionfinal2ajus <- function(umbral) {
  predicciones_clasefinal2ajus <- ifelse(predicciones_probfinal2ajus > umbral, 1, 0)
  matriz_confusionfinal2ajus <- table(Predicciones = predicciones_clasefinal2ajus, Real = data$ESTADO_ACADEMICO)
  tasa_clasificacion_correctafinal2ajus <- sum(diag(matriz_confusionfinal2ajus)) / sum(matriz_confusionfinal2ajus)
  return(tasa_clasificacion_correctafinal2ajus)
}

# Probar una secuencia de umbrales de corte entre 0 y 1
umbralesfinal2ajus <- seq(0, 1, by = 0.01)
tasas_clasificacionfinal2ajus <- sapply(umbralesfinal2ajus, calcular_tasa_clasificacionfinal2ajus)

# Encontrar el umbral que maximiza la tasa de clasificación correcta
mejor_umbralfinal2ajus <- umbralesfinal2ajus[which.max(tasas_clasificacionfinal2ajus)]
mejor_tasa_clasificacionfinal2ajus <- max(tasas_clasificacionfinal2ajus)

# Mostrar el mejor umbral y la tasa de clasificación correcta correspondiente
cat("El mejor umbral es:", mejor_umbralfinal2ajus, "\n")
## El mejor umbral es: 0.5
cat("La mejor Tasa de Clasificación Correcta es:", round(mejor_tasa_clasificacionfinal2ajus * 100, 2), "%\n")
## La mejor Tasa de Clasificación Correcta es: 70.35 %
# Graficar la tasa de clasificación correcta en función del umbral
plot(umbralesfinal2ajus, tasas_clasificacionfinal2ajus, type = "l", col = "blue", lwd = 2,
     xlab = "Umbral", ylab = "Tasa de Clasificación Correcta", 
     main = "Tasa de Clasificación Correcta vs Umbral")
abline(v = mejor_umbralfinal2ajus, col = "red", lwd = 2, lty = 2) # Línea en el mejor umbral

# Encontrar el umbral que maximiza la tasa de clasificación correcta
mejor_umbralfinal2ajus <- umbralesfinal2ajus[which.max(tasas_clasificacionfinal2ajus)]
mejor_tasa_clasificacionfinal2ajus <- max(tasas_clasificacionfinal2ajus)
print(mejor_umbralfinal2ajus)
## [1] 0.5
print(mejor_tasa_clasificacionfinal2ajus)
## [1] 0.7034884
system('g++ -v')
## Warning in system("g++ -v"): 'g++' not found
## [1] 127
#Curva ROC

#install.packages("pROC")
library(pROC)
## Type 'citation("pROC")' for a citation.
## 
## Adjuntando el paquete: 'pROC'
## The following object is masked from 'package:gmodels':
## 
##     ci
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
#Para construir la curva ROC:
rocplotfinala2jus <- roc(ESTADO_ACADEMICO ~ fitted(modelofinal2ajus), data = data)
## Setting levels: control = NO DESERTOR, case = DESERTOR
## Setting direction: controls < cases
rocplotfinala2jus #Area under the curve
## 
## Call:
## roc.formula(formula = ESTADO_ACADEMICO ~ fitted(modelofinal2ajus),     data = data)
## 
## Data: fitted(modelofinal2ajus) in 54 controls (ESTADO_ACADEMICO NO DESERTOR) < 118 cases (ESTADO_ACADEMICO DESERTOR).
## Area under the curve: 0.7861
plot.roc(rocplotfinala2jus, legacy.axes = TRUE) #Si ponemos legacy.axes = FALSE, se representa la especificidad en X.

auc(rocplotfinala2jus) # auc = Área bajo la curva ROC
## Area under the curve: 0.7861
modelofinal2ajus <- glm(formula = ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO + 
    EST_CIVIL, family = binomial, data = data)
summary(modelofinal2ajus)
## 
## Call:
## glm(formula = ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO + 
##     EST_CIVIL, family = binomial, data = data)
## 
## Coefficients:
##                                Estimate Std. Error z value Pr(>|z|)    
## (Intercept)                    -0.02214    0.20293  -0.109 0.913133    
## RENDIMIENTONO APROBADO          3.95032    1.02894   3.839 0.000123 ***
## TIPO_INGRESOTRASLADO           15.58820 1455.39755   0.011 0.991454    
## TIPO_INGRESOADMISION DIRECTA   -6.31146    1.98927  -3.173 0.001510 ** 
## EST_CIVILCasado/a               2.34341    1.06597   2.198 0.027923 *  
## EST_CIVILDivordiado/a          11.63789 1455.39788   0.008 0.993620    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 214.05  on 171  degrees of freedom
## Residual deviance: 153.81  on 166  degrees of freedom
## AIC: 165.81
## 
## Number of Fisher Scoring iterations: 14
# Instalar y cargar el paquete pROC
library(pROC)

# Crear la curva ROC
rocplotfinal2ajus <- roc(data$ESTADO_ACADEMICO, fitted(modelofinal2ajus))
## Setting levels: control = NO DESERTOR, case = DESERTOR
## Setting direction: controls < cases
rocplotfinal2ajus # Imprime la información de la curva, como el AUC
## 
## Call:
## roc.default(response = data$ESTADO_ACADEMICO, predictor = fitted(modelofinal2ajus))
## 
## Data: fitted(modelofinal2ajus) in 54 controls (data$ESTADO_ACADEMICO NO DESERTOR) < 118 cases (data$ESTADO_ACADEMICO DESERTOR).
## Area under the curve: 0.7861
# Graficar la curva ROC con AUC
plot.roc(rocplotfinal2ajus, legacy.axes = TRUE, main = "Curva ROC del Modelo")
text(x = 0.6, y = 0.4, labels = paste("AUC =", round(auc(rocplotfinal2ajus), 3)), col = "blue")

# Ajustar el modelo de regresión logística binaria
modelofinal2ajusev <- glm(formula = ESTADO_ACADEMICO ~ RENDIMIENTO + TIPO_INGRESO + 
    EST_CIVIL,family = binomial, data = data)

# Predecir las probabilidades en los datos de entrenamiento
predicciones_probfinal2ajusev <- predict(modelofinal2ajusev, newdata = data, type = "response")

# Convertir las probabilidades en clases (0 o 1), usando 0.51 como umbral de corte
umbralfinal2ajusev <- 0.5 #cambio de valor
predicciones_clasefinal2ajusev <- ifelse(predicciones_probfinal2ajusev > umbralfinal2ajusev, 1, 0)

# Crear la matriz de confusión
matriz_confusionfinal2ajusev <- table(Predicciones = predicciones_clasefinal2ajusev, Real = data$ESTADO_ACADEMICO)

# Calcular la tasa de clasificación correcta
tasa_clasificacion_correctafinal2ajusev <- sum(diag(matriz_confusionfinal2ajusev)) / sum(matriz_confusionfinal2ajusev)

# Agregar los totales por filas y columnas a la matriz de confusión
matriz_confusion_con_totalesfinal2ajusev <- addmargins(matriz_confusionfinal2ajusev)

# Mostrar la matriz de confusión con totales
print(matriz_confusion_con_totalesfinal2ajusev)
##             Real
## Predicciones NO DESERTOR DESERTOR Sum
##          0            52       49 101
##          1             2       69  71
##          Sum          54      118 172
# Mostrar la tasa de clasificación correcta
cat("Tasa de Clasificación Correcta:", round(tasa_clasificacion_correctafinal2ajusev * 100, 2), "%\n")
## Tasa de Clasificación Correcta: 70.35 %