Introducción

Se realizó un ejercicio utilizando la aplicación AirCasting para medir los niveles de ruido ambiental en diferentes zonas del campus de la Universidad del Valle.

Las mediciones se realizaron en tres zonas principales:

  • La Biblioteca
  • El Lago Central
  • La Plazoleta de Ingenierías

Se grabó simultáneamente desde nuestros celulares en las tres zonas durante 15 minutos. La app nos proporcionó una tabla con registros periódicos con datos de ubicación (Latitud y Longitud) y de intensidad del sonido (Decibeles). Estas tablas se exportaron a R, donde las compilamos para generar un mapa y realizar la graficación y análisis de datos. El objetivo del experimento fue analizar y visualizar espacialmente los niveles de ruido registrados en cada zona.

Exploración de datos

Estadísticas descriptivas

resumen <- data.frame(
  Zona = c("Biblioteca JP", "Lago Central AG", "Ingenierías FR"),
  Media = c(mean(biblioteca_JP$decibels), 
            mean(lagocentral_AG$decibels), 
            mean(ingenierias_FR$decibels)),
  Mediana = c(median(biblioteca_JP$decibels), 
              median(lagocentral_AG$decibels), 
              median(ingenierias_FR$decibels)),
  Mínimo = c(min(biblioteca_JP$decibels), 
             min(lagocentral_AG$decibels), 
             min(ingenierias_FR$decibels)),
  Máximo = c(max(biblioteca_JP$decibels), 
             max(lagocentral_AG$decibels), 
             max(ingenierias_FR$decibels))
)


knitr::kable(resumen, digits = 2, caption = "Comparación de niveles de ruido por zona")
Comparación de niveles de ruido por zona
Zona Media Mediana Mínimo Máximo
Biblioteca JP 66.00 66 57 85
Lago Central AG 64.00 63 15 79
Ingenierías FR 65.54 65 51 88

Las tres zonas presentaron niveles de ruido similares entre sí, con medias que oscilan entre 64.00 dB (Lago Central) y 66.00 dB (Biblioteca). Sin embargo, se observan diferencias importantes en la variabilidad y en los valores extremos: el Lago Central registró el valor mínimo más bajo de todas las zonas (15 dB), lo que sugiere la presencia de al menos un registro atípico durante la medición. Ingenierías alcanzó el máximo absoluto con 88 dB, seguido de cerca por Biblioteca JP con 85 dB. Estos valores máximos superan los 85 dB, umbral a partir del cual la OMS considera el ruido potencialmente dañino con exposición prolongada.

Histograma por zonas

library(ggplot2)
library(dplyr)

# Paleta de colores personalizada
colores <- c("Biblioteca JP" = "#2ECC71", 
             "Lago Central AG" = "#3498DB", 
             "Ingenierías FR" = "#E74C3C")

# Unir los tres datasets
todos <- bind_rows(
  biblioteca_JP %>% mutate(Zona = "Biblioteca JP"),
  lagocentral_AG %>% mutate(Zona = "Lago Central AG"),
  ingenierias_FR %>% mutate(Zona = "Ingenierías FR")
)

ggplot(todos, aes(x = decibels, fill = Zona)) +
  geom_histogram(aes(y = after_stat(density)), binwidth = 2, 
                 color = "white", alpha = 0.8) +
  geom_density(color = "black", linewidth = 0.7, fill = NA) +
  geom_vline(data = todos %>% group_by(Zona) %>% summarise(m = mean(decibels)),
             aes(xintercept = m), linetype = "dashed", color = "black", linewidth = 0.6) +
  facet_wrap(~Zona, ncol = 1) +
  scale_fill_manual(values = colores) +
  labs(title = "Distribución de niveles de ruido por zona",
       subtitle = "La línea punteada indica la media | Curva = densidad estimada",
       x = "Decibeles (dB)", y = "Densidad") +
  theme_minimal(base_size = 13) +
  theme(
    legend.position = "none",
    strip.text = element_text(face = "bold", size = 12),
    plot.title = element_text(face = "bold", hjust = 0.5),
    plot.subtitle = element_text(hjust = 0.5, color = "gray40"),
    panel.grid.minor = element_blank()
  )

La Biblioteca muestra la distribución más concentrada y simétrica de las tres zonas, con la mayoría de registros agrupados entre 62 y 72 dB y una curva de densidad cercana a la normal. Esto indica un ambiente sonoro relativamente estable durante el período de medición. Por el contrario Ingenierías presenta una distribución más dispersa y con una ligera cola hacia la derecha, lo que refleja episodios puntuales de ruido elevado que elevan la media por encima de la mediana (65.54 vs 65 dB). Esto es típico de zonas con actividad intermitente como pasillos o zonas de tránsito. Finalmente el Lago Central es la zona con mayor variabilidad aparente: aunque su distribución principal está concentrada alrededor de 63 dB, presenta una cola izquierda extendida que incluye el registro mínimo de 15 dB, probablemente un error de medición o un momento de silencio atípico. Su curva de densidad es la más asimétrica de las tres.

Boxplots comparativos

ggplot(todos, aes(x = Zona, y = decibels, fill = Zona)) +
  geom_boxplot(alpha = 0.7, outlier.colour = "red", outlier.shape = 16) +
  labs(title = "Comparación de niveles de ruido por zona",
       x = "Zona", y = "Decibeles (dB)") +
  theme_minimal() +
  theme(legend.position = "none")

Se identifican valores atípicos (puntos rojos) en las tres zonas. Los más llamativos son el valor cercano a 88 dB en Ingenierías y el valor cercano a 15 dB en Lago Central. Este último es particularmente inusual y podría corresponder a un fallo momentáneo del sensor o a una interrupción de la medición.

Mapa interactivo

En el mapa se observan los tres recorridos periféricos que se realizaron a las diferentes zonas, entre las 9:55am-10:10am del 02/11/2026. Así como los puntos correspondientes a cada registro.

library(leaflet)
library(dplyr)

# Combinar datos con colores según nivel de ruido
todos_mapa <- bind_rows(
  biblioteca_JP %>% mutate(Zona = "Biblioteca JP"),
  lagocentral_AG %>% mutate(Zona = "Lago Central AG"),
  ingenierias_FR %>% mutate(Zona = "Ingenierías FR")
)

# Paleta de color según decibeles
pal <- colorNumeric(palette = c("#2ECC71", "#F39C12", "#E74C3C"),
                    domain = todos_mapa$decibels)

leaflet(todos_mapa) %>%
  addTiles() %>%
  addCircleMarkers(
    lng = ~Longitude, lat = ~Latitude,
    color = ~pal(decibels),
    radius = 4,
    stroke = FALSE,
    fillOpacity = 0.8,
    popup = ~paste("Zona:", Zona, "<br>Decibeles:", round(decibels, 1))
  ) %>%
  addLegend("bottomright", pal = pal, values = ~decibels,
            title = "Decibeles (dB)", opacity = 1)

Evaluación de hipótesis

Se espera que el nivel de ruido sea significativamente diferente entre las tres zonas, siendo Ingenierías la zona con mayor ruido por la actividad académica y social del sector, mientras que la Biblioteca debería presentar los niveles más bajos.

Para evaluar esta hipótesis se aplicó la prueba de Kruskal-Wallis, una alternativa no paramétrica al ANOVA adecuada cuando no se puede asumir normalidad en los datos.

library(knitr)

# Kruskal-Wallis
kw <- kruskal.test(decibels ~ Zona, data = todos)

kable(data.frame(
  Prueba = "Kruskal-Wallis",
  Estadístico = round(kw$statistic, 3),
  `Grados de libertad` = kw$parameter,
  `p-value` = "<2.2e-16"
), caption = "Prueba de Kruskal-Wallis", row.names = FALSE)
Prueba de Kruskal-Wallis
Prueba Estadístico Grados.de.libertad p.value
Kruskal-Wallis 74.812 2 <2.2e-16
# Pairwise Wilcoxon
pw <- pairwise.wilcox.test(todos$decibels, todos$Zona, p.adjust.method = "bonferroni")

kable(pw$p.value, digits = 4,
      caption = "Comparaciones por pares - Wilcoxon con corrección Bonferroni")
Comparaciones por pares - Wilcoxon con corrección Bonferroni
Biblioteca JP Ingenierías FR
Ingenierías FR 0.093 NA
Lago Central AG 0.000 4e-04

La prueba de Kruskal-Wallis arrojó un estadístico de 74.81 con 2 grados de libertad y un p-value < 2.2e-16, esencialmente cero. Esto lleva a rechazar contundentemente la hipótesis nula: los niveles de ruido no son iguales entre las tres zonas del campus (α = 0.05). Las comparaciones por pares precisan dónde están esas diferencias. El Lago Central difiere significativamente tanto de Biblioteca (p ≈ 0) como de Ingenierías (p = 0.0004). Sin embargo, entre Biblioteca e Ingenierías la diferencia no es significativa (p = 0.093), lo que indica que ambas zonas tienen niveles de ruido estadísticamente comparables pese a sus distintos contextos.

Los resultados de la prueba indican si existen diferencias estadísticamente significativas entre las zonas. Si el valor p es menor a 0.05, se rechaza la hipótesis nula de que los niveles de ruido son iguales en todas las zonas. Las comparaciones por pares permiten identificar específicamente entre qué zonas se presentan las diferencias.

Integrantes