Municipio de Pilar

Secretaría de Seguridad

Curso Básico de Formación – Guardia Urbana de Pilar

Análisis del rendimiento académico del tramo común

Informe elaborado por Eduardo Árnica
Analista de Datos – Coordinación de Evaluación y Enseñanza

Versión demostrativa · Datos simulados


1. Introducción

El presente informe tiene como finalidad analizar, con fines demostrativos, el rendimiento académico de 20 cursantes pertenecientes al Curso Básico de Formación de la Guardia Urbana de Pilar.

El tramo común está compuesto por las siguientes ocho materias:

  1. Ética Profesional.
  2. Normas Legales.
  3. Seguridad en el Trabajo.
  4. Organización Municipal.
  5. Comunicaciones.
  6. Primeros Auxilios.
  7. Nociones Básicas de Tránsito.
  8. Geografía Municipal.

Los datos utilizados son completamente simulados y no corresponden a cursantes reales.


2. Objetivos del análisis

El análisis busca responder principalmente las siguientes preguntas:

  • ¿Cuál es el rendimiento general de los cursantes?
  • ¿En qué materias se observan los mejores resultados?
  • ¿En qué materias aparecen mayores dificultades?
  • ¿Existen diferencias estadísticamente significativas entre las calificaciones obtenidas en las ocho materias?
  • ¿Qué cursantes presentan los promedios generales más altos?
  • ¿Cuál es el porcentaje de aprobación general?

3. Generación del dataset simulado

Se generan 20 cursantes ficticios, cada uno con una calificación en las ocho materias.

library(dplyr)
library(tidyr)
library(ggplot2)
library(knitr)

n_cursantes <- 20

cursantes <- paste0("Cursante ", sprintf("%02d", 1:n_cursantes))

materias <- c(
  "Ética Profesional",
  "Normas Legales",
  "Seguridad en el Trabajo",
  "Organización Municipal",
  "Comunicaciones",
  "Primeros Auxilios",
  "Nociones Básicas de Tránsito",
  "Geografía Municipal"
)

medias_materias <- c(8.1, 7.2, 8.0, 7.6, 7.8, 8.3, 7.0, 7.5)

habilidad <- rnorm(n_cursantes, mean = 0, sd = 0.7)

datos <- expand.grid(
  Cursante = cursantes,
  Materia = materias,
  stringsAsFactors = FALSE
)

datos <- datos |>
  mutate(
    id_cursante = match(Cursante, cursantes),
    id_materia = match(Materia, materias),
    Nota = medias_materias[id_materia] +
      habilidad[id_cursante] +
      rnorm(n(), mean = 0, sd = 0.65),
    Nota = pmin(10, pmax(1, round(Nota, 1)))
  )

datos$Materia <- factor(datos$Materia, levels = materias)

head(datos)
##      Cursante           Materia id_cursante id_materia Nota
## 1 Cursante 01 Ética Profesional           1          1  8.3
## 2 Cursante 02 Ética Profesional           2          1  7.2
## 3 Cursante 03 Ética Profesional           3          1  7.3
## 4 Cursante 04 Ética Profesional           4          1  9.0
## 5 Cursante 05 Ética Profesional           5          1  7.7
## 6 Cursante 06 Ética Profesional           6          1  7.6

4. Estadística descriptiva general

media_general <- mean(datos$Nota)
desvio_general <- sd(datos$Nota)
mediana_general <- median(datos$Nota)

cat("Promedio general:", round(media_general, 2), "\n")
## Promedio general: 7.43
cat("Mediana:", round(mediana_general, 2), "\n")
## Mediana: 7.4
cat("Desvío estándar:", round(desvio_general, 2))
## Desvío estándar: 1.01

El promedio general de las evaluaciones fue de 7.43 puntos, sobre una escala de 1 a 10.


5. Rendimiento por materia

resumen_materias <- datos |>
  group_by(Materia) |>
  summarise(
    Cursantes = n(),
    Promedio = mean(Nota),
    Mediana = median(Nota),
    DE = sd(Nota),
    Minimo = min(Nota),
    Maximo = max(Nota),
    .groups = "drop"
  ) |>
  mutate(across(where(is.numeric), ~ round(.x, 2)))

kable(
  resumen_materias,
  caption = "Tabla 1. Rendimiento académico por materia"
)
Tabla 1. Rendimiento académico por materia
Materia Cursantes Promedio Mediana DE Minimo Maximo
Ética Profesional 20 8.03 7.85 0.78 6.4 9.8
Normas Legales 20 6.75 6.75 0.65 5.0 8.0
Seguridad en el Trabajo 20 7.72 7.80 0.95 6.1 9.8
Organización Municipal 20 7.21 7.15 1.01 4.6 8.8
Comunicaciones 20 7.43 7.50 0.94 5.6 9.0
Primeros Auxilios 20 8.30 8.50 0.90 6.7 9.9
Nociones Básicas de Tránsito 20 6.81 6.80 0.89 4.6 8.7
Geografía Municipal 20 7.17 7.00 0.86 5.6 8.8

Nota. Los valores corresponden a datos simulados de 20 cursantes evaluados en ocho materias.


6. Promedio por materia

Figura 1
Promedio de calificaciones por materia

ggplot(
  resumen_materias,
  aes(x = reorder(Materia, Promedio), y = Promedio)
) +
  geom_col(width = 0.65) +
  geom_hline(yintercept = 6, linetype = "dashed") +
  geom_text(aes(label = round(Promedio, 1)), hjust = -0.3, size = 4) +
  coord_flip() +
  scale_y_continuous(limits = c(0, 10), breaks = 0:10) +
  labs(x = NULL, y = "Nota promedio") +
  theme_minimal(base_size = 13)

Nota. La línea punteada representa la calificación mínima de aprobación (6 puntos).


7. Distribución de calificaciones

Figura 2
Distribución de las calificaciones por materia

ggplot(
  datos,
  aes(x = Materia, y = Nota)
) +
  geom_boxplot() +
  geom_jitter(width = 0.12, alpha = 0.45) +
  coord_flip() +
  labs(x = NULL, y = "Nota") +
  theme_minimal(base_size = 13)

Nota. Cada punto representa una calificación individual simulada.


8. Rendimiento por cursante

resumen_cursantes <- datos |>
  group_by(Cursante) |>
  summarise(
    Promedio = mean(Nota),
    Nota_minima = min(Nota),
    Nota_maxima = max(Nota),
    .groups = "drop"
  ) |>
  mutate(Promedio = round(Promedio, 2)) |>
  arrange(desc(Promedio)) |>
  mutate(Posicion = row_number())

kable(
  resumen_cursantes,
  caption = "Tabla 2. Promedio general de los cursantes"
)
Tabla 2. Promedio general de los cursantes
Cursante Promedio Nota_minima Nota_maxima Posicion
Cursante 16 8.69 8.0 9.8 1
Cursante 01 8.24 6.8 9.9 2
Cursante 20 8.07 7.0 9.0 3
Cursante 17 7.82 6.7 9.8 4
Cursante 18 7.82 6.7 8.8 5
Cursante 09 7.79 7.1 8.7 6
Cursante 13 7.66 6.4 8.7 7
Cursante 14 7.64 7.0 8.2 8
Cursante 10 7.59 5.7 8.9 9
Cursante 04 7.55 6.1 9.0 10
Cursante 03 7.44 6.5 8.5 11
Cursante 19 7.44 6.3 8.7 12
Cursante 12 7.38 6.5 9.5 13
Cursante 02 7.18 6.2 8.9 14
Cursante 07 7.12 6.3 8.7 15
Cursante 08 7.09 6.2 8.0 16
Cursante 05 7.03 6.2 8.0 17
Cursante 11 7.01 6.0 8.1 18
Cursante 06 6.24 4.6 7.6 19
Cursante 15 5.79 4.6 6.8 20

Nota. El orden se establece de mayor a menor promedio general.


9. Ranking general

Figura 3
Promedio general por cursante

ggplot(
  resumen_cursantes,
  aes(x = reorder(Cursante, Promedio), y = Promedio)
) +
  geom_col() +
  geom_text(aes(label = Promedio), hjust = -0.2, size = 3.5) +
  geom_hline(yintercept = 6, linetype = "dashed") +
  coord_flip() +
  scale_y_continuous(limits = c(0, 10)) +
  labs(x = NULL, y = "Promedio") +
  theme_minimal(base_size = 13)

Nota. La línea punteada representa la calificación mínima de aprobación (6 puntos).


10. Resultado general de las evaluaciones por materia

Para esta demostración se considera aprobada una materia con una calificación igual o superior a 6 puntos.

datos <- datos |>
  mutate(
    Estado = ifelse(Nota >= 6, "Aprobado", "Desaprobado")
  )

aprobacion <- datos |>
  count(Estado) |>
  mutate(
    Porcentaje = round(n / sum(n) * 100, 1)
  )

kable(
  aprobacion,
  caption = "Tabla 3. Resultado general de las evaluaciones por materia"
)
Tabla 3. Resultado general de las evaluaciones por materia
Estado n Porcentaje
Aprobado 152 95
Desaprobado 8 5

Nota. Se analizaron 160 calificaciones correspondientes a 20 cursantes evaluados en 8 materias.


11. Porcentaje de aprobación por materia

aprobacion_materia <- datos |>
  group_by(Materia) |>
  summarise(
    Aprobados = sum(Nota >= 6),
    Total = n(),
    Porcentaje_aprobacion = Aprobados / Total * 100,
    .groups = "drop"
  )

kable(
  aprobacion_materia,
  digits = 1,
  caption = "Tabla 4. Porcentaje de aprobación por materia"
)
Tabla 4. Porcentaje de aprobación por materia
Materia Aprobados Total Porcentaje_aprobacion
Ética Profesional 20 20 100
Normas Legales 19 20 95
Seguridad en el Trabajo 20 20 100
Organización Municipal 19 20 95
Comunicaciones 19 20 95
Primeros Auxilios 20 20 100
Nociones Básicas de Tránsito 17 20 85
Geografía Municipal 18 20 90

Figura 4
Porcentaje de aprobación por materia

ggplot(
  aprobacion_materia,
  aes(
    x = reorder(Materia, Porcentaje_aprobacion),
    y = Porcentaje_aprobacion
  )
) +
  geom_col() +
  geom_text(
    aes(label = paste0(round(Porcentaje_aprobacion, 1), "%")),
    hjust = -0.15
  ) +
  coord_flip() +
  scale_y_continuous(limits = c(0, 105)) +
  labs(x = NULL, y = "Porcentaje de aprobación") +
  theme_minimal(base_size = 13)

Nota. El porcentaje se calcula sobre los 20 cursantes de cada materia.


12. Comparación estadística entre materias

Hipótesis

Debido a que los mismos cursantes realizan todas las materias, las observaciones no son independientes.

Por ese motivo se utiliza un ANOVA de medidas repetidas.

H₀: las calificaciones medias son iguales entre las ocho materias.

H₁: al menos una materia presenta una media diferente.

ANOVA de medidas repetidas

modelo_anova <- aov(
  Nota ~ Materia + Error(Cursante / Materia),
  data = datos
)

summary(modelo_anova)
## 
## Error: Cursante
##           Df Sum Sq Mean Sq F value Pr(>F)
## Residuals 19   63.7   3.353               
## 
## Error: Cursante:Materia
##            Df Sum Sq Mean Sq F value   Pr(>F)    
## Materia     7  43.33   6.191   15.24 1.58e-14 ***
## Residuals 133  54.04   0.406                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Nota. El ANOVA de medidas repetidas mostró diferencias estadísticamente significativas en las calificaciones según la materia, F(7, 133) = 15,24; p < 0,001.


13. Comparaciones entre materias

Para identificar entre qué materias se presentan las diferencias detectadas por el ANOVA, se realizaron comparaciones pareadas con corrección de Holm. A continuación, se presentan únicamente aquellas con diferencias estadísticamente significativas (p < 0,05).

Tabla 5. Comparaciones con diferencias estadísticamente significativas
Materia 1 Materia 2 p-valor ajustado
Normas Legales Ética Profesional < 0,001
Primeros Auxilios Normas Legales < 0,001
Nociones Básicas de Tránsito Primeros Auxilios < 0,001
Geografía Municipal Primeros Auxilios < 0,001
Nociones Básicas de Tránsito Ética Profesional < 0,001
Primeros Auxilios Organización Municipal < 0,001
Geografía Municipal Ética Profesional 0,002
Nociones Básicas de Tránsito Seguridad en el Trabajo 0,005
Organización Municipal Ética Profesional 0,006
Seguridad en el Trabajo Normas Legales 0,007
Primeros Auxilios Comunicaciones 0,022
Nociones Básicas de Tránsito Comunicaciones 0,043

Nota. Se presentan únicamente las comparaciones con p-valor ajustado menor a 0,05.

Interpretación. El ANOVA indicó que existen diferencias de rendimiento entre las materias. Las comparaciones posteriores permiten precisar entre qué materias se encuentran esas diferencias. La tabla presenta únicamente los pares con diferencias estadísticamente significativas. Para determinar cuál materia presenta un rendimiento superior, estos resultados deben interpretarse junto con los promedios obtenidos.


14. Materia con mayor rendimiento

mejor_materia <- resumen_materias |>
  arrange(desc(Promedio)) |>
  slice(1)

peor_materia <- resumen_materias |>
  arrange(Promedio) |>
  slice(1)

La materia con mayor promedio fue Primeros Auxilios, con una media de 8.3 puntos.

La materia con menor promedio fue Normas Legales, con una media de 6.75 puntos.


15. Cursantes con mejor rendimiento

top5 <- resumen_cursantes |>
  slice_head(n = 5) |>
  select(
    Posicion,
    Cursante,
    Promedio
  )

kable(
  top5,
  caption = "Tabla 6. Cinco mejores promedios generales"
)
Tabla 6. Cinco mejores promedios generales
Posicion Cursante Promedio
1 Cursante 16 8.69
2 Cursante 01 8.24
3 Cursante 20 8.07
4 Cursante 17 7.82
5 Cursante 18 7.82

Nota. El ranking corresponde exclusivamente a los datos simulados de esta versión demostrativa.


16. Conclusiones

El análisis permitió obtener una visión general del rendimiento de los 20 cursantes en las ocho materias que conforman el tramo común del Curso Básico de Formación.

El promedio general de las evaluaciones fue de 7.43 puntos.

La materia que presentó el mejor rendimiento promedio fue Primeros Auxilios, mientras que Normas Legales presentó el promedio más bajo.

El ANOVA de medidas repetidas permite determinar si las diferencias observadas entre materias son estadísticamente significativas, considerando que cada cursante fue evaluado en las ocho asignaturas.

Asimismo, el análisis de los porcentajes de aprobación permite identificar materias en las que podría resultar conveniente profundizar acciones de acompañamiento, seguimiento o refuerzo académico.


17. Consideraciones metodológicas

Los resultados contenidos en este informe corresponden exclusivamente a datos simulados.

Por lo tanto:

  • no corresponden a cursantes reales;
  • no deben utilizarse para decisiones académicas o administrativas;
  • tienen únicamente una finalidad demostrativa;
  • la estructura puede posteriormente adaptarse a datos reales del curso.

18. Referencias

R Core Team. (2026). R: A language and environment for statistical computing. R Foundation for Statistical Computing.

Wickham, H. (2016). ggplot2: Elegant graphics for data analysis. Springer.


Municipio de Pilar
Secretaría de Seguridad

Eduardo Árnica
Analista de Datos – Coordinación de Evaluación y Enseñanza

Informe de rendimiento académico · Cohorte 2026

Versión demostrativa · Datos simulados