Carrera: Ingeniría Ambiental
Integrantes: Ariel Chiluiza, Doménica Méndez, Kevin Santamaría, Ariana Viteri
Muestreo del 30 de octubre de 2026
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.
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.
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.
# 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
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" ...
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 |
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 |
# 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))
)
}
# 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.
# 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). | |
# 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.
# 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.
# 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.
# 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.
# 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 %.
# 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.
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.
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.