El error ocurre porque el nombre del archivo Excel en tu proyecto tiene un (1). Dice 00. DATOS202460ULTIMOS25 (1).xlsx, pero el código busca 00. DATOS202460ULTIMOS25.xlsx.


title: “Laboratorio 7: Análisis de Datos en R”

author: “SAMUEL GONZALEZ LONDOÑO” date: “2026-09-18” output: html_document: toc: true toc_float: true toc_depth: 3 number_sections: true theme: cosmo highlight: tango code_folding: show df_print: paged

MI CURSO DE ESTADÍSTICA Y PROBABILIDAD - 2026

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

Clase N° 28. AQUÍ COMIENZA EL LABORATORIO 7

(1i) Datos

library(readxl)
DATOS2026 <- read_excel("00. DATOS202460ULTIMOS25 (1).xlsx")
DATOS2026
## # A tibble: 74 × 16
##    CURSO    ASISTENCIA2 ASISTENCIA1 `PARCIAL 1` `PARCIAL 2`   NRC PROGRAMA  EDAD
##    <chr>          <dbl>       <dbl> <chr>       <chr>       <dbl> <chr>    <dbl>
##  1 PROBABI…         100          90 3.6         4.3          2314 F_NEGOC…    20
##  2 ESTADIS…          70          75 0.9         2.5          1136 DERECHO     18
##  3 PROBABI…          85          95 3.9         3.8          2314 F_NEGOC…    19
##  4 PROBABI…           5           5 2.9         0.5          2314 MECANICA    18
##  5 ESTADIS…          20          70 3.7         0.55         1009 PSICOLO…    19
##  6 ESTADIS…         100         100 0.9         2.95         2313 PSICOLO…    20
##  7 PROBABI…          50          75 3.7         1.7          1010 C_DATOS     18
##  8 PROBABI…         100          95 3           3.3          2314 F_NEGOC…    19
##  9 ESTADIS…         100         100 3.8         3.3          1009 PSICOLO…    18
## 10 PROBABI…          95          85 3           2.9          2314 SISTEMAS    22
## # ℹ 64 more rows
## # ℹ 8 more variables: PESO <dbl>, ESTATURA <dbl>, SEXO <chr>,
## #   ESTADO_CIVIL <chr>, ESTRATO <chr>, URBANO <chr>, TRANSPORTE <chr>,
## #   GR_SANGUINEO <chr>

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

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

(3i) Gráfico de torta para SEXO

pie_1 <- pie(table_sexo, col = c("pink", "lightblue"),
             main = "Estudio de Pastel.\n Distribución por sexos.", 
             labels = paste(names(table_sexo), "\n", table_sexo))


(4i) Construimos el diagrama de barras y el diagrama de Pastel para esta variable cualitativa

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)


(5i) Usando la aplicación para hacer la tabla porcentual redondeando al entero más cercano

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

(6i) Construimos el diagrama de barras % para esta variable cualitativa

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, "%"))


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

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


(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

(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)


(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

(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, "%"))


(12i) Tabla bivariada: ESTRATO vs CURSO

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

(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)


(14i) Tabla bivariada: 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

(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)


(16i) Tabla de frecuencias completa para EDAD usando summarytools

library(summarytools)
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) Resumen estadístico de 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

(18i) Diagrama de caja (Boxplot) horizontal para la variable EDAD

boxplot(DATOS2026$EDAD, horizontal = TRUE, col = rainbow(1), main = "Boxplot de EDAD", xlab = "Años")


(19i) Diagrama de caja con muesca (notch) para identificar la mediana

x <- DATOS2026$EDAD
boxplot(x, notch = TRUE, horizontal = TRUE, col = "lightblue", main = "Boxplot con Muesca para EDAD")


(20i) Diagrama de caja: EDAD vs SEXO

x <- DATOS2026$EDAD
y <- DATOS2026$SEXO
boxplot(x ~ y, horizontal = TRUE, col = c("pink", "lightblue"), main = "EDAD vs SEXO", xlab = "EDAD", ylab = "SEXO")


(21i) Diagrama de caja: EDAD vs ESTRATO

x <- DATOS2026$EDAD
z <- DATOS2026$ESTRATO
boxplot(x ~ z, horizontal = TRUE, col = rainbow(length(unique(z))), main = "EDAD vs ESTRATO", xlab = "EDAD", ylab = "ESTRATO")


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

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


(23i) Resumen estadístico de la variable 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 para la variable ESTATURA

boxplot(DATOS2026$ESTATURA, horizontal = TRUE, col = "lightgreen", main = "Boxplot de ESTATURA", xlab = "Centímetros (cm)")


(25i) Diagrama de caja con muesca para ESTATURA

x <- DATOS2026$ESTATURA
boxplot(x, notch = TRUE, horizontal = TRUE, col = "lightgreen", main = "Boxplot con Muesca para ESTATURA")


(26i) Diagrama de caja: ESTATURA vs SEXO

x <- DATOS2026$ESTATURA
y <- DATOS2026$SEXO
boxplot(x ~ y, horizontal = TRUE, col = c("pink", "lightblue"), main = "ESTATURA vs SEXO", xlab = "ESTATURA (cm)", ylab = "SEXO")


(27i) Diagrama de caja: ESTATURA vs ESTRATO

x <- DATOS2026$ESTATURA
z <- DATOS2026$ESTRATO
boxplot(x ~ z, horizontal = TRUE, col = rainbow(length(unique(z))), main = "ESTATURA vs ESTRATO", xlab = "ESTATURA (cm)", ylab = "ESTRATO")


(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()


(29i) Histograma según Regla de Sturges (agricolae)

library(agricolae)
h2 <- graph.freq(DATOS2026$EDAD, col = colors()[75], main = "Histograma de EDAD (Sturges)", xlab = "Edad", ylab = "Frecuencia Absoluta")


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

summary(h2)
##   Lower Upper  Main Frequency Percentage CF   CPF
## 1  17.0  17.7 17.35         7        9.5  7   9.5
## 2  17.7  18.4 18.05        32       43.2 39  52.7
## 3  18.4  19.1 18.75        21       28.4 60  81.1
## 4  19.1  19.8 19.45         0        0.0 60  81.1
## 5  19.8  20.5 20.15         7        9.5 67  90.5
## 6  20.5  21.2 20.85         4        5.4 71  95.9
## 7  21.2  21.9 21.55         0        0.0 71  95.9
## 8  21.9  22.6 22.25         3        4.1 74 100.0

(31i) Polígono de frecuencias absolutas

plot(h2, col = colors()[70], frequency = 1, main = "Polígono de Frecuencias Absolutas", xlab = "Edad", ylab = "Frecuencia Absoluta")
polygon.freq(h2, col = "red", frequency = 1, lwd = 2)


(32i) Polígono de frecuencias relativas

plot(h2, col = colors()[70], frequency = 2, main = "Polígono de Frecuencias Relativas", xlab = "Edad", ylab = "Frecuencia Relativa")
polygon.freq(h2, col = "blue", frequency = 2, lwd = 2)


(33i) Cálculo de datos para Ojivas acumuladas

fr_por_clase2 <- h2$counts
total_n2 <- sum(h2$counts)
fr_relativos2 <- fr_por_clase2 / total_n2
fr_porcentuales2 <- 100 * fr_relativos2

cat("Frecuencias Absolutas:\n")
## Frecuencias Absolutas:
print(fr_por_clase2)
## [1]  7 32 21  0  7  4  0  3
cat("\nFrecuencias Acumuladas Absolutas:\n")
## 
## Frecuencias Acumuladas Absolutas:
print(cumsum(fr_por_clase2))
## [1]  7 39 60 60 67 71 71 74
cat("\nFrecuencias Acumuladas Relativas:\n")
## 
## Frecuencias Acumuladas Relativas:
print(cumsum(fr_relativos2))
## [1] 0.09459459 0.52702703 0.81081081 0.81081081 0.90540541 0.95945946 0.95945946
## [8] 1.00000000
cat("\nFrecuencias Acumuladas Porcentuales:\n")
## 
## Frecuencias Acumuladas Porcentuales:
print(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 acumuladas porcentuales

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

<========== AQUÍ FINALIZA EL LABORATORIO 7 ==========>