Presentacion del Proyecto

El presente documento tiene la finalidad de establecer la bases para el proyecto final de la materia probabilidad y estadística 2, en donde se eligió la base de datos con nombre 2026 QS Clasificación Mundial de Universidades elaborada por la firma Quacquarelli Symonds (QS).

Elegimos esta base de datos de acuerdo a la coyuntura del país y de las universidades, ya que consideramos que por medio de esta base de datos se pueden analizar varias situaciones que refleja el país, como que tan bien ubicadas están las universidades del país con respecto a las demás o cuales son los criterios en donde vamos por buen camino o que debemos empezar a hacer para que las universidades del país logren subir sus puestos en el futuro.

Información Sobre la base de Datos

Para el desarrollo del proyecto descargamos el archivo xlsx con nombre 2026 QS World University Ranking.xlsx desde la aplicacion kagle y la subimos a un sheets en linea para facilitar el trabajo coperativo del equipo de trabajo, el cual contiene las siguientes variables:

  • 2026 Rank: Posición en el ranking para el año 2026.
    Tipología: Categórica.

  • Previous Rank: Posición en el ranking del año 2025.
    Tipología: Categórica.

  • Institution Name: Nombre de la Institución Educativa.
    Tipología: Categórica.

  • Country/Territory: Nombre del país al que pertenece la institución.
    Tipología: Categórica.

  • Region: Nombre del continente o región geográfica correspondiente.
    Tipología: Categórica.

  • Size: Aproximación del tamaño de la universidad basada en la población estudiantil.
    Tipología: Categórica.

  • Focus: Enfoque académico de la institución (por ejemplo, amplia, especializada, técnica, etc.).
    Tipología: Categórica.

  • Research: Nivel de intensidad de la investigación desarrollada por la institución.
    Tipología: Categórica.

  • Status: Tipo de institución (por ejemplo, pública o privada).
    Tipología: Categórica.

  • AR SCORE: Reputación académica basada en una encuesta académica global.
    Tipología: Escalar.

  • AR RANK: Ranking correspondiente a la variable AR SCORE.
    Tipología: Categórica.

  • ER SCORE: Reputación del empleador basada en los comentarios de empleadores.
    Tipología: Escalar.

  • ER RANK: Ranking correspondiente a la variable ER SCORE.
    Tipología: Categórica.

  • FSR SCORE: Proporción entre profesores y alumnos, mide el compromiso con la enseñanza.
    Tipología: Escalar.

  • FSR RANK: Ranking correspondiente a la variable FSR SCORE.
    Tipología: Categórica.

  • CPF SCORE: Citas por profesor; mide la producción y la calidad de la investigación.
    Tipología: Escalar.

  • CPF RANK: Ranking correspondiente a la variable CPF SCORE.
    Tipología: Categórica.

  • IFR SCORE: Porcentaje de personal docente internacional.
    Tipología: Escalar.

  • IFR RANK: Ranking correspondiente a la variable IFR SCORE.
    Tipología: Categórica.

  • ISR SCORE: Tasa de estudiantes internacionales.
    Tipología: Escalar.

  • ISR RANK: Ranking correspondiente a la variable ISR SCORE.
    Tipología: Categórica.

  • ISD SCORE: Diversidad entre los estudiantes internacionales.
    Tipología: Escalar.

  • ISD RANK: Ranking correspondiente a la variable ISD SCORE.
    Tipología: Categórica.

  • IRN SCORE: Networking de las investigaciones internacionales.
    Tipología: Escalar.

  • IRN RANK: Ranking correspondiente a la variable IRN SCORE.
    Tipología: Categórica.

  • EO SCORE: Índice de empleabilidad de los egresados.
    Tipología: Escalar.

  • EO RANK: Ranking correspondiente a la variable EO SCORE.
    Tipología: Categórica.

  • SUS SCORE: Índice de sostenibilidad y de iniciativas sociales.
    Tipología: Escalar.

  • SUS RANK: Ranking correspondiente a la variable SUS SCORE.
    Tipología: Categórica.

  • OVERALL SCORE: Puntaje final utilizado para determinar el puesto en el ranking general.
    Tipología: Escalar.

Ya a una manera mas genera describimos que la base de datos contiene 1501 filas y 30 columnas, de los cuales las 1501 filas corresponden a las mejores 1501 universidades a nivel mundial a corte del 2025 y las 30 columnas si distribuyen en 3 grandes grupos, el primero es la información de las universidades como lo son: Nombre de la universidad, región y país de donde radican y por último el tamaño y el tipo de universidad entre pública y privada, todas estas variables son de tipo categórica, por otro lado tenemos la variables numéricas en donde tenemos los score de cada una de las métricas que se describen en el apartado anterior.

Estos datos fueron recolectados por esta empresa, por medio de encuestas globales tanto a académico como a empleadores, asimismo un análisis bibliográfico en bases de datos académicos como Scopus y por último información pública de las universidades, en donde crean indicadores y ranking por esos indicadores en donde el aglomerado de todos los indicadores es lo que permite crear un ranking para las mejores universidades.

Dentro de todos los indicadores que la empresa utiliza para este ranking destacamos los siguientes: La reputación académica, Reputación Empleador, Citas por Facultad, Proporción de Estudiante-Profesor, Ratio de Profesorado Internacional y Ratio de Estudiantes Internacionales, ya que en gran parte del mundo se considera que son los indicadores que más influyen en para tener un mejor puestos en estos rankings pero encontramos que por información dada por la misma QS esas no son las únicas variables que pueden explicar el comportamiento en estos rankings.

Metodología a desarrollar

La metodología propuesta para el desarrollo del proyecto consiste en realizar un análisis descriptivo de las principales variables del dataset, utilizando medidas de tendencia central, dispersión y distribuciones de frecuencia. Posteriormente, se desarrollará una fase de visualización mediante histogramas, diagramas de dispersión y gráficos comparativos que permitan identificar patrones y tendencias en los datos.

A partir de estos resultados exploratorios, se establecerán relaciones y posibles correlaciones entre los puntajes y los rankings, formulando hipótesis sobre los factores que podrían explicar las diferencias observadas entre instituciones. Dichas hipótesis serán contrastadas y verificadas mediante herramientas estadísticas apropiadas, como pruebas t y pruebas de proporciones, garantizando un análisis riguroso y coherente con los objetivos del estudio.

Objetivo

Con esto en mente planteamos el siguiente objetivo: identificar las fortalezas y debilidades de las universidades colombianas con respecto a las Métricas de la base de datos encontradas por medio del desarrollo de la metodología y hacer predicciones de en que se debería mejorar la universidad del Rosario para subir de puestos en el ranking de las mejores universidades del mundo.

Mención especial sobre modificación de la Base de Datos

Antes de empezar con el desarrollo del proyecto, es necesario mencionar que se utilizó un modelo de regresión lineal para completar los valores faltantes en la variable Overall Score, ya que existían algunos datos en los que este valor estaba vacíos, logrando un R2 de 0.9999977 que nos permitió lograr sumplir esta probleamtica con la finaidad de poder hacer un mejor análisis para cumplir nuestro objetivo.

Para este punto separamos las variables predictoras (Todos los Score de las metricas) y la variable objetivo Overall Score, se utilizo la semilla 000 para este modelo y se dividio en modelo en una proporcion 70/30 que quiere decir que el modelo se entrena con el 70% de lso datos y se evalua con el otro 30% restante.

# Variables dependiente e independientes
x <- rank_ %>%
  select(-`Overall SCORE`) %>%
  mutate(across(everything(), ~ replace(., is.na(.), 0))) %>%
  head(703)

y <- rank_$`Overall SCORE`[1:703]

# División Train/Test
set.seed(000)
trainIndex <- createDataPartition(y, p = 0.30, list = FALSE)
X_train <- x[trainIndex, ]
X_test  <- x[-trainIndex, ]
y_train <- y[trainIndex]
y_test  <- y[-trainIndex]

# Ajuste del modelo
train_df <- X_train %>%
  mutate(Overall_SCORE = y_train)

modelo_rm <- lm(Overall_SCORE ~ ., data = train_df)

summary(modelo_rm)
## 
## Call:
## lm(formula = Overall_SCORE ~ ., data = train_df)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.049978 -0.022881 -0.002722  0.021734  0.051477 
## 
## Coefficients:
##               Estimate Std. Error  t value Pr(>|t|)    
## (Intercept) -2.121e+00  9.733e-03 -217.889   <2e-16 ***
## `AR SCORE`   3.092e-01  1.712e-04 1805.848   <2e-16 ***
## `ER SCORE`   1.551e-01  1.308e-04 1185.527   <2e-16 ***
## `FSR SCORE`  1.032e-01  7.167e-05 1439.978   <2e-16 ***
## `CPF SCORE`  2.063e-01  7.036e-05 2931.914   <2e-16 ***
## `IFR SCORE`  5.160e-02  7.748e-05  665.949   <2e-16 ***
## `ISR SCORE`  5.161e-02  3.471e-04  148.698   <2e-16 ***
## `ISD SCORE` -5.281e-05  3.690e-04   -0.143    0.886    
## `IRN SCORE`  5.169e-02  1.230e-04  420.076   <2e-16 ***
## `EO SCORE`   5.158e-02  9.222e-05  559.301   <2e-16 ***
## `SUS SCORE`  5.154e-02  1.814e-04  284.074   <2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0288 on 201 degrees of freedom
## Multiple R-squared:      1,  Adjusted R-squared:      1 
## F-statistic: 8.232e+06 on 10 and 201 DF,  p-value: < 2.2e-16
## **MSE:** 8e-04
## **RMSE:** 0.029
## **R²:** 0.999998

Con esto nos damos cuenta que el modelo tiene un rendimiento excelente casi perfecto para evaular los datos que no tiene este dato vital para nuestro analisis.

Análisis descriptivo de variables categóricas

Dentro del proceso de exploración de la base de datos 2026 QS Clasificación Mundial de Universidades, resulta fundamental iniciar con un análisis descriptivo de las variables categóricas, variables como el nombre de la universidad, región, país, tipo de institución (pública o privada) y tamaño constituyen dimensiones clave para comprender cómo se distribuyen y diferencian las universidades en el ranking mundial para determinar que hace que estas universidades llegarán al ranking.

1. Tamaño

En la siguiente gráfica se puede ver que la moda entre las universidades es tamaño “L” (Large), con un porcentaje de 45.133333%, de igual forma, el tamaño “M” (Medium” y “XL” (Extra Large) presentan una frecuencia similar, con una diferencia del 2.3%, y por el otro lado la menos común es el tamaño “S” (Small), con un 6.466667%.

##    Frecuencia Porcentaje
## L         677  45.133333
## M         380  25.333333
## S          97   6.466667
## XL        346  23.066667
## [1] "Moda: L"

2. Tipo de universidad

En esta categoría se puede determinar el objetivo de la universidad, si son públicas, privadas por fines de lucro, o privada sin fines de lucro. Para este caso la moda son las universidades públicas, que son el 78.679505%, y las menos comunes son las privadas por fines de lucro, con un 3.782669%. Cabe notar que hay una categoría adicional, “NA”, que son las universidades que no tienen nada en esta columna, pero no se cuenta porque no es una categoría real dentro de la base de datos, solo es una forma de contar las universidades que no tienen este dato.

## [1] "Tabla de Frecuencias y Porcentajes:"
##                        Frecuencia Porcentaje
## Private for Profit             55   3.782669
## Private not for Profit        255  17.537827
## Public                       1144  78.679505
## [1] "------------------------------------------"
## [1] "La Moda (estado más frecuente) es: Public"

3. Región

En la siguiente gráfica se pueden ver las frecuencias en donde las distintas universidades están ubicadas, la moda en este caso es Asia, con un 37.641572%, y la menos frecuente es Oceanía, con 2.931379%, la cual tiene una diferencia de porcentaje con África del 0.2%. En este caso se puede notar que no hay diferencia de porcentajes tan grande comparado con categorías como el estado.

## [1] "Tabla de Frecuencias y Porcentajes:"
##          Frecuencia Porcentaje
## Africa           47   3.131246
## Americas        358  23.850766
## Asia            565  37.641572
## Europe          487  32.445037
## Oceania          44   2.931379
## [1] "------------------------------------------"
## [1] "La Moda (región más frecuente) es: Asia"

Análisis Descriptivo de las Variables Cuantitativas

Además de las variables categóricas, la base de datos 2026 QS Clasificación Mundial de Universidades contiene un conjunto amplio de variables cuantitativas que permiten evaluar con mayor precisión el desempeño de las instituciones en las distintas métricas propuestas por QS.

1. AR SCORE

El AR SCORE es el puntaje de reputación académica que presentan las universidades, en esta gráfica se puede ver que hay una densidad de datos entre 30 y 70, los bigotes se extienden a través de todos los valores, llegando a 100 pero no llegando a 0, solo hasta 1 y en este caso no hay valores extremos, viendo su media y mediana, se sabe que presenta una ligera asimetría positiva. En general, la distribución no es completamente simétrica, mostrando un sesgo hacia la derecha, por lo que no sigue una distribución normal.

## # A tibble: 554 × 2
##    AR_SCORE_num Frecuencia
##           <dbl>      <int>
##  1          1            1
##  2          1.8          1
##  3          1.9          1
##  4          2.5          1
##  5          2.7          1
##  6          2.8          2
##  7          3.1          4
##  8          3.2          3
##  9          3.3          2
## 10          3.4          6
## # ℹ 544 more rows
## [1] "Estadígrafos de Tendencia Central y Dispersión (AR Score):"
##   N_Valores_Validos Media_AR_SCORE Mediana_AR_SCORE Moda_AR_SCORE
## 1              1501       25.78594               16      6.4, 7.2
##   Desviacion_Estandar Varianza Rango_Intercuartil Minimo Maximo Rango_Total
## 1            24.50091 600.2944               23.9      1    100          99

2. ER SCORE

ER Score sirve para determinar la calidad de empleados de la institución, lo que sirve para determinar si esto es factor para que las universidades entren en este rango Para este caso, los datos son mucho más variados ya que no es una distribución normal y presenta múltiples picos, al comparar la media y la mediana, se observa que la media es ligeramente superior, lo que indica una asimetría positiva, pero se puede notar una densidad mayor entre 40 y 50 donde está la media. Se puede ver en la gráfica que la distribución es irregular y multimodal, con varias concentraciones de densidad y una extensión de valores a lo largo de todo el rango, desde 0 hasta 100.

## [1] "Estadígrafos de ER Score (Reputación del Empleador):"
##   N_Valores_Validos Media_ER_SCORE Mediana_ER_SCORE Moda_ER_SCORE
## 1              1501          26.94             16.5     8.2, 10.8
##   Desviacion_Estandar Rango_Intercuartil_IQR
## 1                25.5                     29

3. Relación ER SCORE y AR SCORE

Esta gráfica verifica la correlación entre ER Score y AR Score con un diagrama de dispersión, se puede ver que tiene algunos valores dispersos pero tiene una tendencia general. El ajuste lineal muestra una correlación lineal positiva, y el valor 0.85 lo demuestra.

## [1] 0.8590364
## `geom_smooth()` using formula = 'y ~ x'

Análisis Descriptivo de las Variables Cuantitativas

1. Comparativa Colombia vs Mundo vs Americas

En el análisis bivariado nos centraremos en dos objetivos principales. El primero consiste en identificar la posición de Colombia en algunos de los indicadores más relevantes del ranking, comparándola con el desempeño del conjunto de universidades del continente americano y con el promedio mundial. El segundo busca contrastar los indicadores de la Universidad del Rosario con los de las instituciones públicas y privadas de Colombia, con el fin de determinar fortalezas y posibles áreas de mejora en relación con su contexto nacional.

# Crear variable Grupo
rank_final_1 <- rank_final %>%
  mutate(Grupo = case_when(
    `Country/Territory` == "Colombia" ~ "Colombia",
    Region == "Americas" ~ "Américas",
    TRUE ~ "Mundo"
  ))

# Variables de interés
vars_interes <- c("AR SCORE", "ER SCORE", "CPF SCORE", 
                  "FSR SCORE", "IFR SCORE", "ISR SCORE")

# Estadísticos descriptivos: mediana, mínimo y máximo
resumen <- rank_final_1 %>%
  group_by(Grupo) %>%
  summarise(across(all_of(vars_interes), 
                   list(mediana = median, 
                        minimo = min, 
                        maximo = max), 
                   .names = "{.col}_{.fn}"),
            .groups = "drop")

print(resumen)
## # A tibble: 3 × 19
##   Grupo    `AR SCORE_mediana` `AR SCORE_minimo` `AR SCORE_maximo`
##   <chr>                 <dbl>             <dbl>             <dbl>
## 1 Américas               15.9               1               100  
## 2 Colombia               23.8               7.8              81.5
## 3 Mundo                  16                 2.7             100  
## # ℹ 15 more variables: `ER SCORE_mediana` <dbl>, `ER SCORE_minimo` <dbl>,
## #   `ER SCORE_maximo` <dbl>, `CPF SCORE_mediana` <dbl>,
## #   `CPF SCORE_minimo` <dbl>, `CPF SCORE_maximo` <dbl>,
## #   `FSR SCORE_mediana` <dbl>, `FSR SCORE_minimo` <dbl>,
## #   `FSR SCORE_maximo` <dbl>, `IFR SCORE_mediana` <dbl>,
## #   `IFR SCORE_minimo` <dbl>, `IFR SCORE_maximo` <dbl>,
## #   `ISR SCORE_mediana` <dbl>, `ISR SCORE_minimo` <dbl>, …
# Boxplots comparativos por grupo
for (var in vars_interes) {
  p <- ggplot(rank_final_1, aes(x = Grupo, y = .data[[var]], fill = Grupo)) +
    geom_boxplot(alpha = 0.7) +
    labs(title = paste("Distribución de", var, "por Grupo"),
         x = "Grupo", y = var) +
    theme_minimal()
  print(p)
}

En relación con el primer objetivo, se destacan dos fortalezas principales: el ER SCORE, que mide la reputación del empleador, y el AR SCORE, asociado a la reputación académica. En ambos casos, Colombia presenta una posición favorable frente a las Américas y al promedio mundial, ya que su mediana supera los valores regionales y globales. Esto refleja, por un lado, una valoración positiva de los egresados colombianos en el mercado laboral internacional y, por otro, un reconocimiento académico sólido de sus universidades. No obstante, los boxplots evidencian cierta dispersión, especialmente en el AR SCORE, lo que indica diferencias entre instituciones; aun así, el desempeño general del país revela un perfil competitivo en estas dos dimensiones clave del ranking QS.

Sin embargo, el análisis también pone en evidencia importantes debilidades en otros indicadores. Por ejemplo el IFR SCORE (profesorado internacional) presenta una media bastante inferior comparadas con Américas y al promedio mundial, lo que muestra la limitada capacidad de las universidades colombianas para atraer docentes extranjeros. A su vez, el CPF SCORE (citas por facultad) revela un bajo impacto de la producción investigativa en comparación con los referentes regionales y globales. En conjunto, estos resultados sugieren que, si bien Colombia exhibe fortalezas claras en reputación académica y empleabilidad, sus principales retos se concentran en la internacionalización y la calidad de la investigación.

2. Comparativa Urosario vs Universidades Publicas vs Universidades Privadas

Ahora en desarrollo del objetivo número 2 de este análisis bivariado, procedemos a comparar la universidad del rosario con respecto a las demás universidades públicas y privadas del país de esta forma podemos identificar fortalezas y debilidades.

rank_final_2 <- rank_final %>%
  filter(`Country/Territory` == "Colombia") %>%
  mutate(Grupo = case_when(
    `Institution Name` == "Universidad del Rosario" ~ "Rosario",
    Status == "Public" ~ "Colombia Pública",
    Status == "Private not for Profit" ~ "Colombia Privada"
  ))


# Calcular los valores de Rosario para cada variable
valores_rosario <- rank_final_2 %>%
  filter(Grupo == "Rosario") %>%
  select(all_of(vars_interes))

# Loop para gráficos
for (var in vars_interes) {
  # Extraer valor de Rosario para la variable actual
  valor_rosario <- valores_rosario[[var]]
  
  # Boxplots de públicas y privadas con línea de Rosario
  p <- ggplot(filter(rank_final_2, Grupo != "Rosario"), 
              aes(x = Grupo, y = .data[[var]], fill = Grupo)) +
    geom_boxplot(alpha = 0.7) +
    geom_hline(yintercept = valor_rosario, 
               linetype = "dashed", color = "red", size = 1) +
    labs(title = paste("Distribución de", var, "en universidades de Colombia"),
         subtitle = "Línea roja es el valor de URosario",
         x = "Grupo", y = var) +
    theme_minimal()
  
  print(p)
}

Para los indicadores CPF y AR vemos que la Universidad del Rosario está por encima de la media de las universidades Privadas pero por debajo de las universidades Públicas, lo cual es curioso ya que el Rosario según este ranking es la 5° mejor universidad del país, pero tiene un puntaje relativamente bajo con respecto al país en estos aspectos tan importantes pero por otro lado en los indicadores ER y IFR vemos que la universidad del Rosario está por encima de la media tanto de privadas como públicas, lo cual podemos identificar como una buena percepción en el ámbito laboral como una buena imagen en el ámbito internacional ya que es de la universidades con mayores porcentaje de profesores internacionales del país.

Pruebas de Hipótesis

A partir de los resultados obtenidos en los análisis previos, se plantean dos pruebas de hipótesis orientadas a contrastar estadísticamente las diferencias observadas entre las universidades colombianas y los países de referencia en el ranking QS 2026.

La primera prueba se centra en el indicador de reputación académica (AR SCORE), comparando la media del grupo de universidades colombianas líderes (Universidad del Rosario, Los Andes, Javeriana, Nacional y Antioquia) con la de un conjunto de instituciones élite de Argentina, Brasil y Chile. El propósito es determinar si el nivel de reconocimiento académico del sistema colombiano es significativamente inferior al de los referentes regionales. La segunda prueba analiza la proporción de universidades públicas dentro del sistema colombiano en relación con la proporción conjunta de los mismos países sudamericanos (Brasil, Chile y Argentina). Esta comparación busca identificar si el sector público colombiano se encuentra subrepresentado frente a los sistemas universitarios más consolidados de la región, lo que permitiría evidenciar diferencias estructurales en visibilidad, apoyo estatal e inserción internacional del sistema de educación superior.

En términos formales, las hipótesis planteadas son:

\[ \textbf{Prueba 1:} \quad \begin{cases} H_{0}: \mu_{\text{COL-Top5}} = \mu_{\text{ABC-Élite}} \\ H_{1}: \mu_{\text{COL-Top5}} < \mu_{\text{ABC-Élite}} \end{cases} \qquad\qquad \textbf{Prueba 2: } \quad \begin{cases} H_{0}: p_{\text{COL}} = p_{\text{ABC}} \\ H_{1}: p_{\text{COL}} < p_{\text{ABC}} \end{cases} \]

Resultados Prueba 1 – Reputación académica (AR SCORE)

# ============================
# PRUEBA 1: MEDIA (AR SCORE)
# ============================

# --- Grupo COL-Top5 ---
col_top5 <- rank_final %>%
  filter(`Institution Name` %in% c(
    "Universidad del Rosario",
    "Universidad de Los Andes Colombia",
    "Pontificia Universidad Javeriana",
    "Universidad Nacional de Colombia",
    "Universidad de Antioquia"
  )) %>%
  filter(!is.na(`AR SCORE`), !is.na(Status))

# --- Grupo ABC-Élite ---
abc_elite <- rank_final %>%
  filter(`Institution Name` %in% c(
    "Universidad de Buenos Aires",
    "Universidad Nacional de La Plata",
    "Pontificia Universidad Católica Argentina Santa María de los Buenos Aires - UCA",
    "Universidad Austral - Argentina",
    "Universidad de Palermo",
    "Universidade de São Paulo (USP)",
    "Universidade Estadual de Campinas (Unicamp)",
    "Universidade Federal do Rio de Janeiro",
    "Universidade Estadual Paulista \"Júlio de Mesquita Filho\" (UNESP)",
    "Pontificia Universidade Católica do Rio de Janeiro (PUC - Rio)",
    "Pontificia Universidad Católica de Chile",
    "Universidad de Chile",
    "Universidad de Santiago de Chile - USACH",
    "Universidad Adolfo Ibáñez",
    "Universidad de Concepción"
  )) %>%
  filter(!is.na(`AR SCORE`), !is.na(Status))

# ===============================
# PRUEBA DE MEDIA (Welch t-test)
# ===============================

ar_col5 <- col_top5$`AR SCORE`
ar_abc  <- abc_elite$`AR SCORE`

t_res <- t.test(ar_col5, ar_abc, alternative = "less", var.equal = FALSE)  # H1: COL-Top5 < ABC

cat("\n[Media AR SCORE: COL-Top5 vs ABC-Élite]\n")
## 
## [Media AR SCORE: COL-Top5 vs ABC-Élite]
cat("Media COL-Top5 =", round(mean(ar_col5),2), " (n =", length(ar_col5), ")\n")
## Media COL-Top5 = 57.32  (n = 5 )
cat("Media ABC-Élite =", round(mean(ar_abc),2),  " (n =", length(ar_abc),  ")\n")
## Media ABC-Élite = 58.88  (n = 15 )
cat("t =", round(t_res$statistic,3), "| gl ≈", round(t_res$parameter,1),
    "| p =", round(t_res$p.value,4), "\n")
## t = -0.115 | gl ≈ 7.8 | p = 0.4558
if (t_res$p.value < 0.05) {
  cat("✅ Se RECHAZA H0 (p<0.05): El promedio AR_SCORE de COL-Top5 es significativamente MENOR que el de ABC-Élite.\n")
} else {
  cat("❌ NO se rechaza H0 (p≥0.05): No hay evidencia de diferencia significativa en AR_SCORE.\n")
}
## ❌ NO se rechaza H0 (p≥0.05): No hay evidencia de diferencia significativa en AR_SCORE.

Para contrastar el nivel de reputación académica (AR SCORE) con las cinco mejores universidades de los países referentes, se aplicó una prueba t de Welch con un nivel de significancia del 5 %. Los resultados mostraron una media de 57.32 para el grupo colombiano (n = 5) y 58.88 para el grupo de referencia (n = 15), con un estadístico t = −0.115, gl ≈ 7.8 y un valor p = 0.4558. Dado que p > 0.05, no se rechaza la hipótesis nula, lo que indica que no existe evidencia estadísticamente significativa de que las universidades colombianas presenten un nivel inferior de reputación académica respecto a las instituciones referentes del Cono Sur. Aunque la media de Colombia se mantiene ligeramente por debajo del promedio regional, la diferencia no resulta significativa en términos estadísticos, lo que sugiere que el posicionamiento académico colombiano es comparable al de los países líderes. No obstante, la Universidad del Rosario, con un AR SCORE de 23.8, se ubica muy por debajo de la media nacional y regional, evidenciando la necesidad de fortalecer su visibilidad y reputación académica internacional para mejorar su posición en el ranking global.

Resultados Prueba 2 – Proporción de universidades públicas (Colombia vs. países referentes)

# ===============================
# PRUEBA 2: Colombia vs países referentes (Brasil, Chile, Argentina)
# ===============================

# --- Filtrar Colombia ---
colombia_status <- rank_final %>%
  filter(`Country/Territory` == "Colombia", !is.na(Status))

# --- Filtrar países referentes (Brasil, Chile, Argentina) ---
referentes_status <- rank_final %>%
  filter(`Country/Territory` %in% c("Brazil", "Chile", "Argentina"),
         !is.na(Status))

# --- Conteos ---
x_col <- sum(colombia_status$Status == "Public")
n_col <- nrow(colombia_status)

x_ref <- sum(referentes_status$Status == "Public")
n_ref <- nrow(referentes_status)

# --- Proporciones ---
p_col <- x_col / n_col
p_ref <- x_ref / n_ref

cat("Proporción Colombia:", round(p_col, 3), "(", x_col, "/", n_col, ")\n")
## Proporción Colombia: 0.308 ( 4 / 13 )
cat("Proporción Referentes (Brasil, Chile, Argentina):", round(p_ref, 3),
    "(", x_ref, "/", n_ref, ")\n")
## Proporción Referentes (Brasil, Chile, Argentina): 0.613 ( 38 / 62 )
# --- Prueba de diferencia de proporciones ---
prop_res <- prop.test(x = c(x_col, x_ref),
                      n = c(n_col, n_ref),
                      alternative = "less",
                      correct = FALSE)

print(prop_res)
## 
##  2-sample test for equality of proportions without continuity correction
## 
## data:  c(x_col, x_ref) out of c(n_col, n_ref)
## X-squared = 4.0629, df = 1, p-value = 0.02192
## alternative hypothesis: less
## 95 percent confidence interval:
##  -1.00000000 -0.07136016
## sample estimates:
##    prop 1    prop 2 
## 0.3076923 0.6129032
if (prop_res$p.value < 0.05) {
  cat("✅ Se RECHAZA H0 (p<0.05): Colombia tiene MENOR proporción de universidades públicas que los países referentes (Brasil, Chile y Argentina)\n")
} else {
  cat("❌ NO se rechaza H0 (p≥0.05): proporción de públicas en Colombia similar al promedio de los países referentes\n")
}
## ✅ Se RECHAZA H0 (p<0.05): Colombia tiene MENOR proporción de universidades públicas que los países referentes (Brasil, Chile y Argentina)

Para evaluar la representación institucional del sistema colombiano frente a los países sudamericanos con mayor presencia y consolidación en el ranking QS (Brasil, Chile y Argentina), se realizó una prueba de diferencia de proporciones. Los resultados muestran que la proporción de universidades públicas en Colombia fue de pcolombia = 0.308 (4 de 13 universidades), mientras que en el conjunto de los países referentes la proporción alcanzó preferentes = 0.613 (38 de 62 universidades). El estadístico obtenido fue χ² = 4.06 con un valor p = 0.0219. Dado que , se rechaza la hipótesis nula, concluyendo que Colombia presenta una proporción significativamente menor de universidades públicas que los países referentes (Brasil, Chile y Argentina). Este resultado evidencia una subrepresentación del sector público dentro del sistema universitario colombiano en comparación con las principales potencias académicas de la región, lo que podría reflejar una menor capacidad de las instituciones estatales colombianas para alcanzar visibilidad internacional y posicionarse en el ranking QS.

Análisis de normalidad

Para el desarrollo de este punto, se identificaron como variables continuas todas aquellas asociadas a los distintos indicadores del ranking QS, es decir, las columnas cuyo nombre termina en SCORE. Sobre este subconjunto se verificó la presencia de valores perdidos, encontrándose que ninguna de las variables presenta observaciones faltantes (0 NAs en todos los casos), por lo que no fue necesario realizar procesos de imputación y se trabajó con la base completa de 1501 universidades.

Posteriormente, se llevó a cabo un análisis de valores atípicos mediante el método del rango intercuartílico (IQR), calculado de forma independiente para cada indicador. Los resultados mostraron que la mayoría de las variables no presentan outliers; sin embargo, se identificaron proporciones relevantes de atípicos en AR SCORE, ER SCORE y Overall SCORE, con aproximadamente 9 %, 7 % y 4 % de observaciones extremas, respectivamente. Estos valores corresponden a universidades con puntajes excepcionalmente altos en reputación académica, reputación del empleador y puntaje global, es decir, instituciones de élite dentro del ranking. Dado que se trata de casos reales y coherentes con el fenómeno estudiado, se decidió no eliminarlos ni imputarlos, sino mantenerlos en el análisis y simplemente documentar su presencia.

# Análisis de normalidad.

vars_cont <- names(rank_final)[grepl("SCORE$", names(rank_final))]
vars_cont
##  [1] "AR SCORE"      "ER SCORE"      "FSR SCORE"     "CPF SCORE"    
##  [5] "IFR SCORE"     "ISR SCORE"     "ISD SCORE"     "IRN SCORE"    
##  [9] "EO SCORE"      "SUS SCORE"     "Overall SCORE"
df_scores <- rank_final %>%
  select(all_of(vars_cont)) %>%
  mutate(across(everything(), ~ suppressWarnings(as.numeric(.))))

# ---------- 2) NAs por variable ----------
na_resumen <- df_scores %>%
  summarise(across(everything(), ~ sum(is.na(.)))) %>%
  pivot_longer(everything(), names_to = "variable", values_to = "n_na") %>%
  arrange(desc(n_na))

print(na_resumen)
## # A tibble: 11 × 2
##    variable       n_na
##    <chr>         <int>
##  1 AR SCORE          0
##  2 ER SCORE          0
##  3 FSR SCORE         0
##  4 CPF SCORE         0
##  5 IFR SCORE         0
##  6 ISR SCORE         0
##  7 ISD SCORE         0
##  8 IRN SCORE         0
##  9 EO SCORE          0
## 10 SUS SCORE         0
## 11 Overall SCORE     0
# 1️⃣ Reorganizar el dataframe a formato largo
df_long <- df_scores %>%
  pivot_longer(everything(), names_to = "variable", values_to = "value") %>%
  drop_na(value)

# 2️⃣ Totales por variable
totales <- df_long %>%
  group_by(variable) %>%
  summarise(
    n_total  = n(),
    min_total = min(value, na.rm = TRUE),
    max_total = max(value, na.rm = TRUE),
    .groups = "drop"
  )

# 3️⃣ Detectar outliers por variable (forzando conservar variable)
outs <- df_long %>%
  group_by(variable) %>%
  do({
    df_temp <- identify_outliers(., value)
    df_temp <- df_temp %>% filter(is.outlier)
    data.frame(
      variable = unique(.$variable),
      outliers = nrow(df_temp),
      min_out = ifelse(nrow(df_temp) > 0, min(df_temp$value, na.rm = TRUE), NA),
      max_out = ifelse(nrow(df_temp) > 0, max(df_temp$value, na.rm = TRUE), NA)
    )
  }) %>%
  ungroup()

# 4️⃣ Unir totales y calcular porcentajes
outliers_tbl <- totales %>%
  left_join(outs, by = "variable") %>%
  mutate(
    outliers   = ifelse(is.na(outliers), 0L, outliers),
    min_out    = ifelse(is.na(min_out), NA, min_out),
    max_out    = ifelse(is.na(max_out), NA, max_out),
    porcentaje = round(100 * outliers / n_total, 2)
  ) %>%
  arrange(desc(porcentaje), desc(outliers))

print(outliers_tbl)
## # A tibble: 11 × 8
##    variable      n_total min_total max_total outliers min_out max_out porcentaje
##    <chr>           <int>     <dbl>     <dbl>    <int>   <dbl>   <dbl>      <dbl>
##  1 AR SCORE         1501      1          100      138    68.6     100       9.19
##  2 ER SCORE         1501      1          100      101    81.5     100       6.73
##  3 Overall SCORE    1501      6.87       100       65    77.5     100       4.33
##  4 CPF SCORE        1501      1          100        0    NA        NA       0   
##  5 EO SCORE         1501      1          100        0    NA        NA       0   
##  6 FSR SCORE        1501      1          100        0    NA        NA       0   
##  7 IFR SCORE        1501      0          100        0    NA        NA       0   
##  8 IRN SCORE        1501      0          100        0    NA        NA       0   
##  9 ISD SCORE        1501      0          100        0    NA        NA       0   
## 10 ISR SCORE        1501      0          100        0    NA        NA       0   
## 11 SUS SCORE        1501      0          100        0    NA        NA       0

Una vez caracterizados los atípicos, se evaluó la normalidad de cada variable continua mediante la prueba de Shapiro–Wilk con un nivel de significancia del 5 %. En todos los indicadores se obtuvieron valores p inferiores a 0.05, por lo que ninguna variable sigue una distribución normal en su escala original. Este resultado es consistente con la naturaleza de los datos, que corresponden a puntajes acotados entre 0 y 100 y presentan asimetrías positivas asociadas a la concentración de muchas universidades en niveles medios o bajos y pocas instituciones con resultados muy altos.

norm_tbl <- df_scores %>%
  pivot_longer(everything(), names_to = "variable", values_to = "value") %>%
  group_by(variable) %>%
  drop_na(value) %>%
  summarise(
    n       = n(),
    W       = shapiro.test(value)$statistic,
    p_value = shapiro.test(value)$p.value,
    skew    = e1071::skewness(value, na.rm = TRUE, type = 2),
    kurt    = e1071::kurtosis(value, na.rm = TRUE, type = 2),
    .groups = "drop"
  ) %>%
  mutate(
    normal_a_0_05 = ifelse(p_value >= 0.05, "Sí", "No")
  ) %>%
  arrange(p_value)

print(norm_tbl)
## # A tibble: 11 × 7
##    variable          n     W  p_value    skew    kurt normal_a_0_05
##    <chr>         <int> <dbl>    <dbl>   <dbl>   <dbl> <chr>        
##  1 AR SCORE       1501 0.782 8.06e-41  1.59    1.69   No           
##  2 IFR SCORE      1501 0.812 1.26e-38  0.824  -0.882  No           
##  3 ER SCORE       1501 0.812 1.28e-38  1.40    1.05   No           
##  4 ISR SCORE      1501 0.833 5.39e-37  0.882  -0.634  No           
##  5 EO SCORE       1501 0.838 1.55e-36  1.06   -0.0880 No           
##  6 CPF SCORE      1501 0.849 1.33e-35  0.952  -0.325  No           
##  7 ISD SCORE      1501 0.850 1.52e-35  0.882  -0.576  No           
##  8 Overall SCORE  1501 0.868 9.04e-34  1.26    0.997  No           
##  9 FSR SCORE      1501 0.869 1.15e-33  0.932  -0.311  No           
## 10 IRN SCORE      1501 0.945 3.70e-23 -0.163  -1.24   No           
## 11 SUS SCORE      1501 0.989 3.07e- 9  0.0897 -0.560  No

En cumplimiento de la guía, se aplicaron distintas transformaciones con el fin de aproximar la normalidad: en primer lugar, una transformación logit adecuada para variables en el rango 0–100, y adicionalmente transformaciones de raíz cuadrada, logaritmo base 10 e inversa de la raíz cuadrada. Tras cada transformación se repitió la prueba de Shapiro–Wilk para todas las variables. Los resultados mostraron que únicamente IRN SCORE logró alcanzar un comportamiento aproximadamente normal bajo la transformación logit (p > 0.05), mientras que el resto de los indicadores continuaron rechazando la hipótesis de normalidad independientemente de la transformación empleada. Este comportamiento se corroboró mediante histogramas, gráficos QQ entre la escala original y la transformada.

logit_0_100 <- function(x, eps = 0.5) qlogis((x + eps) / (100 + 2 * eps))

df_scores_logit <- df_scores %>%
  mutate(across(everything(), logit_0_100))

# volver a probar normalidad
norm_tbl_logit <- df_scores_logit %>%
  pivot_longer(everything(), names_to = "variable", values_to = "value") %>%
  group_by(variable) %>%
  summarise(
    n = n(),
    W = shapiro.test(value)$statistic,
    p_value = shapiro.test(value)$p.value,
    .groups = "drop"
  ) %>%
  mutate(normal_a_0_05 = ifelse(p_value >= 0.05, "Sí", "No"))

print(norm_tbl_logit)
## # A tibble: 11 × 5
##    variable          n     W  p_value normal_a_0_05
##    <chr>         <int> <dbl>    <dbl> <chr>        
##  1 AR SCORE       1501 0.841 2.53e-36 No           
##  2 CPF SCORE      1501 0.941 5.96e-24 No           
##  3 EO SCORE       1501 0.932 1.52e-25 No           
##  4 ER SCORE       1501 0.891 2.54e-31 No           
##  5 FSR SCORE      1501 0.911 7.77e-29 No           
##  6 IFR SCORE      1501 0.929 3.75e-26 No           
##  7 IRN SCORE      1501 0.999 2.91e- 1 Sí           
##  8 ISD SCORE      1501 0.940 4.30e-24 No           
##  9 ISR SCORE      1501 0.944 1.68e-23 No           
## 10 Overall SCORE  1501 0.921 2.43e-27 No           
## 11 SUS SCORE      1501 0.926 1.29e-26 No
# --- tomar IRN original y transformado ---
irn_df <- tibble(
  value = c(df_scores$`IRN SCORE`,
            logit_0_100(df_scores$`IRN SCORE`)),
  estado = rep(c("Original (0–100)", "Logit (escala real)"),
               each = nrow(df_scores))
) %>% drop_na(value)

# --- 1) Histogramas + densidad (faceteado) ---
ggplot(irn_df, aes(x = value)) +
  geom_histogram(bins = 30, alpha = 0.7) +
  geom_density(adjust = 1.2, linewidth = 0.8) +
  facet_wrap(~ estado, scales = "free") +
  labs(title = "IRN SCORE: antes y después de la transformación",
       x = "Valor", y = "Frecuencia / Densidad") +
  theme_minimal()

# --- 2) QQ-plots (faceteado) ---
ggplot(irn_df, aes(sample = value)) +
  stat_qq() + stat_qq_line() +
  facet_wrap(~ estado, scales = "free") +
  labs(title = "IRN SCORE: QQ-plots (Original vs Logit)",
       x = "Cuantiles teóricos", y = "Cuantiles muestrales") +
  theme_minimal()

# --- 3) Shapiro-Wilk para citar en el informe ---
p_orig  <- shapiro.test(df_scores$`IRN SCORE`)$p.value
p_logit <- shapiro.test(logit_0_100(df_scores$`IRN SCORE`))$p.value
cat(sprintf("Shapiro IRN original p=%.4g | Shapiro IRN logit p=%.4g\n",
            p_orig, p_logit))
## Shapiro IRN original p=3.698e-23 | Shapiro IRN logit p=0.2911
# --- Transformaciones alternativas ------------------

sqrt_01   <- function(x) sqrt(x)                  # raíz cuadrada
log10_01  <- function(x) log10(x + 1)            # log base 10 (evita ceros)
inv_sqrt  <- function(x) 1 / sqrt(x + 1)         # inversa raíz (cola larga)

df_scores_sqrt <- df_scores %>%
  mutate(across(everything(), sqrt_01))

df_scores_log10 <- df_scores %>%
  mutate(across(everything(), log10_01))

df_scores_inv_sqrt <- df_scores %>%
  mutate(across(everything(), inv_sqrt))

check_norm <- function(df, nombre){
  df %>%
    pivot_longer(everything(), names_to="variable", values_to="value") %>%
    group_by(variable) %>%
    summarise(
      n=n(),
      W=shapiro.test(value)$statistic,
      p_value=shapiro.test(value)$p.value,
      metodo=nombre,
      .groups="drop"
    )
}

norm_logit <- check_norm(df_scores_logit, "logit")
norm_sqrt  <- check_norm(df_scores_sqrt, "sqrt")
norm_log10 <- check_norm(df_scores_log10, "log10")
norm_inv <- check_norm(df_scores_inv_sqrt, "inv")


norm_comparacion <- bind_rows(norm_logit, norm_sqrt, norm_log10,norm_inv)


pval_wide_symbols <- norm_comparacion %>%
  mutate(
    p_value = signif(p_value, 4),
    normal_chk = ifelse(p_value >= 0.05, "\u2714", "\u2716")  # ✓ / ✗
  ) %>%
  select(variable, metodo, p_value, normal_chk) %>%
  pivot_wider(
    names_from = metodo,
    values_from = c(p_value, normal_chk),
    names_glue = "{metodo}_{.value}"
  ) %>%
  arrange(variable)

print(pval_wide_symbols, n = Inf)
## # A tibble: 11 × 9
##    variable      logit_p_value sqrt_p_value log10_p_value inv_p_value
##    <chr>                 <dbl>        <dbl>         <dbl>       <dbl>
##  1 AR SCORE           2.53e-36     2.79e-30      2.63e-17    1.40e-16
##  2 CPF SCORE          5.96e-24     6.64e-26      1.06e-22    8.49e-32
##  3 EO SCORE           1.52e-25     4.91e-26      1.29e-20    1.42e-29
##  4 ER SCORE           2.54e-31     7.59e-27      2.88e-14    3.11e-22
##  5 FSR SCORE          7.77e-29     3.13e-23      1.34e-17    2.58e-28
##  6 IFR SCORE          3.74e-26     9.33e-28      1.10e-24    2.30e-39
##  7 IRN SCORE          2.91e- 1     3.97e-26      4.58e-35    1.13e-46
##  8 ISD SCORE          4.30e-24     1.46e-23      1.17e-21    2.89e-41
##  9 ISR SCORE          1.68e-23     3.34e-26      6.58e-23    8.23e-36
## 10 Overall SCORE      2.43e-27     2.66e-23      9.91e-14    6.48e-17
## 11 SUS SCORE          1.29e-26     2.38e-23      4.55e-43    4.32e-58
## # ℹ 4 more variables: logit_normal_chk <chr>, sqrt_normal_chk <chr>,
## #   log10_normal_chk <chr>, inv_normal_chk <chr>

En síntesis, el análisis de normalidad permitió concluir que: (i) las variables continuas del ranking QS no son normales en su forma original, (ii) la presencia de atípicos se concentra en AR SCORE, ER SCORE y Overall SCORE, pero corresponde a casos válidos que se conservan en la muestra, y (iii) aun después de aplicar diversas transformaciones estándar, sólo una variable alcanza normalidad estricta. Por esta razón, en los análisis inferenciales posteriores se optará por el uso de métodos no paramétricos o robustos a la falta de normalidad, complementando con estadísticos descriptivos basados en medianas y rangos intercuartílicos.

Prueba de hipótesis v.2

Con el propósito de evaluar la posición relativa de las universidades colombianas respecto a sus pares latinoamericanas de mayor desempeño en el ranking QS 2026, se realizó un análisis comparativo basado en pruebas de hipótesis aplicadas a los principales indicadores del ranking. En esta ocasión, el contraste se establece entre dos grupos: (i) el Top 10 de universidades colombianas, definido según el Overall Score; y (ii) el Top 10 de Brasil, Argentina, México y Chile, agrupados como un bloque de referencia latinoamericano de alto rendimiento (40 instituciones en total). Este diseño permite determinar si las diferencias observadas entre Colombia y el contexto regional más competitivo resultan estadísticamente significativas.

vars_interes <- c("AR SCORE","ER SCORE","CPF SCORE",
                  "FSR SCORE","IFR SCORE","ISR SCORE")

paises_comp <- c("Colombia", "Brazil", "Argentina", "Mexico", "Chile")

rank_clean <- rank_final %>% clean_names() %>% mutate(across(ends_with("score"), ~ suppressWarnings(as.numeric(str_replace_all(., "[,%]", ""))))) # Convertir nombres de vars_interes a minúsculas tras clean_names() 
vars_interes_clean <- vars_interes %>% tolower() %>% str_replace_all(" ", "_")
# Filtrar solo países de interés
rank_clean
## # A tibble: 1,501 × 30
##    x2026_rank previous_rank institution_name      country_territory region size 
##         <int> <chr>         <chr>                 <chr>             <chr>  <chr>
##  1          1 1             Massachusetts Instit… United States of… Ameri… M    
##  2          2 2             Imperial College Lon… United Kingdom    Europe L    
##  3          3 6             Stanford University   United States of… Ameri… L    
##  4          4 3             University of Oxford  United Kingdom    Europe L    
##  5          5 4             Harvard University    United States of… Ameri… L    
##  6          6 5             University of Cambri… United Kingdom    Europe L    
##  7          7 7             ETH Zurich (Swiss Fe… Switzerland       Europe L    
##  8          8 8             National University … Singapore         Asia   XL   
##  9          9 9             UCL (University Coll… United Kingdom    Europe XL   
## 10         10 10            California Institute… United States of… Ameri… S    
## # ℹ 1,491 more rows
## # ℹ 24 more variables: focus <chr>, research <chr>, status <chr>,
## #   ar_score <dbl>, ar_rank <chr>, er_score <dbl>, er_rank <chr>,
## #   fsr_score <dbl>, fsr_rank <chr>, cpf_score <dbl>, cpf_rank <chr>,
## #   ifr_score <dbl>, ifr_rank <chr>, isr_score <dbl>, isr_rank <chr>,
## #   isd_score <dbl>, isd_rank <chr>, irn_score <dbl>, irn_rank <chr>,
## #   eo_score <dbl>, eo_rank <chr>, sus_score <dbl>, sus_rank <chr>, …
rank_sub <- rank_clean %>%
  filter(country_territory  %in% paises_comp)

rank_final
## # A tibble: 1,501 × 30
##    `2026 Rank` `Previous Rank` `Institution Name`     `Country/Territory` Region
##          <int> <chr>           <chr>                  <chr>               <chr> 
##  1           1 1               Massachusetts Institu… United States of A… Ameri…
##  2           2 2               Imperial College Lond… United Kingdom      Europe
##  3           3 6               Stanford University    United States of A… Ameri…
##  4           4 3               University of Oxford   United Kingdom      Europe
##  5           5 4               Harvard University     United States of A… Ameri…
##  6           6 5               University of Cambrid… United Kingdom      Europe
##  7           7 7               ETH Zurich (Swiss Fed… Switzerland         Europe
##  8           8 8               National University o… Singapore           Asia  
##  9           9 9               UCL (University Colle… United Kingdom      Europe
## 10          10 10              California Institute … United States of A… Ameri…
## # ℹ 1,491 more rows
## # ℹ 25 more variables: Size <chr>, Focus <chr>, Research <chr>, Status <chr>,
## #   `AR SCORE` <dbl>, `AR RANK` <chr>, `ER SCORE` <dbl>, `ER RANK` <chr>,
## #   `FSR SCORE` <dbl>, `FSR RANK` <chr>, `CPF SCORE` <dbl>, `CPF RANK` <chr>,
## #   `IFR SCORE` <dbl>, `IFR RANK` <chr>, `ISR SCORE` <dbl>, `ISR RANK` <chr>,
## #   `ISD SCORE` <dbl>, `ISD RANK` <chr>, `IRN SCORE` <dbl>, `IRN RANK` <chr>,
## #   `EO SCORE` <dbl>, `EO RANK` <chr>, `SUS SCORE` <dbl>, `SUS RANK` <chr>, …
top10_por_pais <- rank_sub %>%
  group_by(country_territory ) %>%
  arrange(desc(overall_score)) %>%
  slice_head(n = 10) %>%   # si hay menos, toma los disponibles
  ungroup()

df <- top10_por_pais %>%
  mutate(
    grupo = if_else(country_territory == "Colombia",
                    "Top 10 Colombia", 
                    "Top 10 LatAm (BR+AR+MX+CL)")
  ) %>%
  select(institution_name, country_territory, grupo, all_of(vars_interes_clean)) %>%
  drop_na()
df
## # A tibble: 50 × 9
##    institution_name          country_territory grupo ar_score er_score cpf_score
##    <chr>                     <chr>             <chr>    <dbl>    <dbl>     <dbl>
##  1 Universidad de Buenos Ai… Argentina         Top …     98.1     95.8       2.3
##  2 Universidad Nacional de … Argentina         Top …     55.7     30.8       2.9
##  3 Pontificia Universidad C… Argentina         Top …     30.2     39.9       1.2
##  4 Universidad Austral - Ar… Argentina         Top …     29.8     48.9       2.5
##  5 Universidad de Palermo    Argentina         Top …     15.8     16         1.1
##  6 Universidad Nacional de … Argentina         Top …     39       23.3       2.3
##  7 Universidad Torcuato Di … Argentina         Top …     18.4     35.9       3.8
##  8 Universidad de Belgrano   Argentina         Top …     11.2     15.3       1  
##  9 Universidad Nacional de … Argentina         Top …     27.4     14.9       1.4
## 10 Universidad Argentina de… Argentina         Top …      6.4     17.3       1  
## # ℹ 40 more rows
## # ℹ 3 more variables: fsr_score <dbl>, ifr_score <dbl>, isr_score <dbl>
df %>% count(grupo)
## # A tibble: 2 × 2
##   grupo                          n
##   <chr>                      <int>
## 1 Top 10 Colombia               10
## 2 Top 10 LatAm (BR+AR+MX+CL)    40

Resultados

Para cada uno de los indicadores de interés (AR SCORE, ER SCORE, CPF SCORE, FSR SCORE, IFR SCORE e ISR SCORE), se empleó el test no paramétrico de Mann-Whitney rank-sum, adecuado debido a la ausencia de normalidad detectada en la mayoría de las variables del grupo latinoamericano, evaluada mediante la prueba de Shapiro–Wilk. Dado el tamaño desigual de los grupos (10 vs 40) y la heterogeneidad de las distribuciones, el uso de un enfoque no paramétrico constituye una estrategia robusta y metodológicamente apropiada.

analizar_variable <- function(var){
  
  sub <- df %>% select(grupo, valor = all_of(var))
  
  # Grupos
  A <- sub %>% filter(grupo == "Top 10 Colombia") %>% pull(valor)
  B <- sub %>% filter(grupo == "Top 10 LatAm (BR+AR+MX+CL)") %>% pull(valor)
  
  # Normalidad (solo grupo grande LatAm)
  shap <- shapiro_test(B)$p.value
  
  # Wilcoxon
  w <- wilcox.test(valor ~ grupo, data = sub, exact = FALSE, conf.int = TRUE)
  
  # Tamaño de efecto
  eff <- wilcox_effsize(sub, valor ~ grupo)
  
  # Descriptivos
  desc <- sub %>%
    group_by(grupo) %>%
    summarise(
      mediana = median(valor),
      media   = mean(valor),
      sd      = sd(valor),
      .groups = "drop"
    ) %>%
    pivot_wider(
      names_from = grupo,
      values_from = c(mediana, media, sd),
      names_glue = "{grupo}_{.value}"
    )
  
  tibble(
    variable = var,
    p_value = w$p.value,
    HL_estimate = unname(w$estimate),
    HL_low = w$conf.int[1],
    HL_high = w$conf.int[2],
    normal_latam = shap >= 0.05,
    effect_size = eff$effsize,
    magnitude = eff$magnitude,
    mediana_col = desc$`Top 10 Colombia_mediana`,
    mediana_latam = desc$`Top 10 LatAm (BR+AR+MX+CL)_mediana`,
    media_col = desc$`Top 10 Colombia_media`,
    media_latam = desc$`Top 10 LatAm (BR+AR+MX+CL)_media`
  )
}

resultados <- map_dfr(vars_interes_clean, analizar_variable)
resultados_ordenados <- arrange(resultados, p_value)
resultados_ordenados
## # A tibble: 6 × 12
##   variable p_value HL_estimate HL_low HL_high normal_latam effect_size magnitude
##   <chr>      <dbl>       <dbl>  <dbl>   <dbl> <lgl>              <dbl> <ord>    
## 1 ifr_sco…  0.0746      -4.35  -10.3    0.700 FALSE             0.254  small    
## 2 isr_sco…  0.0849      -1.70   -5.60   0.100 FALSE             0.245  small    
## 3 cpf_sco…  0.383       -1.20   -7.10   1.40  FALSE             0.125  small    
## 4 ar_score  0.560       -4.74  -18.0   12.6   FALSE             0.0840 small    
## 5 er_score  0.734        3.39   -9.80  22.7   FALSE             0.0497 small    
## 6 fsr_sco…  0.856       -0.900 -15.6   17.1   FALSE             0.0274 small    
## # ℹ 4 more variables: mediana_col <dbl>, mediana_latam <dbl>, media_col <dbl>,
## #   media_latam <dbl>
interpretaciones <- resultados %>%
  mutate(
    conclusion = case_when(
      p_value < 0.05 & effect_size > 0 ~ 
        "LatAm supera significativamente a Colombia",
      p_value < 0.05 & effect_size < 0 ~ 
        "Colombia supera significativamente al grupo LatAm",
      TRUE ~ "No hay diferencia significativa."
    )
  )

interpretaciones
## # A tibble: 6 × 13
##   variable p_value HL_estimate HL_low HL_high normal_latam effect_size magnitude
##   <chr>      <dbl>       <dbl>  <dbl>   <dbl> <lgl>              <dbl> <ord>    
## 1 ar_score  0.560       -4.74  -18.0   12.6   FALSE             0.0840 small    
## 2 er_score  0.734        3.39   -9.80  22.7   FALSE             0.0497 small    
## 3 cpf_sco…  0.383       -1.20   -7.10   1.40  FALSE             0.125  small    
## 4 fsr_sco…  0.856       -0.900 -15.6   17.1   FALSE             0.0274 small    
## 5 ifr_sco…  0.0746      -4.35  -10.3    0.700 FALSE             0.254  small    
## 6 isr_sco…  0.0849      -1.70   -5.60   0.100 FALSE             0.245  small    
## # ℹ 5 more variables: mediana_col <dbl>, mediana_latam <dbl>, media_col <dbl>,
## #   media_latam <dbl>, conclusion <chr>
ggplot(df %>% 
         pivot_longer(all_of(vars_interes_clean),
                      names_to = "variable",
                      values_to = "valor"),
       aes(x = grupo, y = valor, fill = grupo)) +
  geom_boxplot(alpha = 0.7) +
  facet_wrap(~ variable, scales = "free") +
  theme_minimal() +
  labs(title = "Top 10 Colombia vs Top 10 LatAm (BR/AR/MX/CL)",
       x = "", y = "Valor")

Los resultados estadísticos muestran un patrón consistente: aunque los gráficos comparativos evidencian diferencias visibles en varios indicadores pero a pesar de esto, las brechas evidenciadas no alcanzan significancia estadística bajo un umbral α = 0.05, por lo que no se puede afirmar que existe una diferencia estadísticamente significativa entre los conjuntos comparados. Desde una perspectiva descriptiva, los boxplots muestran que las universidades latinoamericanas del bloque de referencia tienden a presentar valores más altos en indicadores de reputación (AR y ER) y visibilidad investigativa (CPF e IFR). Particularmente, estos indicadores exhiben colas superiores más marcadas en el grupo LatAm, lo que sugiere la presencia de instituciones que actúan como outliers positivos dentro de la región, elevando el nivel competitivo del bloque. En contraste, los indicadores FSR e ISR presentan distribuciones más similares entre ambos grupos, con diferencias menos pronunciadas.

La ausencia de significancia estadística no debe interpretarse como igualdad de desempeño, sino como evidencia de que las diferencias observadas, aunque sustantivas en algunos casos, se encuentran dentro de rangos de variabilidad que impiden rechazarlas mediante pruebas inferenciales formales. En otras palabras, el Top 10 de Colombia se encuentra rezagado en varios indicadores respecto al Top 10 latinoamericano, pero la magnitud de estas brechas no es lo suficientemente consistente para establecer diferencias concluyentes bajo los criterios estadísticos tradicionales.

En términos estratégicos, los resultados muestran que el desempeño del Top 10 colombiano frente al Top 40 latinoamericano presenta fortalezas y debilidades diferenciadas. En reputación académica (AR) y entre empleadores (ER), Colombia exhibe valores centrales superiores y menor dispersión, lo que sugiere un posicionamiento estable y competitivo frente a la región. No obstante, en impacto científico (CPF) y en los indicadores de internacionalización (IFR e ISR), el bloque latinoamericano presenta medianas más altas, bigotes extendidos y múltiples valores atípicos que reflejan instituciones con desempeño sobresaliente. Estas brechas indican que Colombia requiere fortalecer la producción científica de alto impacto y expandir la captación de talento y estudiantes internacionales para mejorar su competitividad regional.

Análisis de bondad de ajuste

Prueba 1: Distribución de AR Score de Colombia y el Cono Sur.

Para comenzar, se decidió evaluar si la distribución del AR Score de las universidades colombianas es similar a la de las universidades del Cono Sur con el fin de determinar si la reputación de las universidades de Colombia tienen influencia en su ubicación en el ranking. Para ello, se agruparon los valores del AR Score en intervalos de 10 puntos, lo cual permite organizar las frecuencias de manera más clara y facilitar la comparación entre grupos. A partir de estas categorías, se planteó la siguiente hipótesis para aplicar una prueba de Chi-cuadrado con un nivel de significancia α = 0.05:

\[ \left\{ \begin{aligned} H_{0}: &\ \text{La distribución de frecuencias del AR Score es la misma entre las universidades de Colombia y las del Cono Sur.} \\ H_{1}: &\ \text{La distribución de frecuencias del AR Score difiere entre las universidades de Colombia y las del Cono Sur.} \end{aligned} \right. \]

Posteriormente, se construyó una tabla de contingencia entre los intervalos definidos y los dos grupos de universidades (Colombia vs. Cono Sur), y se aplicó la prueba de Chi-cuadrado de independencia. El resultado obtenido fue el siguiente:

colombia <- rank_clean %>%
  filter(country_territory == "Colombia") %>%
  pull(`ar_score`)

# Subconjunto Cono Sur (Brasil, Argentina, Chile)
sur <- rank_clean %>%
  filter(country_territory %in% c("Brazil", "Argentina", "Chile")) %>%
  pull(`ar_score`)

# Crear tabla de contingencia
tabla_indep <- table(
  puntuacion = cut(rank_clean$`ar_score`, breaks = seq(0, 100, 10), include.lowest = TRUE),
  pais = ifelse(rank_clean$country_territory == "Colombia", "Colombia", 
                ifelse(rank_clean$country_territory %in% c("Brazil", "Argentina", "Chile"), "Cono Sur", NA))
)

# Eliminar filas NA
tabla_indep <- tabla_indep[, !is.na(colnames(tabla_indep))]

# Prueba de independencia
chisq_indep <- chisq.test(tabla_indep)
chisq_indep
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_indep
## X-squared = 14.288, df = 9, p-value = 0.1125

Dado que el valor p obtenido fue p = 0.1125, que es mayor que el alpha 0.05, no se rechaza la hipótesis nula. Esto indica que no existe evidencia estadísticamente significativa para afirmar que la distribución del AR Score difiera entre Colombia y el Cono Sur, lo cual indica que la reputación de Colombia no cambia mucho con respecto a la de el Cono Sur, por lo que se puede decir que el aspecto de reputación no afecta en el ranking, por lo menos en relación a Latinoamérica. Sin embargo, es importante señalar que el número reducido de universidades colombianas en la base de datos puede afectar la estabilidad de esta conclusión, por lo que los resultados deben interpretarse con esto en cuenta.

Prueba 2: Distribución del AR Score de Colombia.

Ahora, para evaluar si los valores del AR Score correspondientes a las universidades colombianas pueden considerarse consistentes con una distribución Normal con el fin de ver si se puede ver qué tipo de distribución sigue el AR Score de Colombia teniendo en cuenta la cantidad de factores independientes que esta variable contiene, por esto, se planteó la siguiente hipótesis de bondad de ajuste:

\[ \left\{ \begin{aligned} H_{0}: &\ \text{El AR Score sigue una distribución Normal}(\hat{\mu}, \hat{\sigma}). \\ H_{1}: &\ \text{El AR Score no sigue una distribución Normal.} \end{aligned} \right. \]

Dado que el número de observaciones es reducido, se agruparon los puntajes en dos intervalos amplios (0–50 y 50–100) para asegurar que las frecuencias esperadas fueran suficientemente grandes y que la prueba χ² fuera válida. A partir de los datos observados se estimaron la media y la desviación estándar, y con estos parámetros se calcularon las frecuencias esperadas bajo la normalidad para cada intervalo. Luego de esto, se ejecutó la prueba de bondad de ajuste χ² obteniendo el siguiente resultado:

colombia_ar_score <- rank_clean %>%
  filter(country_territory == "Colombia") %>%
  pull(`ar_score`)

# Limpieza
colombia_ar_clean <- colombia_ar_score[!is.na(colombia_ar_score) & colombia_ar_score >= 0 & colombia_ar_score <= 100]

# Definición de los nuevos puntos de corte (solo 2 clases)
breaks_valido <- c(0, 25, 100)

# 1. Categorizar los datos de Colombia con 2 clases
colombia_counts_final <- table(
  cut(colombia_ar_clean, 
      breaks = breaks_valido, 
      include.lowest = TRUE)
)

print(colombia_counts_final)
## 
##   [0,25] (25,100] 
##        8        5
# 2. Definir las probabilidades teóricas (si sigues probando la Uniforme)
# Ahora solo hay DOS clases, por lo que la probabilidad uniforme es 1/2
p_teor_final <- rep(1/2, 2) 

# 3. Prueba Chi Cuadrado FINAL
chisq.test(colombia_counts_final, p = p_teor_final)
## 
##  Chi-squared test for given probabilities
## 
## data:  colombia_counts_final
## X-squared = 0.69231, df = 1, p-value = 0.4054

Dado que el valor p = 0.4054 es considerablemente mayor que el nivel de significancia α = 0.05, no se rechaza la hipótesis nula. Esto significa que, con los datos disponibles, no existe evidencia estadística suficiente para afirmar que los AR Scores de Colombia se desvían de lo que se esperaría bajo una distribución normal, lo que indica que no hay concentraciones atípicas, sesgos marcados o comportamientos irregulares que rompan con la forma típica de una curva normal para afirmar que sigue algún otro tipo de distribución, osea que todas las universidades de Colombia tienen un puntaje similar o uniforme. No obstante, en este caso también es importante mencionar la reducida cantidad de datos de Colombia por lo que este resultado puede no ser preciso.

Análisis de independencia

Para este análisis se evaluó si existe una relación entre el Status de las universidades (pública, privada sin ánimo de lucro, privada con ánimo de lucro) y su país de origen, considerando únicamente las universidades de Colombia y el Cono Sur. Para ello se construyó una tabla de contingencia Status y País:

cono_sur <- c("Argentina", "Chile", "Brazil")

# 2. Filtrar solo Colombia + Cono Sur
data_filtrada <- subset(rank, `Country/Territory` %in% c("Colombia", cono_sur))

# 3. Crear tabla de contingencia Status × País
tabla_status <- table(
  Status = data_filtrada$Status,
  Pais   = data_filtrada$`Country/Territory`
)

# Mostrar tabla
tabla_status
##                         Pais
## Status                   Argentina Brazil Chile Colombia
##   Private not for Profit         7      4    13        9
##   Public                        11     20     7        4

Y se aplicó la prueba Chi-cuadrado de independencia con un nivel de significancia de α = 0.05 para la hipótesis:

\[ \left\{ \begin{aligned} H_{0}: &\ \text{El Status institucional es independiente del país.} \\ H_{1}: &\ \text{El Status institucional depende del país.} \end{aligned} \right. \]

Posteriormente, se ejecutó la prueba en R y se obtuvo el siguiente resultado:

# 4. Aplicar la prueba Chi-cuadrado de independencia
resultado_chi <- chisq.test(tabla_status)

# Mostrar resultado
resultado_chi
## 
##  Pearson's Chi-squared test
## 
## data:  tabla_status
## X-squared = 14.406, df = 3, p-value = 0.002401

Como se puede ver, dado que p < 0.05, se rechaza la hipótesis nula de independencia. Esto significa que existe evidencia estadísticamente significativa para poder afirmar que el Status de las universidades depende del país al que pertenecen, es decir, la distribución de tipos de universidad no es la misma entre Colombia y los países del Cono Sur seleccionados. Esto sugiere que la estructura institucional (pública/privada) no es la misma en Colombia que con países como Argentina o Chile, y se puede ver en su tabla de frecuencia:

De esta forma, a pesar de que Chile tiene más universidades privadas sin ánimo de lucro, los tres países del Cono Sur tienen más universidades públicas, llegando hasta a tener 5 veces más, como lo es el caso de Brasil. Esto puede indicar que un factor que sí puede afectar el ranking de las universidades es el estado, y que las universidades públicas aumentan la calidad de la educación por lo menos en el contexto de Latinoamérica, aunque esto se puede ver afectado por la baja cantidad de datos por parte de Latinoamérica.