Nombre: Gabriel Torres   |   Curso: EyP

Datos

(i) Datos

# El archivo Excel debe estar en la carpeta principal del proyecto
DATOS2026 <- read_excel("00. DATOS202460ULTIMOS25 (1).xlsx")
DATOS2026
# Número total de estudiantes
N <- nrow(DATOS2026)

Total de estudiantes en la muestra: 74

Variable cualitativa: SEXO

(2i) Tabla de frecuencias

table_sexo <- table(DATOS2026$SEXO)
knitr::kable(table_sexo, col.names = c("Sexo", "Frecuencia"))
Sexo Frecuencia
Femenino 42
Masculino 32

(3i) Gráfico de torta para SEXO

pie(table_sexo, col = col_sexo, border = "white",
    main = "Estudio de Pastel.\n Distribución por sexos.", col.main = azul,
    labels = table_sexo)
legend("topright", legend = names(table_sexo), fill = col_sexo, bty = "n")

(4i) Diagrama de barras

barp <- barplot(table_sexo, col = col_sexo, border = NA, las = 1,
                main = "Gráfico de Barras", col.main = azul, sub = "UTB",
                xlab = "SEXO", ylab = "Conteo",
                ylim = c(0, max(table_sexo) * 1.15))
text(barp, table_sexo, labels = table_sexo, pos = 3, font = 2, col = azul)

(5i) Tabla porcentual (redondeada al entero más cercano)

table_sexo2 <- round(prop.table(table_sexo) * 100)
knitr::kable(table_sexo2, col.names = c("Sexo", "Porcentaje (%)"))
Sexo Porcentaje (%)
Femenino 57
Masculino 43

(6i) Diagrama de barras en porcentaje

barp2 <- barplot(table_sexo2, col = col_sexo, border = NA, las = 1,
                 main = "Gráfico de Barras", col.main = azul, sub = "UTB",
                 xlab = "SEXO", ylab = "Porcentaje",
                 ylim = c(0, max(table_sexo2) * 1.15))
text(barp2, table_sexo2, labels = paste0(table_sexo2, "%"), pos = 3, font = 2, col = azul)

(7i) Gráfico de torta en porcentaje

Las tablas de frecuencias y las representaciones gráficas son dos maneras equivalentes de presentar la información. Las dos exponen ordenadamente la información recogida en una muestra.

pie(table_sexo2, col = col_sexo, border = "white",
    main = "Estudio de Pastel.\n Distribución por sexos (%).", col.main = azul,
    labels = paste0(table_sexo2, "%"))
legend("topright", legend = names(table_sexo2), fill = col_sexo, bty = "n")

Variables cualitativas: SEXO, CURSO y ESTRATO

(8i) Tabla SEXO y CURSO

table_3 <- table(DATOS2026$SEXO, DATOS2026$CURSO)
knitr::kable(table_3)
ESTADISTICAI PROBABILIDAD
Femenino 16 26
Masculino 10 22

(9i) Gráfico SEXO y CURSO

barp3 <- barplot(table_3,
                 main = "Gráfico de barras CURSO vs SEXO", col.main = azul,
                 xlab = "CURSO", ylab = "Frecuencia",
                 col = col_sexo, border = NA, las = 1,
                 legend.text = rownames(table_3),
                 args.legend = list(x = "topright", bty = "n"),
                 ylim = c(0, max(table_3) * 1.2),
                 beside = TRUE) # Barras agrupadas
text(as.vector(barp3), as.vector(table_3), labels = as.vector(table_3),
     pos = 3, font = 2, col = azul)

(10i) Tabla SEXO y CURSO con frecuencias relativas aproximadas

# Porcentaje sobre el total de estudiantes (las celdas suman ~100)
table_4 <- round(prop.table(table_3) * 100)
knitr::kable(table_4)
ESTADISTICAI PROBABILIDAD
Femenino 22 35
Masculino 14 30
# Si en cambio quieres el porcentaje DENTRO de cada curso (cada columna suma 100):
# table_4 <- round(prop.table(table_3, margin = 2) * 100)

(11i) Gráfico SEXO y CURSO con frecuencias relativas aproximadas

barp4 <- barplot(table_4,
                 main = "Gráfico de barras CURSO vs SEXO en porcentajes", col.main = azul,
                 xlab = "CURSO", ylab = "Porcentaje",
                 col = col_sexo, border = NA, las = 1,
                 legend.text = rownames(table_4),
                 args.legend = list(x = "topright", bty = "n"),
                 ylim = c(0, max(table_4) * 1.2),
                 beside = TRUE) # Barras agrupadas
text(as.vector(barp4), as.vector(table_4), labels = as.vector(table_4),
     pos = 3, font = 2, col = azul)

(12i) Tabla ESTRATO y CURSO

table_5 <- table(DATOS2026$ESTRATO, DATOS2026$CURSO)
knitr::kable(table_5)
ESTADISTICAI PROBABILIDAD
I 5 10
II 7 18
III 9 9
IV 5 5
V 0 5

(13i) Gráfico ESTRATO y CURSO

barp5 <- barplot(table_5,
                 main = "Gráfico de barras CURSO vs ESTRATO", col.main = azul,
                 xlab = "CURSO", ylab = "Frecuencia",
                 col = pal_n(nrow(table_5)), border = NA, las = 1,
                 legend.text = rownames(table_5),
                 args.legend = list(x = "topright", title = "ESTRATO", bty = "n"),
                 ylim = c(0, max(table_5) * 1.2),
                 beside = TRUE) # Barras agrupadas
text(as.vector(barp5), as.vector(table_5), labels = as.vector(table_5),
     pos = 3, font = 2, col = azul)

(14i) Tabla ESTRATO y SEXO

table_6 <- table(DATOS2026$ESTRATO, DATOS2026$SEXO)
knitr::kable(table_6)
Femenino Masculino
I 8 7
II 17 8
III 10 8
IV 4 6
V 3 2

(15i) Gráfico ESTRATO y SEXO

barp6 <- barplot(table_6,
                 main = "Gráfico de barras SEXO vs ESTRATO", col.main = azul,
                 xlab = "SEXO", ylab = "Frecuencia",
                 col = pal_n(nrow(table_6)), border = NA, las = 1,
                 legend.text = rownames(table_6),
                 args.legend = list(x = "topright", title = "ESTRATO", bty = "n"),
                 ylim = c(0, max(table_6) * 1.2),
                 beside = TRUE) # Barras agrupadas
text(as.vector(barp6), as.vector(table_6), labels = as.vector(table_6),
     pos = 3, font = 2, col = azul)

Variable cuantitativa: EDAD

(16i) Tabla de frecuencias con el paquete summarytools

Con este paquete obtenemos una tabla más completa.

tabla_8 <- freq(DATOS2026$EDAD)
tabla_8

Frequencies

DATOS2026$EDAD

Type: Numeric

  Freq % Valid % Valid Cum. % Total % Total Cum.
17 7 9.46 9.46 9.46 9.46
18 32 43.24 52.70 43.24 52.70
19 21 28.38 81.08 28.38 81.08
20 7 9.46 90.54 9.46 90.54
21 4 5.41 95.95 5.41 95.95
22 3 4.05 100.00 4.05 100.00
<NA> 0 0.00 100.00
Total 74 100.00 100.00 100.00 100.00

(17i) Las seis medidas representativas de EDAD

summary(DATOS2026$EDAD)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##    17.0    18.0    18.0    18.7    19.0    22.0

(18i) Diagrama de caja de EDAD

boxplot(DATOS2026$EDAD, horizontal = TRUE, col = verde, border = azul,
        main = "Diagrama de caja de EDAD", col.main = azul, xlab = "EDAD")

(19i) Identificamos dónde queda la mediana

x <- DATOS2026$EDAD
boxplot(x, notch = TRUE, horizontal = TRUE, col = verde, border = azul,
        main = "Diagrama de caja de EDAD (con muesca en la mediana)", col.main = azul,
        xlab = "EDAD")

(20i) EDAD vs SEXO

x <- DATOS2026$EDAD
y <- DATOS2026$SEXO
boxplot(x ~ y, horizontal = TRUE, col = col_sexo, border = azul, las = 1,
        main = "EDAD vs SEXO", col.main = azul, xlab = "EDAD", ylab = "SEXO")

(21i) EDAD vs ESTRATO

x <- DATOS2026$EDAD
z <- DATOS2026$ESTRATO
boxplot(x ~ z, horizontal = TRUE, col = pal_n(length(unique(z))), border = azul, las = 1,
        main = "EDAD vs ESTRATO", col.main = azul, xlab = "EDAD", ylab = "ESTRATO")

(22i) EDAD vs ESTRATO vs SEXO

# factor(ESTRATO) es necesario para que el eje X sea discreto y se agrupe por sexo
ggplot(data = DATOS2026, mapping = aes(y = EDAD, x = factor(ESTRATO), fill = SEXO)) +
  geom_boxplot(color = azul, alpha = 0.9) +
  scale_fill_manual(values = col_sexo) +
  scale_y_continuous(name = "EDAD") +
  scale_x_discrete(name = "ESTRATO") +
  labs(title = "EDAD vs ESTRATO vs SEXO") +
  theme_minimal(base_size = 13) +
  theme(plot.title = element_text(face = "bold", color = azul),
        legend.position = "bottom")

Variable cuantitativa: ESTATURA

(23i) Las seis medidas representativas de ESTATURA

summary(DATOS2026$ESTATURA)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   153.0   163.0   168.0   168.4   174.0   192.0

(24i) Diagrama de caja de ESTATURA

boxplot(DATOS2026$ESTATURA, horizontal = TRUE, col = naranja, border = azul,
        main = "Diagrama de caja de ESTATURA", col.main = azul, xlab = "ESTATURA")

(25i) Identificamos dónde queda la mediana

x <- DATOS2026$ESTATURA
boxplot(x, notch = TRUE, horizontal = TRUE, col = naranja, border = azul,
        main = "Diagrama de caja de ESTATURA (con muesca en la mediana)", col.main = azul,
        xlab = "ESTATURA")

(26i) ESTATURA vs SEXO

x <- DATOS2026$ESTATURA
y <- DATOS2026$SEXO
boxplot(x ~ y, horizontal = TRUE, col = col_sexo, border = azul, las = 1,
        main = "ESTATURA vs SEXO", col.main = azul, xlab = "ESTATURA", ylab = "SEXO")

(27i) ESTATURA vs ESTRATO

x <- DATOS2026$ESTATURA
z <- DATOS2026$ESTRATO
boxplot(x ~ z, horizontal = TRUE, col = pal_n(length(unique(z))), border = azul, las = 1,
        main = "ESTATURA vs ESTRATO", col.main = azul, xlab = "ESTATURA", ylab = "ESTRATO")

(28i) ESTATURA vs ESTRATO vs SEXO

ggplot(data = DATOS2026, mapping = aes(y = ESTATURA, x = factor(ESTRATO), fill = SEXO)) +
  geom_boxplot(color = azul, alpha = 0.9) +
  scale_fill_manual(values = col_sexo) +
  scale_y_continuous(name = "ESTATURA") +
  scale_x_discrete(name = "ESTRATO") +
  labs(title = "ESTATURA vs ESTRATO vs SEXO") +
  theme_minimal(base_size = 13) +
  theme(plot.title = element_text(face = "bold", color = azul),
        legend.position = "bottom")

Histograma, polígonos y ojivas

(29i) Histograma usando la Regla de Sturges

Usando la librería “agricolae”.

h2 <- graph.freq(DATOS2026$EDAD, col = verde)

(30i) Tabla de frecuencias agrupadas (Regla de Sturges)

Usando la librería “agricolae”.

summary(h2)

(31i) Polígono de frecuencias absolutas

frequency: counts (1) y relative (2)

plot(h2, col = verde, frequency = 1)
polygon.freq(h2, col = coral, frequency = 1, lwd = 2)

(32i) Polígono de frecuencias relativas

frequency: counts (1) y relative (2)

plot(h2, col = verde, frequency = 2)
polygon.freq(h2, col = coral, frequency = 2, lwd = 2)

(33i) Ojivas usando R

fr_por_clase2 <- h2$counts
fr_por_clase2
## [1]  7 32 21  0  7  4  0  3
total_n2 <- sum(h2$counts)
total_n2
## [1] 74
fr_relativos2 <- fr_por_clase2 / total_n2
fr_porcentuales2 <- 100 * fr_relativos2
fr_porcentuales2
## [1]  9.459459 43.243243 28.378378  0.000000  9.459459  5.405405  0.000000
## [8]  4.054054
cumsum(fr_por_clase2)
## [1]  7 39 60 60 67 71 71 74
cumsum(fr_relativos2)
## [1] 0.09459459 0.52702703 0.81081081 0.81081081 0.90540541 0.95945946 0.95945946
## [8] 1.00000000
cumsum(fr_porcentuales2)
## [1]   9.459459  52.702703  81.081081  81.081081  90.540541  95.945946  95.945946
## [8] 100.000000

(34i) Ojiva de frecuencias porcentuales

p4 <- cumsum(fr_porcentuales2)
plot(p4, type = "b", pch = 19, lwd = 2, col = coral, las = 1,
     main = "Ojiva - frecuencias porcentuales acumuladas", col.main = azul,
     xlab = "Clase", ylab = "Porcentaje acumulado (%)")
grid(col = "grey85")

FIN DEL LABORATORIO 7