Análisis Descriptivo y Primeros modelos de la BD Final

Autor/a

Daniel Villa - Ronald Palencia

Introducción:

Una vez creada la BD (Base de Datos) final (todo el código esta en Join_BD.R) en la cual se contienen las variables:

  • Inscritos

  • Admitidos

  • Matriculados

  • Graduados

Procedemos a procesar los datos por medio de un análisis descriptivo e inferencia para entender mejor los datos.

# Lectura de la base de datos

load("base_total.RData")
load('base_total0.RData')

Lamentablemente al unir las BD en una sola presentamos un inconveniente y es que el método de la función merge utilizado (y el único posible) es que cumpla todas las condiciones de las siguientes columnas:

names(base_total)[1:16]
 [1] "codigo_de_la_institucion"            "principal_o_seccional"              
 [3] "sector_ies"                          "caracter_ies"                       
 [5] "codigo_del_departamento_ies"         "codigo_del_municipio_ies"           
 [7] "codigo_snies_del_programa"           "nivel_de_formacion"                 
 [9] "metodologia"                         "area_de_conocimiento"               
[11] "nucleo_basico_del_conocimiento_nbc"  "departamento_de_oferta_del_programa"
[13] "codigo_del_municipio_programa"       "sexo"                               
[15] "ano"                                 "semestre"                           

Por ende al ser tantas características tenemos que ningunas de las siguientes columnas presenta valores aledaños a los demás, es decir, no hay una fila que tenga datos en las columnas sin tener una o más con valores NA

names(base_total)[17:21]
[1] "inscritos"    "admitidos"    "matriculados" "primer_curso" "graduados"   

Por lo cual el análisis será individual, en parejas o en casos específicos tomando 3 variables (inscritos, admitidos y graduados).

Por ultimo descartaremos inicialmente las variables matriculados y primer_curso ya que aun no encontramos como algún tipo de relevancia para este documento y su enfoque en la investigación final, además cabe aclarar que estas dos columnas afectan gravemente por la cantidad de NA’s presentes.

Veamos mejor un gráfico de representación de missing data.

  1. Haremos un gráfico con todas las categorías para hacer nuestro unión en una sola BD

  1. Haremos otro gráfico para las columnas que se añadieron (o mejor dicho, las únicas cuantitativas en nuestro dataset).

Como podemos ver hay demasiados valores faltantes por ende procedemos a crear una copia organizada de la BD original:

copy <- base_total0[, -c(24, 25, 2, 7, 9, 11, 18, 2)]

## valores lógicos si tienen na 
aux <- complete.cases(copy)

## base sin na
copy_sin_na <- copy[aux, ]

# Organizar y remplazar valores para una mejor BD:

copy_sin_na$caracter_ies  <- str_replace_all(copy_sin_na$caracter_ies,
                                             c("UNIVERSIDAD"  = "Universidad", 
                                               "INSTITUCION UNIVERSITARIA/ESCUELA TECNOLOGICA"="Institución Universitaria/Escuela Tecnológica",
                                               "INSTITUCIÓN UNIVERSITARIA/ESCUELA TECNOLÓGICA" = "Institución Universitaria/Escuela Tecnológica",
                                               "INSTITUCION TECNOLOGICA" = 
                                                 "Institución Tecnológica",
                                               "INSTITUCIÓN TECNOLÓGICA" = 
                                                 "Institución Tecnológica",
                                               "INSTITUCION TECNICA PROFESIONAL" = 
                                                 "Institución Técnica Profesional",
                                               "INSTITUCIÓN TÉCNICA PROFESIONAL" = 
                                                 "Institución Técnica Profesional"))


#copy_sin_na$nivel_de_formacion %>% unique()

copy_sin_na$nivel_de_formacion <-  str_replace_all(copy_sin_na$nivel_de_formacion,
                                                   c("Universitaria" =
                                                       "Universitario",
                                                   "Tecnológica" = "Tecnólogo",
                                                   "Tecnológico"  = "Tecnólogo"))

copy_sin_na$metodologia <-  str_replace_all(copy_sin_na$metodologia,
                                                   c("A distancia" = "Distancia",
                                                     "Distancia (virtual)" = 
                                                       "Distancia_virtual",
                                                     "Distancia (tradicional)"  = 
                                                       "Distancia"))



copy_sin_na$departamento_de_oferta_del_programa <-
  tolower(copy_sin_na$departamento_de_oferta_del_programa)

copy_sin_na$departamento_de_oferta_del_programa <-
  str_replace_all(copy_sin_na$departamento_de_oferta_del_programa, 
                                  c("á" = "a", "é" = "e",
                                    "í" = "i", "ó" = "o", "ú" = "u"))


copy_sin_na$departamento_de_oferta_del_programa <-
  str_replace_all(copy_sin_na$departamento_de_oferta_del_programa,
                                            c("bogota d.c" = "bogota",
                                              "bogota d.c." = "bogota",
                                              "bogota, d.c." = "bogota",
                                              "bogota." = "bogota"))

copy_sin_na$inscritos %<>% as.numeric()
copy_sin_na$admitidos %<>% as.numeric()
copy_sin_na$graduados %<>% as.numeric()

Descriptivas de variables categoricas:

Como la mayoría de las variables en nuestra BD corresponden a caracterizaciones tales como el sexo, semestre, departamento, entre otras; observaremos inicialmente sin tener en cuenta las únicas variables cuantitativas (las ultimas columnas de nuestra base de datos)

Tabla de contigencia del Caracter de la IES vs Sector:

Como podemos ver hay más universidades que otro tipo de instituciones, además que las privadas cuentas con números mayores en el conteo de estudiantes que se inscribieron, admitieron y ahora son graduados de los años 2018, 2020 y 2021.

Para ver ahora estos registros pero con el conteo de los inscritos por año

Como podemos ver los datos de Inscritos por año en las universidades ha disminuido, así como las otras instituciones al paso de los años.; Esto se debe a que estamos en una recuperación dado de que los datos desde el 2019 y comienzos del 2021 son de la pandemia por lo que mundialmente se registran casos de deserción.

Ahora observaremos como la metodología virtual fluctuó y en que proporción por año en comparación con la presencialidad a la hora de ofrecer “x o y” carrera.

referencia: deserción en Colombia en 2020

Los datos de la virtualidad se registran desde el año 2021, esto se le atribuye a que los registros pre-pandemia de estas carreras no eran tan relevantes por ser pocas y de poco interés del publico nacional; ahora una vez ocurrido el encierre y las actualizaciones a los servicios de comunicación como meet y zoom se nota un incremento representando aproximadamente el 10% en comparación de la presencialidad, la metodología a distancia también se afecto con la misma proporción y según fuentes (Impacto de la transición de la educación tradicional a la virtual, Educación virtual: ¿Más efectiva que clases presenciales?) es inevitable los cambios a una nueva normalidad dependiendo de plataformas para capacitarse en algún área.

Otra tabla interesante que sale como pregunta de la anterior es: ¿Cómo se vio afectado los graduados de pregrado por los años presentes según su metodología?

Vemos que los números de los graduados son demasiado altos, sin comparar con la presencialidad, esto nos dice que más de 24 mil personas se graduaron de pregrado en el año 2021 en Colombia, este mismo caso ocurre con los casos de modalidad a distancia, ya que como dijimos anteriormente era un método casi necesario para no detener los estudios de estudiantes que gracias a esto las restricciones no fueron un impedimento; la pandemia presento una reducción en el 2021 por lo cual se nota una reducción con el año anterior y en el 2018.

Relación de Aspecto:

En esta sección queremos sacar el cociente de los promedios entre admitidos/ingresados y graduados/admitidos, esto se hace con la finalidad de tener una proporción y compararlas entre ellas para saber el flujo que hay entre lo que entre y lo que sale en los casos anteriores.

En esta tabla vemos un cociente interesante para la comparación entre el número de inscritos y admitidos en los años 2018, 2020 y 2021, además con el interés de saber que tipo de instituciones hay menos igualdad en los accesos a la educación ya sea por examen o entrevista.

Algo a destacar es el año 2018 y como las IES privadas admitieron un poco más de los estudiantes que se inscribieron ese mismo año, en contraste a las IES publicas que admitieron un poco más del 70% de los inscritos, además de que para el año 2021 bajo el porcentaje en los dos sectores.

Esto puede ser un indicador de que las IES tanto publicas como privadas se han vuelto más selectivas (hasta un 20% de rigurosidad) a la hora de admitir un estudiante a una carrera de pregrado.

En este caso, este cociente refleja que los graduados en las IES privadas a pesar de enfrentar una pandemia siguieron graduando a sus estudiantes, para el caso de las IES publicas la tasa del 2020 fue muy baja, es decir, solo el 50% de los admitidos fueron graduados ese año, por lo que poco a poco representará una acumulación de estudiantes por año en las IES publicas, esto se puede ver en el año 2021 donde represento la tasa más alta de los tres años estudiados; podría decirse que es una porcentaje bueno pero solo muestra que una porción de estudiantes graduados del 2021 debieron graduarse en el 2020 como acumulación, dado de que cada IES se espera que tenga en proporción un flujo de admitidos a los graduados.

Serie de Admitidos y Graduados

load("series.RData")

p <- serie1 %>%
  ggplot(aes(x=ano,y = total,
             group = Estado_Estudiante,
             colour = Estado_Estudiante,
             shape = Estado_Estudiante))+
  geom_point()+geom_line()+
  scale_y_continuous(breaks = c(0,300000,600000,900000,1200000),
                     labels = c(0,"300k", "600k", "900k", "1.2M"))+
  labs(y = "Conteo Total", x = "Año",
       title = "Serie anual del conteo total de estudiantes")+
  theme_minimal()+
  theme(axis.text.x = element_text(angle = 90, vjust = 0.5, hjust=1))

p %>% ggplotly()

El gráfico nos muestra una serie de tiempo del conteo total realizado por año según el estado del estudiante, esto nos da una idea general de la escala de los admitidos y graduados totales por año, con esto en mente decimos que el crecimiento de los admitidos por año se incremente de manera súbita, tanto que los años 2007 y 2011 son los que registran los picos locales para que tenga esta forma montañosa, ahora en comparación con los graduados notamos un crecimiento algo lineal y más normalizado.

La comparativa muestra algo preocupante en el caso de los admitidos, de antemano se sabe que las IES no amplían sus instalaciones año tras año para recibir estudiantes de manera exponencial, más bien se crece gradualmente en el plazo mínimo de 2 a 4 años (si se cuenta con los recursos, como el caso de las IES privadas).

Los graduados representan una escala más lineal y esto se debe a que es aplanada por los admitidos, por lo cual para nuestra problemática es algo a tener en cuenta dentro de los factores para que una persona escoja una carrera sobre otra y es el hecho de crear una tasa de las personas que se gradúan desde el punto de la deserción que presenta esa carrera en la IES especifica.

Modelo apriori apriori para los graduados:

Una pregunta que nos cuestionamos fue el hecho de poder decir si la cantidad de graduados por año se podría modelar debido a su importancia, es decir, según las características históricas poder modelar el número total de graduados en un año para los estudiantes de pregrado.

Antes que nada montamos un subset para la creación del modelo:

mydata <- copy_sin_na %>% dplyr::select(principal_o_seccional, sector_ies,
                                        caracter_ies,nivel_de_formacion,
                                        metodologia,area_de_conocimiento,
                                        nucleo_basico_del_conocimiento_nbc,
                                        departamento_de_oferta_del_programa,
                                        sexo, ano, semestre, inscritos, 
                                        admitidos, graduados)


# Cambiamos la estructura de algunas variables
# para un mejor desarrollo del problema

mydata <- mydata %>%
  mutate_at(vars(graduados, inscritos, admitidos, ano), as.numeric) %>% 
  mutate_at(vars(sexo, semestre, metodologia, nivel_de_formacion, caracter_ies,
                 nucleo_basico_del_conocimiento_nbc, principal_o_seccional,
                 sector_ies,
                 area_de_conocimiento,
                 departamento_de_oferta_del_programa), as.factor)

Aplicando el modelo de regresión tradicional con la función lm(), no hay un desarrollo claro, uno de los factores que no permite el desarrollo optimo de la función es la capacidad comunicacional de los computadores usados, por lo cual se toma otro desarrollo, aun así se deja planteado el código utilizado con la función lm():

# Fit the linear regression model por metodo tradicional
model <- lm(graduados ~ ., data = mydata)


summary(mydata)

Nos decantamos al final por método de aprendizaje de maquina, esto también aplicando el desarrollo de una regresión, además uno de los beneficios de este tipo de métodos es la capacidad de particionar los datos para la validación de los mismos y poder calcular el sobre-ajuste .

Gracias a la librería caret desarrollamos la regresión por medio de la función train(), pero antes de la aplicación se particionan los datos:

# Split the data into training and validation sets

set.seed(123)

split <- createDataPartition(mydata$graduados, p = 0.7, list = FALSE)
train <- mydata[split, ]
validate <- mydata[-split, ]

Una vez los datos están en entrenamiento y validación aplicamos la función para la creación del modelo:

# Fit the linear regression model
model <- train(graduados ~ ., data = train, method = "lm")

Este modelo presenta unas advertencias dado a la multicolinealidad de los datos, esto se debe a que los graduados dependen demasiado o en su totalidad de los ingresados y admitidos de ese año; esto se debe en parte a a la liberación de cupos por año que se da al graduarse un grupo de personas, por lo cual da espacio a la universidad de brindar atención en bienestar o en otras áreas como extensión para los nuevos admitidos.

# Make predictions on the validation set
predictions <- predict(model, newdata = validate)
  

########### calculo de métricas de rendimiento

# Calculate mean absolute error
mae <- mean(abs(predictions - validate$graduados))

# Calculate root mean squared error
rmse <- sqrt(mean((predictions - validate$graduados)^2))

# Calculate R-squared
r2 <- 1 - (sum((predictions - validate$graduados)^2) / sum((validate$graduados - mean(validate$graduados))^2))

En el anterior bloque de código hacemos las predicciones de los datos para compararlas con los datos de validación y se calculan las respectivas métricas para observar que tan bueno es el modelo

# Print the performance metrics
print(paste("MAE:", mae))
[1] "MAE: 11.1006387475744"
print(paste("RMSE:", rmse))
[1] "RMSE: 26.9221760052996"
print(paste("R-squared:", r2))
[1] "R-squared: 0.383567773803164"

En las métricas vemos algo claramente bueno, es decir con el MAE y el RMSE dado a sus valores tan bajos, si nos dejamos llevar por el R-cuadrado no es relativamente bueno pero al observar el nivel de error el la diferencia de los reales vs los predichos tenemos que:

## evaluando el  sobre-ajuste  usando el MAE

train_predictions <- predict(model, newdata = train)
validate_predictions <- predict(model, newdata = validate)

# Calculate the MAE on the training and validation sets
train_mae <- mean(abs(train_predictions - train$graduados))
validate_mae <- mean(abs(validate_predictions - validate$graduados))

# Calculate the percentage difference between the MAE on the training and validation sets
difference <- 100 * (validate_mae - train_mae) / train_mae

# Print the percentage difference
print(paste("Percentage difference:", difference, "%"))
[1] "Percentage difference: 2.82685249018726 %"

La diferencia porcentual de error es menor al 3% por lo cual este modelo cumple de buena manera (sin ningún tipo de intervención), lo que nos puede asegurar lo que esperábamos, la capacidad de modelar el número de graduados año tras año.

Nota: queda pendiente el hecho de la multicolinealidad entre las ultimas columnas

Clustering:

Ahora otro tipo de método que decidimos aplicar es un cluster para la agrupaciones que se puedan dar en nuestra BD

De antemano fijamos el número de cluster igual a 5

# Set the number of clusters
k <- 5

Aplicando el modelo por medio de la función kmodes() de la librería klaR, tenemos un cluster para las variables categóricas no codificadas

# Build the k-modes clustering model
model <- kmodes(mydata, modes = k, iter.max = 20)


# Print the cluster assignments
print(paste("Cluster assignments:", model$cluster), max = 50)
 [1] "Cluster assignments: 1" "Cluster assignments: 5" "Cluster assignments: 1"
 [4] "Cluster assignments: 1" "Cluster assignments: 1" "Cluster assignments: 5"
 [7] "Cluster assignments: 1" "Cluster assignments: 1" "Cluster assignments: 1"
[10] "Cluster assignments: 5" "Cluster assignments: 1" "Cluster assignments: 1"
[13] "Cluster assignments: 1" "Cluster assignments: 1" "Cluster assignments: 1"
[16] "Cluster assignments: 5" "Cluster assignments: 1" "Cluster assignments: 1"
[19] "Cluster assignments: 1" "Cluster assignments: 5" "Cluster assignments: 1"
[22] "Cluster assignments: 1" "Cluster assignments: 1" "Cluster assignments: 5"
[25] "Cluster assignments: 1" "Cluster assignments: 1" "Cluster assignments: 1"
[28] "Cluster assignments: 5" "Cluster assignments: 1" "Cluster assignments: 1"
[31] "Cluster assignments: 1" "Cluster assignments: 5" "Cluster assignments: 1"
[34] "Cluster assignments: 1" "Cluster assignments: 1" "Cluster assignments: 2"
[37] "Cluster assignments: 1" "Cluster assignments: 1" "Cluster assignments: 1"
[40] "Cluster assignments: 5" "Cluster assignments: 1" "Cluster assignments: 1"
[43] "Cluster assignments: 1" "Cluster assignments: 5" "Cluster assignments: 1"
[46] "Cluster assignments: 1" "Cluster assignments: 1" "Cluster assignments: 5"
[49] "Cluster assignments: 1" "Cluster assignments: 1"
 [ reached getOption("max.print") -- omitted 44513 entries ]

Por ultimo vemos las asignaciones que se presento por los 5 cluster

el segundo paso dentro de estos métodos es la realización visuales para un mejor entendimiento del cluster:

# Subset calsificando por cluster
mydata_clustered <- cbind(mydata, cluster = model$cluster)

Ahora aplicando una caracterización para ver como se comportan (porcentualmente) las variables categóricas en los respectivos cluster:

### caracterización de los cluster
####3 para la variable sexo

p <- ggplot(mydata_clustered, aes(x = sexo, fill = sexo)) +
  geom_bar(aes(y = (..count..)/sum(..count..)))+theme_minimal()+
  facet_wrap(~ cluster)+theme(legend.position = "none")+
  labs(y = "Porcentaje", x = "Sexo",
                             title = "Facetado por Cluster")+
  theme(legend.position = "none")

p %>% ggplotly()

Podemos notar que en el cluster 1 y el cluster 4 es donde la mujeres priman en dichas categorías, mientras que para el cluster 2, 3 y 5 los hombres resaltan en su mayoría.

#### resumen  numérico para las variables continuas
by(mydata_clustered[, c("inscritos", "admitidos", "graduados")],
   mydata_clustered$cluster, describe)
mydata_clustered$cluster: 1
data[x, , drop = FALSE] 

 3  Variables      11494  Observations
--------------------------------------------------------------------------------
inscritos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
   11494        0      722        1    94.43    131.8     2.65     5.00 
     .25      .50      .75      .90      .95 
   13.00    35.00    82.00   195.70   337.35 

lowest :    1    2    3    4    5, highest: 5488 6265 7087 7758 8415
--------------------------------------------------------------------------------
admitidos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
   11494        0      366        1    42.31    50.04      2.0      4.0 
     .25      .50      .75      .90      .95 
    10.0     24.0     44.0     81.7    123.0 

lowest :    1    2    3    4    5, highest: 2328 2329 2678 3233 3474
--------------------------------------------------------------------------------
graduados 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
   11494        0      189    0.995    15.61    19.52        1        1 
     .25      .50      .75      .90      .95 
       3        7       18       34       51 

lowest :    1    2    3    4    5, highest:  848  961 1016 1169 1272
--------------------------------------------------------------------------------
------------------------------------------------------------ 
mydata_clustered$cluster: 2
data[x, , drop = FALSE] 

 3  Variables      8035  Observations
--------------------------------------------------------------------------------
inscritos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    8035        0      381        1    45.51    57.05        2        4 
     .25      .50      .75      .90      .95 
       9       20       48      107      170 

lowest :    1    2    3    4    5, highest: 1081 1210 1328 1476 1846
--------------------------------------------------------------------------------
admitidos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    8035        0      288    0.999    32.65    38.96        2        3 
     .25      .50      .75      .90      .95 
       7       16       36       75      111 

lowest :   1   2   3   4   5, highest: 811 825 835 862 933
--------------------------------------------------------------------------------
graduados 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    8035        0      186    0.998     18.4    21.57        1        2 
     .25      .50      .75      .90      .95 
       4       10       22       42       61 

lowest :   1   2   3   4   5, highest: 424 511 619 622 647
--------------------------------------------------------------------------------
------------------------------------------------------------ 
mydata_clustered$cluster: 3
data[x, , drop = FALSE] 

 3  Variables      8174  Observations
--------------------------------------------------------------------------------
inscritos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    8174        0      514    0.999    65.73    97.44        1        3 
     .25      .50      .75      .90      .95 
       8       20       50      122      219 

lowest :    1    2    3    4    5, highest: 3811 6217 8374 8641 8997
--------------------------------------------------------------------------------
admitidos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    8174        0      376    0.999    42.26    57.54      1.0      3.0 
     .25      .50      .75      .90      .95 
     7.0     17.0     39.0     82.0    137.3 

lowest :    1    2    3    4    5, highest: 2044 2047 2115 2196 4701
--------------------------------------------------------------------------------
graduados 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    8174        0      201    0.996    17.04    22.16        1        1 
     .25      .50      .75      .90      .95 
       3        7       17       35       55 

lowest :    1    2    3    4    5, highest:  836  983 1023 1149 1375
--------------------------------------------------------------------------------
------------------------------------------------------------ 
mydata_clustered$cluster: 4
data[x, , drop = FALSE] 

 3  Variables      6886  Observations
--------------------------------------------------------------------------------
inscritos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    6886        0      440        1     60.7    77.39      2.0      5.0 
     .25      .50      .75      .90      .95 
    11.0     27.0     63.0    135.5    221.0 

lowest :    1    2    3    4    5, highest: 2042 2388 2441 3480 4670
--------------------------------------------------------------------------------
admitidos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    6886        0      297        1    39.17    45.04        2        4 
     .25      .50      .75      .90      .95 
      10       22       44       84      123 

lowest :    1    2    3    4    5, highest: 1264 1871 1909 2048 3405
--------------------------------------------------------------------------------
graduados 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    6886        0      149    0.996    15.71    18.54        1        1 
     .25      .50      .75      .90      .95 
       3        8       19       38       56 

lowest :   1   2   3   4   5, highest: 249 264 297 401 678
--------------------------------------------------------------------------------
------------------------------------------------------------ 
mydata_clustered$cluster: 5
data[x, , drop = FALSE] 

 3  Variables      9974  Observations
--------------------------------------------------------------------------------
inscritos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    9974        0      575        1    77.97    107.2      3.0      5.0 
     .25      .50      .75      .90      .95 
    12.0     30.0     68.0    155.0    246.4 

lowest :    1    2    3    4    5, highest: 6676 7513 7753 8280 8396
--------------------------------------------------------------------------------
admitidos 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    9974        0      326        1    36.92    43.56      2.0      4.0 
     .25      .50      .75      .90      .95 
     9.0     21.0     39.0     73.0    109.4 

lowest :    1    2    3    4    5, highest: 1617 2208 3184 3798 3980
--------------------------------------------------------------------------------
graduados 
       n  missing distinct     Info     Mean      Gmd      .05      .10 
    9974        0      158    0.995    13.72    16.48        1        1 
     .25      .50      .75      .90      .95 
       3        7       16       31       45 

lowest :   1   2   3   4   5, highest: 469 520 553 738 758
--------------------------------------------------------------------------------

Por medio de la función describe() vemos un resumen numérico de los datos por cluster y algo a rescatar es su promedio por cada grupo creado, por lo cual decimos que el cluster 1 alberga más características con similitudes, pero a la vez es superado por el cluster número 5.

####3 para la variable área del conocimiento 
p <- ggplot(mydata_clustered, aes(x =area_de_conocimiento,
                             fill = area_de_conocimiento)) +
  geom_bar(aes(y = (..count..)/sum(..count..)))+theme_minimal()+
  facet_wrap(~ cluster)+
  labs(y = "Porcentaje", x = "Área de Conocimiento",
       title = "Facetado por Cluster")+
  theme(legend.position = "none",axis.text.x = element_blank())

p %>% ggplotly()

Aquí vemos como predominan las áreas de conocimiento de más estudio en Colombia, tales como:

  • Economía, administración, contaduría y afines

  • Ingeniería, arquitectura, urbanismo y afines

Con la primera categoría llevándose el mayor porcentaje en cada uno e los cluster, por lo cual solo se rescata que en las agrupaciones de la uno a la 5 no se vieron áreas que son predominantes hoy en día como las matemáticas y ciencias naturales

####3 para la variable área del metodología

p <- ggplot(mydata_clustered, aes(x =metodologia, fill = metodologia)) +
  geom_bar(aes(y = (..count..)/sum(..count..)))+theme_minimal()+
  facet_wrap(~ cluster)+labs(y = "Porcentaje", x = "Metodología",
                             title = "Facetado por Cluster")+
  theme(legend.position = "none",axis.text.x = element_blank())

p %>% ggplotly()

Era de esperarse que la presencialidad es la metodología por excelencia en las agrupaciones, pero pensamos que la segunda iba a ser la virtualidad debido a la época de globalización actual, pero esta se ve desplazada por la distancia tradicional de estudiar independientemente para evaluarse fines de semana, siendo sinceros, esta metodología es muy prometedora dado a la precariedad de los Colombianos a la hora de estudiar o prepararse ya que tienen obligaciones como familias o trabajos que los impiden por lo cual es mejor a distancia y evaluaciones presenciales a la hora de obtener certificados o títulos.