1 MI CURSO DE ESTADÍSTICA Y PROBABILIDAD - 2026

1.1 SEMANA 7. Mi página Web en Estadística

1.1.1 Clase N° 28. AQUÍ COMIENZA EL LABORATORIO 7

1.1.2 (1i) Datos

DATOS2026 <- read_excel("00. DATOS202460ULTIMOS25 (1).xlsx")
head(DATOS2026)
## # A tibble: 6 × 16
##   CURSO     ASISTENCIA2 ASISTENCIA1 `PARCIAL 1` `PARCIAL 2`   NRC PROGRAMA  EDAD
##   <chr>           <dbl>       <dbl> <chr>       <chr>       <dbl> <chr>    <dbl>
## 1 PROBABIL…         100          90 3.6         4.3          2314 F_NEGOC…    20
## 2 ESTADIST…          70          75 0.9         2.5          1136 DERECHO     18
## 3 PROBABIL…          85          95 3.9         3.8          2314 F_NEGOC…    19
## 4 PROBABIL…           5           5 2.9         0.5          2314 MECANICA    18
## 5 ESTADIST…          20          70 3.7         0.55         1009 PSICOLO…    19
## 6 ESTADIST…         100         100 0.9         2.95         2313 PSICOLO…    20
## # ℹ 8 more variables: PESO <dbl>, ESTATURA <dbl>, SEXO <chr>,
## #   ESTADO_CIVIL <chr>, ESTRATO <chr>, URBANO <chr>, TRANSPORTE <chr>,
## #   GR_SANGUINEO <chr>

1.1.3 (2i) Usando la aplicación para hacer la tabla

table_sexo <- table(DATOS2026$SEXO)
table_sexo
## 
##  Femenino Masculino 
##        42        32

1.1.4 (3i) Gráfico de torta para SEXO

pie(table_sexo, 
    col = c("pink", "lightblue"), 
    main = "Estudio de Pastel.\nDistribución por sexo.", 
    labels = paste(names(table_sexo), "\n", table_sexo))


1.1.5 (4i) Construimos el diagrama de barras para SEXO

barp <- barplot(table_sexo, 
                col = rainbow(2), 
                border = "darkred", 
                main = "Gráfico de Barras por SEXO", 
                sub = "UTB", 
                xlab = "SEXO", 
                ylab = "Conteo", 
                ylim = c(0, max(table_sexo) + 10))
text(barp, table_sexo + 2, labels = table_sexo)


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

table_sexo2 <- round(table(DATOS2026$SEXO) / nrow(DATOS2026) * 100)
table_sexo2
## 
##  Femenino Masculino 
##        57        43

1.1.7 (6i) Diagrama de barras % para SEXO

barp2 <- barplot(table_sexo2, 
                 col = rainbow(2), 
                 border = "darkred", 
                 main = "Gráfico de Barras Porcentual", 
                 sub = "UTB", 
                 xlab = "SEXO", 
                 ylab = "Porcentaje (%)", 
                 ylim = c(0, max(table_sexo2) + 10))
text(barp2, table_sexo2 + 3, labels = paste0(table_sexo2, "%"))


1.1.8 (7i) Representación en gráfico de pastel con porcentajes

pie(table_sexo2, 
    col = c("pink", "lightblue"), 
    main = "Estudio de Pastel.\nDistribución Porcentual por Sexo.", 
    labels = paste(names(table_sexo2), "\n", table_sexo2, "%"))


1.1.9 (8i) Tabla con dos variables: SEXO y CURSO

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

1.1.10 (9i) Gráfico de barras agrupadas: SEXO y CURSO

barp3 <- barplot(table_3, 
                 main = "Gráfico de barras CURSO vs SEXO", 
                 xlab = "CURSO", 
                 ylab = "Frecuencia", 
                 col = c("pink", "lightblue"), 
                 legend.text = rownames(table_3), 
                 beside = TRUE, 
                 ylim = c(0, max(table_3) + 5))
text(barp3, table_3 + 1, labels = table_3)


1.1.11 (10i) Tabla bivariada SEXO y CURSO con frecuencias relativas porcentuales

table_4 <- round(table(DATOS2026$SEXO, DATOS2026$CURSO) / nrow(DATOS2026) * 100)
table_4
##            
##             ESTADISTICAI PROBABILIDAD
##   Femenino            22           35
##   Masculino           14           30

1.1.12 (11i) Gráfico de barras bivariado porcentual: CURSO vs SEXO

barp4 <- barplot(table_4, 
                 main = "Gráfico de barras CURSO vs SEXO en porcentajes", 
                 xlab = "CURSO", 
                 ylab = "Porcentaje (%)", 
                 col = c("pink", "lightblue"), 
                 legend.text = rownames(table_4), 
                 beside = TRUE, 
                 ylim = c(0, max(table_4) + 5))
text(barp4, table_4 + 1, labels = paste0(table_4, "%"))


1.1.13 (12i) Tabla bivariada de frecuencias absolutas: CURSO vs ESTRATO

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

1.1.14 (13i) Gráfico de barras agrupadas: CURSO vs ESTRATO

barp5 <- barplot(table_5, 
                 main = "Gráfico de barras CURSO vs ESTRATO", 
                 xlab = "CURSO", 
                 ylab = "Frecuencia", 
                 col = rainbow(nrow(table_5)), 
                 legend.text = rownames(table_5), 
                 beside = TRUE, 
                 ylim = c(0, max(table_5) + 3))
text(barp5, table_5 + 0.5, labels = table_5)


1.1.15 (14i) Tabla bivariada de frecuencias absolutas: ESTRATO vs SEXO

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

1.1.16 (15i) Gráfico de barras agrupadas: ESTRATO vs SEXO

barp6 <- barplot(table_6, 
                 main = "Gráfico de barras ESTRATO vs SEXO", 
                 xlab = "SEXO", 
                 ylab = "Frecuencia", 
                 col = rainbow(nrow(table_6)), 
                 legend.text = rownames(table_6), 
                 beside = TRUE, 
                 ylim = c(0, max(table_6) + 3))
text(barp6, table_6 + 0.5, labels = table_6)


1.1.17 (16i) Resumen estadístico numérico básico para la variable EDAD

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

1.1.18 (17i) Estadísticas descriptivas de la EDAD por SEXO

by(DATOS2026$EDAD, DATOS2026$SEXO, summary)
## DATOS2026$SEXO: Femenino
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   17.00   18.00   18.50   18.74   19.00   22.00 
## ------------------------------------------------------------ 
## DATOS2026$SEXO: Masculino
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   17.00   18.00   18.00   18.66   19.00   22.00

1.1.19 **(18i) Estadísticas descriptivas completas usando summarytools**

descr(DATOS2026$EDAD, stats = "common")
## Descriptive Statistics  
## DATOS2026$EDAD  
## N: 74  
## 
##                     EDAD
## --------------- --------
##            Mean    18.70
##         Std.Dev     1.19
##             Min    17.00
##          Median    18.00
##             Max    22.00
##         N.Valid    74.00
##               N    74.00
##       Pct.Valid   100.00

1.1.20 (19i) Diagrama de caja simple (Boxplot) para EDAD

boxplot(DATOS2026$EDAD, 
        main = "Diagrama de Caja para EDAD", 
        ylab = "Años", 
        col = "lightgreen", 
        border = "darkgreen")


1.1.21 (20i) Diagrama de caja comparativo: EDAD por SEXO

boxplot(EDAD ~ SEXO, data = DATOS2026, 
        main = "Distribución de EDAD según SEXO", 
        xlab = "SEXO", 
        ylab = "EDAD (años)", 
        col = c("pink", "lightblue"))


1.1.22 (21i) Diagrama de caja comparativo: EDAD por ESTRATO

boxplot(EDAD ~ ESTRATO, data = DATOS2026, 
        main = "Distribución de EDAD según ESTRATO", 
        xlab = "ESTRATO", 
        ylab = "EDAD (años)", 
        col = terrain.colors(6))


1.1.23 (22i) Diagrama de caja múltiple: EDAD vs ESTRATO por SEXO (ggplot2)

ggplot(data = DATOS2026, mapping = aes(y = EDAD, x = as.factor(ESTRATO), fill = SEXO)) +
  geom_boxplot() +
  scale_y_continuous(name = "EDAD (años)") +
  scale_x_discrete(name = "ESTRATO") +
  labs(title = "Distribución de EDAD por ESTRATO y SEXO") +
  theme_minimal()


1.1.24 (23i) Resumen estadístico numérico básico para ESTATURA

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

1.1.25 (24i) Estadísticas descriptivas de ESTATURA por SEXO

by(DATOS2026$ESTATURA, DATOS2026$SEXO, summary)
## DATOS2026$SEXO: Femenino
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   153.0   160.0   164.0   164.1   168.0   177.0 
## ------------------------------------------------------------ 
## DATOS2026$SEXO: Masculino
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   157.0   170.0   174.0   174.0   179.2   192.0

1.1.26 (25i) Diagrama de caja simple para ESTATURA

boxplot(DATOS2026$ESTATURA, 
        main = "Diagrama de Caja para ESTATURA", 
        ylab = "Estatura (cm)", 
        col = "khaki", 
        border = "darkgoldenrod")


1.1.27 (26i) Diagrama de caja comparativo: ESTATURA por SEXO

boxplot(ESTATURA ~ SEXO, data = DATOS2026, 
        main = "Distribución de ESTATURA según SEXO", 
        xlab = "SEXO", 
        ylab = "Estatura (cm)", 
        col = c("pink", "lightblue"))


1.1.28 (27i) Diagrama de caja comparativo: ESTATURA por ESTRATO

boxplot(ESTATURA ~ ESTRATO, data = DATOS2026, 
        main = "Distribución de ESTATURA según ESTRATO", 
        xlab = "ESTRATO", 
        ylab = "Estatura (cm)", 
        col = heat.colors(6))


1.1.29 (28i) Diagrama de caja múltiple: ESTATURA vs ESTRATO por SEXO

ggplot(data = DATOS2026, mapping = aes(y = ESTATURA, x = as.factor(ESTRATO), fill = SEXO)) +
  geom_boxplot() +
  scale_y_continuous(name = "ESTATURA (cm)") +
  scale_x_discrete(name = "ESTRATO") +
  labs(title = "Distribución de ESTATURA por ESTRATO y SEXO") +
  theme_minimal()


1.1.30 (29i) Construcción de Tabla de Frecuencias Agrupadas para EDAD

tabla_edad <- fdt(DATOS2026$EDAD)
tabla_edad
##     Class limits  f   rf rf(%) cf  cf(%)
##   [16.83,17.504)  7 0.09  9.46  7   9.46
##  [17.504,18.177) 32 0.43 43.24 39  52.70
##  [18.177,18.851)  0 0.00  0.00 39  52.70
##  [18.851,19.525) 21 0.28 28.38 60  81.08
##  [19.525,20.199)  7 0.09  9.46 67  90.54
##  [20.199,20.872)  0 0.00  0.00 67  90.54
##  [20.872,21.546)  4 0.05  5.41 71  95.95
##   [21.546,22.22)  3 0.04  4.05 74 100.00

1.1.31 (30i) Histogramas de frecuencias absolutas y relativas para EDAD

par(mfrow = c(1, 2))
plot(tabla_edad, type = "fh", col = "skyblue", main = "Frecuencia Absoluta", xlab = "EDAD", ylab = "Frecuencia")
plot(tabla_edad, type = "rfh", col = "salmon", main = "Frecuencia Relativa (%)", xlab = "EDAD", ylab = "Porcentaje")

par(mfrow = c(1, 1))

1.1.32 (31i) Polígono de frecuencias absolutas para EDAD

plot(tabla_edad, type = "fp", col = "blue", main = "Polígono de Frecuencias Absolutas", xlab = "EDAD", ylab = "Frecuencia")


1.1.33 (32i) Ojiva de frecuencias acumuladas para EDAD

plot(tabla_edad, type = "cfp", col = "darkgreen", main = "Ojiva de Frecuencias Acumuladas", xlab = "EDAD", ylab = "Frecuencia Acumulada")


1.1.34 (33i) Tabla de frecuencias agrupadas de la EDAD procesada con Sturges

n <- length(DATOS2026$EDAD)
k <- ceiling(1 + 3.322 * log10(n))
intervalos <- cut(DATOS2026$EDAD, breaks = k)
f_abs <- table(intervalos)
f_rel <- prop.table(f_abs)
fr_porcentual <- f_rel * 100

tabla_resumen <- data.frame(
  Intervalo = names(f_abs),
  Frec_Absoluta = as.numeric(f_abs),
  Frec_Relativa = round(as.numeric(f_rel), 4),
  Porcentaje = round(as.numeric(fr_porcentual), 2)
)
tabla_resumen
##     Intervalo Frec_Absoluta Frec_Relativa Porcentaje
## 1   (17,17.6]             7        0.0946       9.46
## 2 (17.6,18.2]            32        0.4324      43.24
## 3 (18.2,18.9]             0        0.0000       0.00
## 4 (18.9,19.5]            21        0.2838      28.38
## 5 (19.5,20.1]             7        0.0946       9.46
## 6 (20.1,20.8]             0        0.0000       0.00
## 7 (20.8,21.4]             4        0.0541       5.41
## 8   (21.4,22]             3        0.0405       4.05

1.1.35 (34i) Ojiva de frecuencias acumuladas porcentuales

p4 <- cumsum(fr_porcentual)
plot(p4, type = "b", col = "red", pch = 19, lwd = 2,
     main = "Ojiva de Frecuencias Acumuladas Porcentuales",
     xlab = "Clases de Edad", ylab = "Porcentaje Acumulado (%)")


1.1.36 (35i) Gráfico de dispersión: EDAD vs ESTATURA

plot(DATOS2026$EDAD, DATOS2026$ESTATURA,
     main = "Relación entre EDAD y ESTATURA",
     xlab = "EDAD (años)", ylab = "ESTATURA (cm)",
     col = "darkblue", pch = 19)
abline(lm(ESTATURA ~ EDAD, data = DATOS2026), col = "red", lwd = 2)