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.
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.
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.
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.
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.
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.
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"
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"
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"
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.
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
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
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'
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.
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.
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} \]
# ============================
# 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]
## Media COL-Top5 = 57.32 (n = 5 )
## 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.
# ===============================
# 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.
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.
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>, …
## # 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>
## # A tibble: 2 × 2
## grupo n
## <chr> <int>
## 1 Top 10 Colombia 10
## 2 Top 10 LatAm (BR+AR+MX+CL) 40
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.
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.
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.
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.