Carrera: Ingeniría Ambiental

Integrantes: Ariel Chiluiza, Doménica Méndez, Kevin Santamaría, Ariana Viteri

Muestreo del 30 de octubre de 2026

1.Introducción

La temperatura y la humedad relativa son variables meteorológicas fundamentales para la caracterización de las condiciones ambientales de un espacio determinado. Ambas permiten comprender las condiciones microclimáticas de un entorno y analizar cómo factores como la radiación solar, la cobertura vegetal, la presencia de infraestructura y las características del terreno pueden influir en su comportamiento.

En esta práctica de laboratorio se realizó un monitoreo de temperatura y humedad relativa en diez puntos de muestreo ubicados dentro de las instalaciones de la Universidad Central del Ecuador. Para ello, se efectuaron tres mediciones en cada punto, obteniendo un total de 30 registros durante el periodo de muestreo. Los sitios seleccionados presentan diferentes características ambientales, incluyendo espacios abiertos expuestos a la radiación solar, zonas con vegetación y sectores cercanos a edificaciones universitarias. El análisis incluye la revisión de la estructura de los datos, la identificación de valores faltantes, el cálculo de estadísticos descriptivos y la elaboración de gráficos temporales, diagramas de caja e histogramas.

2.Objetivo

Caracterizar las condiciones microclimáticas de diez puntos de muestreo de la Universidad Central del Ecuador mediante la medición, procesamiento y análisis estadístico de la temperatura y humedad relativa, utilizando el programa RStudio para la interpretación y representación gráfica de los datos obtenidos.

3.Metodología

La práctica se desarrolló mediante un procedimiento de monitoreo ambiental de campo, enfocado en la medición de temperatura y humedad relativa en diez puntos seleccionados dentro de las instalaciones de la Universidad Central del Ecuador. En cada ubicación se realizaron tres mediciones consecutivas, obteniendo un total de 30 registros que posteriormente fueron organizados en formato CSV.

Se trabajó con el archivo registro_muestreo_2.csv, correspondiente al muestreo del 30 de octubre de 2026. El archivo contiene 30 registros, distribuidos en tres mediciones por lugar, entre las 10:00 y las 11:00.

4.Importación y revisión de los datos

# Verificar si el archivo CSV se encuentra en el directorio actual
nombre_csv <- "registro_muestreo_2.csv"

if (!file.exists(nombre_csv)) {
  stop(
    "No se encontró el CSV en la carpeta de Documentos. ",
    "Verifica que el archivo esté exactamente en C:/Users/Cristian/OneDrive/Documentos"
  )
}

# Lectura del archivo CSV con delimitador de punto y coma (;)
datos <- read.csv(
  nombre_csv,
  header = TRUE,
  sep = ";",
  dec = ",",
  fileEncoding = "UTF-8",
  check.names = FALSE,
  stringsAsFactors = FALSE
)

# Verificación de columnas necesarias según la estructura del nuevo dataset
columnas_necesarias <- c(
  "Punto", "Lugar", "Latitud", "Longitud", 
  "Hora", "Repeticion", "Temperatura_C", "Humedad_Relativa_pct"
)

if (!all(columnas_necesarias %in% names(datos))) {
  stop("Los encabezados del CSV no coinciden con los esperados.")
}

# Extracción y limpieza de variables
temperatura <- as.numeric(gsub(",", ".", datos[["Temperatura_C"]]))
humedad <- as.numeric(datos[["Humedad_Relativa_pct"]])
lugar <- factor(datos[["Lugar"]])
hora <- as.character(datos[["Hora"]])
punto <- datos[["Punto"]]
repeticion <- datos[["Repeticion"]]

stopifnot(
  is.numeric(temperatura),
  is.numeric(humedad)
)

# Expresar las horas en minutos desde medianoche (formato HH:MM)
tiempo <- as.numeric(substr(hora, 1, 2)) * 60 + 
  as.numeric(substr(hora, 4, 5))

marcas_hora <- sort(unique(tiempo))
etiquetas_hora <- sprintf(
  "%02d:%02d",
  as.integer(marcas_hora %/% 60),
  as.integer(marcas_hora %% 60)
)

# Mensaje de confirmación en la consola
cat("¡Datos importados y verificados exitosamente! Total de registros leídos:", nrow(datos))
## ¡Datos importados y verificados exitosamente! Total de registros leídos: 30

4.1.Estructura del archivo

El archivo importado contiene 30 observaciones y 9 columnas.

str(datos)
## 'data.frame':    30 obs. of  9 variables:
##  $ Punto               : int  1 1 1 2 2 2 3 3 3 4 ...
##  $ Lugar               : chr  "Biblioteca General" "Biblioteca General" "Biblioteca General" "Facultad de Ciencias Químicas" ...
##  $ Latitud             : chr  "S 00°11'56.8\"" "S 00°11'56.8\"" "S 00°11'56.8\"" "S 00°11'55.3\"" ...
##  $ Longitud            : chr  "W 078°30'19.8\"" "W 078°30'19.8\"" "W 078°30'19.8\"" "W 078°30'16.5\"" ...
##  $ Hora                : chr  "10:23" "10:26" "10:30" "10:36" ...
##  $ Repeticion          : int  1 2 3 1 2 3 1 2 3 1 ...
##  $ Temperatura_C       : num  18.3 18.5 18.2 24.6 26.4 25.8 22.7 24.5 23.3 22.6 ...
##  $ Humedad_Relativa_pct: int  39 40 38 38 16 31 24 36 37 23 ...
##  $ Observacion         : chr  "Altura de 2861 m" "Altura de 2861 m " "Altura de 2861 m " "Altura de 2858 m" ...

4.2.Registros del muestreo

library(gt)

# Crear la tabla estilizada con gt utilizando el dataframe importado
datos |>  
  gt() |>  
  tab_header(    
    title = "Datos de temperatura y humedad relativa",    
    subtitle = "Universidad Central del Ecuador (UCE) — Práctica 2"  
  ) |>  
  cols_hide(    
    columns = c(Latitud, Longitud, Observacion)  
  ) |>  
  tab_options(    
    heading.background.color = "#E8F0FA",    
    column_labels.background.color = "#D6E4F5",    
    row.striping.include_table_body = TRUE,    
    table.font.size = px(13)  )
Datos de temperatura y humedad relativa
Universidad Central del Ecuador (UCE) — Práctica 2
Punto Lugar Hora Repeticion Temperatura_C Humedad_Relativa_pct
1 Biblioteca General 10:23 1 18.30 39
1 Biblioteca General 10:26 2 18.50 40
1 Biblioteca General 10:30 3 18.20 38
2 Facultad de Ciencias Químicas 10:36 1 24.60 38
2 Facultad de Ciencias Químicas 10:40 2 26.40 16
2 Facultad de Ciencias Químicas 10:44 3 25.80 31
3 Facultad de Ingeniería Civil 10:46 1 22.70 24
3 Facultad de Ingeniería Civil 10:49 2 24.50 36
3 Facultad de Ingeniería Civil 10:52 3 23.30 37
4 Centro de Física 10:54 1 22.60 23
4 Centro de Física 10:57 2 22.80 24
4 Centro de Física 11:02 3 22.50 24
5 FEUE 10:35 1 28.20 33
5 FEUE 10:38 2 28.20 33
5 FEUE 10:41 3 28.40 32
6 Bosque arquitectura 10:43 1 26.12 32
6 Bosque arquitectura 10:46 2 26.49 34
6 Bosque arquitectura 10:49 3 25.60 30
7 Centro de Física poste 10:58 1 27.40 29
7 Centro de Física poste 11:01 2 24.40 29
7 Centro de Física poste 11:04 3 26.90 29
8 Biblioteca 10:34 1 22.90 17
8 Biblioteca 10:37 2 22.70 15
8 Biblioteca 10:40 3 23.20 16
9 Bosque 10:43 1 22.40 19
9 Bosque 10:46 2 22.90 20
9 Bosque 10:49 3 22.70 21
10 Centro Física inicio 10:52 1 22.50 19
10 Centro Física inicio 10:55 2 23.20 18
10 Centro Física inicio 10:58 3 23.40 18

4.3.Revisión de valores faltantes

library(tidyverse)
library(gt)

# Asegurar que la temperatura y la humedad sean numéricas para una correcta revisión
datos_analisis <- datos |>
  mutate(
    Temperatura_C = as.numeric(gsub(",", ".", Temperatura_C)),
    Humedad_Relativa_pct = as.numeric(Humedad_Relativa_pct)
  )

# Calcular los datos faltantes por columna
tabla_faltantes <- data.frame(  
  Variable = names(datos_analisis),  
  Datos_faltantes = as.integer(colSums(is.na(datos_analisis)))
)

# Generar la tabla estilizada con gt
tabla_faltantes |>  
  gt() |>  
  cols_label(
    Variable = "Variable del Dataset",
    Datos_faltantes = "Datos faltantes"  
  ) |>  
  tab_header(    
    title = "Revisión de valores faltantes",
    subtitle = "Control de calidad de registros - Práctica 2 (UCE)"
  ) |>
  tab_options(
    heading.background.color = "#E8F0FA",
    column_labels.background.color = "#D6E4F5",
    row.striping.include_table_body = TRUE,
    table.font.size = px(13)
  )
Revisión de valores faltantes
Control de calidad de registros - Práctica 2 (UCE)
Variable del Dataset Datos faltantes
Punto 0
Lugar 0
Latitud 0
Longitud 0
Hora 0
Repeticion 0
Temperatura_C 0
Humedad_Relativa_pct 0
Observacion 6

5.Resultados descriptivos

# 1. Definir el vector de indicadores estadísticos
indicadores <- c(  
  "Número de observaciones",  
  "Datos válidos",  
  "Datos faltantes",  
  "Mínimo",  
  "Máximo",  
  "Media",  
  "Mediana",  
  "Desviación estándar muestral",  
  "Amplitud del rango",  
  "Primer cuartil (Q1)",  
  "Segundo cuartil (Q2)",  
  "Tercer cuartil (Q3)"
)

# 2. Definir la función de cálculo estadístico
calcular <- function(x) {  
  c(    
    length(x),    
    sum(!is.na(x)),    
    sum(is.na(x)),    
    min(x, na.rm = TRUE),    
    max(x, na.rm = TRUE),    
    mean(x, na.rm = TRUE),    
    median(x, na.rm = TRUE),    
    sd(x, na.rm = TRUE),    
    diff(range(x, na.rm = TRUE)),    
    as.numeric(quantile(x, 0.25, na.rm = TRUE)),    
    as.numeric(quantile(x, 0.50, na.rm = TRUE)),    
    as.numeric(quantile(x, 0.75, na.rm = TRUE))  
  )
}

5.1.Temperatura

# Asegurar que la temperatura esté limpia y en formato numérico
temperatura_limpia <- as.numeric(gsub(",", ".", datos[["Temperatura_C"]]))

# Calcular los estadísticos solo para la temperatura
estadisticos_temperatura <- data.frame(  
  Estadistico = indicadores,  
  Valor = calcular(temperatura_limpia)
)

# Generar la tabla estilizada con gt
estadisticos_temperatura |>  
  gt() |>  
  tab_header(    
    title = "Tabla 1. Indicadores de temperatura",    
    subtitle = "Universidad Central del Ecuador (UCE) — Práctica 2"  
  ) |>  
  cols_label(    
    Estadistico = "Estadístico"  
  ) |>  
  fmt_number(    
    columns = Valor,    
    rows = 1:3,    
    decimals = 0  ) |>  
  fmt_number(    
    columns = Valor,    
    rows = 4:12,    
    decimals = 2  ) |>  
  tab_source_note(    
    source_note = paste(      
      "Temperatura en °C; conteos sin unidad.",      
      "Fuente: Registros del muestreo (Práctica 2)."    )  ) |>  
  tab_options(    
    heading.background.color = "#E8F0FA",    
    column_labels.background.color = "#D6E4F5",    
    row.striping.include_table_body = TRUE,
    table.font.size = px(13)  )
Tabla 1. Indicadores de temperatura
Universidad Central del Ecuador (UCE) — Práctica 2
Estadístico Valor
Número de observaciones 30
Datos válidos 30
Datos faltantes 0
Mínimo 18.20
Máximo 28.40
Media 23.93
Mediana 23.25
Desviación estándar muestral 2.72
Amplitud del rango 10.20
Primer cuartil (Q1) 22.70
Segundo cuartil (Q2) 23.25
Tercer cuartil (Q3) 26.04
Temperatura en °C; conteos sin unidad. Fuente: Registros del muestreo (Práctica 2).

La temperatura media fue de 23.93 °C, con un mínimo de 18.20 °C y un máximo de 28.40 °C.

La desviación estándar muestral fue de 2.72 °C. Este valor describe la dispersión de las mediciones respecto a la media. El resumen reúne observaciones de diferentes lugares y horarios.

5.2.Humedad relativa

# Asegurar que la humedad relativa sea numérica
humedad_limpia <- as.numeric(datos[["Humedad_Relativa_pct"]])

# Calcular los estadísticos solo para la humedad relativa
estadisticos_humedad <- data.frame(  
  Estadistico = indicadores,  
  Valor = calcular(humedad_limpia)
)

# Generar la tabla estilizada con gt
estadisticos_humedad |>  
  gt() |>  
  tab_header(    
    title = "Tabla 2. Indicadores de humedad relativa",    
    subtitle = "Universidad Central del Ecuador (UCE) — Práctica 2"  
  ) |>  
  cols_label(    
    Estadistico = "Estadístico"  
  ) |>  
  fmt_number(    
    columns = Valor,    
    rows = 1:3,    
    decimals = 0  ) |>  
  fmt_number(    
    columns = Valor,    
    rows = 4:12,    
    decimals = 2  ) |>  
  tab_source_note(    
    source_note = paste(      
      "Humedad relativa en %.",      
      "Desviación y amplitud en puntos porcentuales;",      
      "conteos sin unidad.",      
      "Fuente: Registros del muestreo (Práctica 2)."    )  ) |>  
  tab_options(    
    heading.background.color = "#E7F3EC",    
    column_labels.background.color = "#CEE8D8",    
    row.striping.include_table_body = TRUE,
    table.font.size = px(13)  )
Tabla 2. Indicadores de humedad relativa
Universidad Central del Ecuador (UCE) — Práctica 2
Estadístico Valor
Número de observaciones 30
Datos válidos 30
Datos faltantes 0
Mínimo 15.00
Máximo 40.00
Media 27.13
Mediana 29.00
Desviación estándar muestral 7.98
Amplitud del rango 25.00
Primer cuartil (Q1) 19.25
Segundo cuartil (Q2) 29.00
Tercer cuartil (Q3) 33.00
Humedad relativa en %. Desviación y amplitud en puntos porcentuales; conteos sin unidad. Fuente: Registros del muestreo (Práctica 2).

6.Análisis gráfico

6.1.Temperatura por hora y lugar

# 1. Definir la función grafico_temporal con puntos sólidos y colores diferenciados para cada lugar
grafico_temporal <- function(variable_respuesta, etiqueta_y, titulo_grafico) {
  
  # Preparar dataframe temporal uniendo las columnas del dataset actual
  df_temp <- data.frame(
    Hora = as.character(datos[["Hora"]]),
    Lugar = factor(datos[["Lugar"]]),
    Valor = as.numeric(gsub(",", ".", variable_respuesta))
  ) |>
    mutate(
      Minutos = as.numeric(substr(Hora, 1, 2)) * 60 + as.numeric(substr(Hora, 4, 5))
    )
  
  marcas_hora <- sort(unique(df_temp$Minutos))
  etiquetas_hora <- sprintf(
    "%02d:%02d",
    as.integer(marcas_hora %/% 60),
    as.integer(marcas_hora %% 60)
  )
  
  # Generar el gráfico usando círculos sólidos (shape = 16) diferenciados por color
  ggplot(df_temp, aes(x = Minutos, y = Valor, color = Lugar)) +
    geom_point(size = 3.5, alpha = 0.9, shape = 16) +
    scale_x_continuous(
      breaks = marcas_hora,
      labels = etiquetas_hora
    ) +
    labs(
      title = titulo_grafico,
      subtitle = "30/10/2026",
      x = "Hora local",
      y = etiqueta_y
    ) +
    theme_bw(base_size = 12) +
    theme(
      plot.title = element_text(face = "bold", size = 15, hjust = 0.5),
      plot.subtitle = element_text(face = "bold", size = 12, hjust = 0.5),
      axis.text.x = element_text(angle = 90, vjust = 0.5, hjust = 1),
      panel.grid.major.y = element_line(color = "grey80", linetype = "dashed"),
      panel.grid.minor.y = element_blank(),
      panel.grid.major.x = element_blank(),
      legend.title = element_blank(),
      legend.position = "top",
      legend.direction = "horizontal",
      legend.text = element_text(size = 8)
    ) +
    guides(color = guide_legend(ncol = 3)) 
}

# 2. Llamar a la función para la temperatura
grafico_temporal(
  temperatura, 
  "Temperatura (°C)", 
  "Temperatura por hora y lugar en la UCE"
)

En los registros, la FEUE y el Centro de Física poste presentaron temperaturas más altas (alcanzando máximos cercanos a los 28.4 °C y 27.4 °C, respectivamente) en comparación con zonas con mayor cobertura o menor exposición, como la Biblioteca General, que registró los valores más bajos (promedio de 18.3 °C). Asimismo, se observa que facultades como Ciencias Químicas mostraron temperaturas superiores a las de zonas como el Centro de Física o el Bosque durante los horarios de medición.

Estas diferencias describen el comportamiento espacial y temporal captado durante el muestreo. Por sí solas no demuestran qué factores microclimáticos o antrópicos específicos ocasionaron las variaciones térmicas entre los diferentes puntos del campus universitario.

6.2.Diagrama de caja de temperatura

# Asegurar que la temperatura esté limpia y en formato numérico
temperatura_limpia <- as.numeric(gsub(",", ".", datos[["Temperatura_C"]]))

# Generar el diagrama de caja en R base
boxplot(  
  temperatura_limpia,  
  horizontal = TRUE,  
  col = "powderblue",  
  border = "cadetblue",  
  xlab = "Temperatura (°C)",  
  main = "Distribución de temperatura en la UCE\nPráctica 2"  
)

La caja representa la zona central de la distribución y la línea interior indica la mediana. El gráfico resume conjuntamente las mediciones de los lugares.

6.3.Histograma de temperatura

# Asegurar que la temperatura esté limpia y en formato numérico
temperatura_limpia <- as.numeric(gsub(",", ".", datos[["Temperatura_C"]]))

# Generar el histograma en R base
hist(  
  temperatura_limpia,  
  col = "lightgreen",  
  border = "white",  
  xlab = "Temperatura (°C)",  
  ylab = "Frecuencia absoluta",  
  main = "Histograma de temperatura en la UCE\nPráctica 2",  
  las = 1
)

El histograma muestra cuántas mediciones se encuentran en cada intervalo de temperatura. Su forma depende tanto de los datos como de los intervalos utilizados y no constituye una prueba de normalidad.

6.4.Humedad relativa por hora y lugar

# Llamar a la función grafico_temporal para la humedad relativa
grafico_temporal(  
  humedad,  
  "Humedad relativa (%)",  
  "Humedad relativa por hora y lugar en la UCE"
)

En los registros, la Biblioteca General presentó los porcentajes más altos de humedad relativa (alcanzando valores cercanos al 40%) durante las primeras horas de la mañana, en contraste con puntos como la Biblioteca, que registró los valores más bajos del muestreo (alrededor del 15%). Asimismo, se observa que zonas abiertas o de mayor exposición como el Centro de Física poste mantuvieron niveles inferiores en comparación con puntos universitarios que registraron picos más elevados en sus respectivos horarios.

Estas diferencias describen la distribución espacial y temporal de la humedad captada durante el monitoreo. Por sí solas no demuestran qué factores microclimáticos específicos ocasionaron las variaciones entre los diferentes puntos del campus.

6.5.Diagrama de caja de humedad relativa

# Asegurar que la humedad relativa sea numérica
humedad_limpia <- as.numeric(datos[["Humedad_Relativa_pct"]])

# Generar el diagrama de caja en R base
boxplot(  
  humedad_limpia,  
  horizontal = TRUE,  
  col = "palegreen",  
  border = "#238443",  
  xlab = "Humedad relativa (%)",  
  main = "Distribución de humedad relativa en la UCE\nPráctica 2"  
)

El 50 % central de las mediciones se encuentra entre 19.25 % y 33 %, según los cuartiles calculados. La mediana es de 29 %.

6.6.Histograma de humedad relativa

# Asegurar que la humedad relativa sea numérica
humedad_limpia <- as.numeric(datos[["Humedad_Relativa_pct"]])

# Generar el histograma en R base
hist(  
  humedad_limpia,  
  col = "lightsteelblue",  
  border = "white",  
  xlab = "Humedad relativa (%)",  
  ylab = "Frecuencia absoluta",  
  main = "Histograma de humedad relativa en la UCE\nPráctica 2",  
  las = 1
)

El histograma permite reconocer los intervalos de humedad relativa que concentran más registros durante el muestreo.

7.Alcance y limitaciones

El análisis se limita al procesamiento estadístico descriptivo y a la representación gráfica de las variables registradas. No se realizaron pruebas de hipótesis ni análisis causales, por lo que las diferencias identificadas entre los puntos de muestreo no permiten atribuir directamente los cambios de temperatura y humedad relativa a factores específicos como la vegetación, la radiación solar, la infraestructura o la circulación de personas.

Asimismo, la interpretación de los resultados está condicionada por la información disponible sobre el procedimiento de medición. Para mejorar la confiabilidad y reproducibilidad del estudio, se requiere documentar el instrumento utilizado, su calibración, precisión, altura de exposición del sensor y las condiciones ambientales durante cada registro. Las coordenadas geográficas también deben verificarse con la fuente original antes de utilizarlas en representaciones cartográficas o análisis espaciales.

8.Conclusión

Los datos permitieron describir la temperatura y la humedad relativa de diez puntos de la UCE durante el muestreo.

La temperatura media fue de 23,93 °C y la humedad relativa media de 27,13 %. Se observaron diferencias entre los puntos de muestreo, evidenciando variaciones en las condiciones microclimáticas. Los resultados no permiten establecer que estas diferencias sean permanentes ni determinar sus causas.

Para mejorar el monitoreo sería necesario repetir las mediciones en diferentes horarios y documentar las condiciones e instrumentos utilizados.