El monitoreo de temperatura y humedad relativa permite describir las condiciones ambientales registradas en un lugar y momento determinados. En esta práctica se analizaron 16 mediciones obtenidas en cuatro sectores de la Universidad Central del Ecuador: calle Jerónimo Leiton, FEUE, Área Verde y FIGEMPA.
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.
Describir la temperatura y la humedad relativa registradas en cuatro sectores de la Universidad Central del Ecuador mediante tablas estadísticas y gráficos exploratorios elaborados en R.
Se trabajó con el archivo Datos_Temperatura_RStudio.csv,
correspondiente al muestreo del 16 de octubre de 2026. El archivo
contiene 16 registros, distribuidos en cuatro mediciones por lugar,
entre las 10:20 y las 11:00.
Cada fila representa un registro de medición e incluye el punto, lugar, fecha, hora, temperatura, humedad relativa, coordenadas y observación. La temperatura se expresa en grados Celsius y la humedad relativa en porcentaje.
Las mediciones se analizaron conjuntamente para obtener un resumen del muestreo. En los gráficos temporales se distinguieron los lugares, debido a que existen registros de distintos sectores a la misma hora.
Información de campo pendiente de completar: instrumento utilizado, resolución o precisión, procedimiento de medición y condiciones de exposición del sensor.
# El CSV debe estar en la misma carpeta que este archivo R Markdown.
nombre_csv <- "C:/Users/JOSELYN/Downloads/Datos_Temperatura_RStudio.csv"
if (!file.exists(nombre_csv)) {
stop(
"No se encontró el CSV. Guarda Datos_Temperatura_RStudio.csv ",
"en la misma carpeta que Informe_Temperatura.Rmd."
)
}
datos <- read.csv(
nombre_csv,
header = TRUE,
sep = ",",
dec = ".",
fileEncoding = "UTF-8-BOM",
check.names = FALSE,
stringsAsFactors = FALSE
)
columnas_necesarias <- c(
"Lugar", "Fecha", "Hora",
"Temperatura (°C)", "Humedad Relativa (%)"
)
if (!all(columnas_necesarias %in% names(datos))) {
stop("Los encabezados del CSV no coinciden con los esperados.")
}
temperatura <- datos[["Temperatura (°C)"]]
humedad <- datos[["Humedad Relativa (%)"]]
lugar <- factor(datos[["Lugar"]])
fecha <- as.Date(datos[["Fecha"]])
hora <- as.character(datos[["Hora"]])
stopifnot(
is.numeric(temperatura),
is.numeric(humedad)
)
# Expresar las horas en minutos desde medianoche.
tiempo <- as.numeric(substr(hora, 1, 2)) * 60 +
as.numeric(substr(hora, 4, 5)) +
as.numeric(substr(hora, 7, 8)) / 60
fecha_texto <- paste(
format(sort(unique(fecha)), "%d/%m/%Y"),
collapse = ", "
)
marcas_hora <- sort(unique(tiempo))
etiquetas_hora <- sprintf(
"%02d:%02d",
as.integer(marcas_hora %/% 60),
as.integer(marcas_hora %% 60)
)El archivo importado contiene 16 observaciones y 9 columnas.
## 'data.frame': 16 obs. of 9 variables:
## $ Punto : int 1 2 3 4 5 6 7 8 9 10 ...
## $ Lugar : chr "Calle Jerónimo Leiton" "Calle Jerónimo Leiton" "Calle Jerónimo Leiton" "Calle Jerónimo Leiton" ...
## $ Fecha : chr "2026-10-16" "2026-10-16" "2026-10-16" "2026-10-16" ...
## $ Hora : chr "10:20:00" "10:25:00" "10:30:00" "10:35:00" ...
## $ Temperatura (°C) : num 21.4 23.3 22 22.6 20.1 20.1 19.4 19.7 18 17.6 ...
## $ Humedad Relativa (%): int 37 30 31 31 32 30 35 33 34 33 ...
## $ Latitud : num -0.198 -0.198 -0.198 -0.198 -0.199 ...
## $ Longitud : num -78.5 -78.5 -78.5 -78.5 -78.5 ...
## $ Observación : chr "Ninguna" "Ninguna" "Ninguna" "Ninguna" ...
datos |>
gt() |>
tab_header(
title = "Datos de temperatura y humedad relativa",
subtitle = paste("UCE —", fecha_texto)
) |>
cols_hide(
columns = c(Latitud, Longitud, Observación)
) |>
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 | |||||
| UCE — 16/10/2026 | |||||
| Punto | Lugar | Fecha | Hora | Temperatura (°C) | Humedad Relativa (%) |
|---|---|---|---|---|---|
| 1 | Calle Jerónimo Leiton | 2026-10-16 | 10:20:00 | 21.4 | 37 |
| 2 | Calle Jerónimo Leiton | 2026-10-16 | 10:25:00 | 23.3 | 30 |
| 3 | Calle Jerónimo Leiton | 2026-10-16 | 10:30:00 | 22.0 | 31 |
| 4 | Calle Jerónimo Leiton | 2026-10-16 | 10:35:00 | 22.6 | 31 |
| 5 | FEUE | 2026-10-16 | 10:45:00 | 20.1 | 32 |
| 6 | FEUE | 2026-10-16 | 10:50:00 | 20.1 | 30 |
| 7 | FEUE | 2026-10-16 | 10:55:00 | 19.4 | 35 |
| 8 | FEUE | 2026-10-16 | 11:00:00 | 19.7 | 33 |
| 9 | Área Verde | 2026-10-16 | 10:20:00 | 18.0 | 34 |
| 10 | Área Verde | 2026-10-16 | 10:25:00 | 17.6 | 33 |
| 11 | Área Verde | 2026-10-16 | 10:30:00 | 17.4 | 33 |
| 12 | Área Verde | 2026-10-16 | 10:35:00 | 17.3 | 33 |
| 13 | FIGEMPA | 2026-10-16 | 10:45:00 | 17.2 | 31 |
| 14 | FIGEMPA | 2026-10-16 | 10:50:00 | 17.2 | 34 |
| 15 | FIGEMPA | 2026-10-16 | 10:55:00 | 17.1 | 33 |
| 16 | FIGEMPA | 2026-10-16 | 11:00:00 | 17.2 | 34 |
Las coordenadas se conservaron en el archivo, pero no se utilizaron para este análisis descriptivo.
tabla_faltantes <- data.frame(
Variable = names(datos),
Datos_faltantes = as.integer(colSums(is.na(datos)))
)
tabla_faltantes |>
gt() |>
cols_label(
Datos_faltantes = "Datos faltantes"
) |>
tab_header(
title = "Revisión de valores faltantes"
)| Revisión de valores faltantes | |
| Variable | Datos faltantes |
|---|---|
| Punto | 0 |
| Lugar | 0 |
| Fecha | 0 |
| Hora | 0 |
| Temperatura (°C) | 0 |
| Humedad Relativa (%) | 0 |
| Latitud | 0 |
| Longitud | 0 |
| Observación | 0 |
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)"
)
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))
)
}estadisticos_temperatura <- data.frame(
Estadistico = indicadores,
Valor = calcular(temperatura)
)
estadisticos_temperatura |>
gt() |>
tab_header(
title = "Tabla 1. Indicadores de temperatura",
subtitle = paste("UCE —", fecha_texto)
) |>
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."
)
) |>
tab_options(
heading.background.color = "#E8F0FA",
column_labels.background.color = "#D6E4F5",
row.striping.include_table_body = TRUE
)| Tabla 1. Indicadores de temperatura | |
| UCE — 16/10/2026 | |
| Estadístico | Valor |
|---|---|
| Número de observaciones | 16 |
| Datos válidos | 16 |
| Datos faltantes | 0 |
| Mínimo | 17.10 |
| Máximo | 23.30 |
| Media | 19.23 |
| Mediana | 18.70 |
| Desviación estándar muestral | 2.16 |
| Amplitud del rango | 6.20 |
| Primer cuartil (Q1) | 17.28 |
| Segundo cuartil (Q2) | 18.70 |
| Tercer cuartil (Q3) | 20.43 |
| Temperatura en °C; conteos sin unidad. Fuente: registros del muestreo. | |
La temperatura media fue de 19.23 °C, con un mínimo de 17.1 °C y un máximo de 23.3 °C.
La desviación estándar muestral fue de 2.16 °C. Este valor describe la dispersión de las mediciones respecto a la media. El resumen reúne observaciones de diferentes lugares y horarios.
estadisticos_humedad <- data.frame(
Estadistico = indicadores,
Valor = calcular(humedad)
)
estadisticos_humedad |>
gt() |>
tab_header(
title = "Tabla 2. Indicadores de humedad relativa",
subtitle = paste("UCE —", fecha_texto)
) |>
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."
)
) |>
tab_options(
heading.background.color = "#E7F3EC",
column_labels.background.color = "#CEE8D8",
row.striping.include_table_body = TRUE
)| Tabla 2. Indicadores de humedad relativa | |
| UCE — 16/10/2026 | |
| Estadístico | Valor |
|---|---|
| Número de observaciones | 16 |
| Datos válidos | 16 |
| Datos faltantes | 0 |
| Mínimo | 30.00 |
| Máximo | 37.00 |
| Media | 32.75 |
| Mediana | 33.00 |
| Desviación estándar muestral | 1.88 |
| Amplitud del rango | 7.00 |
| Primer cuartil (Q1) | 31.00 |
| Segundo cuartil (Q2) | 33.00 |
| Tercer cuartil (Q3) | 34.00 |
| Humedad relativa en %. Desviación y amplitud en puntos porcentuales; conteos sin unidad. Fuente: registros del muestreo. | |
La humedad relativa media fue de 32.75 %. Las mediciones estuvieron entre 30 % y 37 %, con una desviación estándar muestral de 1.88 puntos porcentuales.
En los registros, la calle Jerónimo Leiton presentó temperaturas más altas que el Área Verde durante las horas compartidas de observación. Asimismo, FEUE presentó temperaturas superiores a FIGEMPA en sus horarios compartidos.
Estas diferencias describen el muestreo realizado. Por sí solas no demuestran qué factores ocasionaron las diferencias entre los lugares.
boxplot(
temperatura,
horizontal = TRUE,
col = "plum",
border = "#6A1B9A",
xlab = "Temperatura (°C)",
main = paste(
"Distribución de temperatura en la UCE",
fecha_texto,
sep = "\n"
)
)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 cuatro lugares.
hist(
temperatura,
col = "peachpuff",
border = "white",
xlab = "Temperatura (°C)",
ylab = "Frecuencia absoluta",
main = paste(
"Histograma de temperatura en la UCE",
fecha_texto,
sep = "\n"
),
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.
La humedad relativa presentó variaciones entre registros, con valores entre 30 % y 37 %. Los colores y símbolos permiten identificar el lugar correspondiente a cada medición.
boxplot(
humedad,
horizontal = TRUE,
col = "palegreen",
border = "#238443",
xlab = "Humedad relativa (%)",
main = paste(
"Distribución de humedad relativa en la UCE",
fecha_texto,
sep = "\n"
)
)El 50 % central de las mediciones se encuentra entre 31 % y 34 %, según los cuartiles calculados. La mediana es de 33 %.
hist(
humedad,
col = "lightsteelblue",
border = "white",
xlab = "Humedad relativa (%)",
ylab = "Frecuencia absoluta",
main = paste(
"Histograma de humedad relativa en la UCE",
fecha_texto,
sep = "\n"
),
las = 1
)El histograma permite reconocer los intervalos de humedad relativa que concentran más registros durante el muestreo.
Los resultados describen únicamente los lugares, fecha y horarios incluidos en el archivo. Las 16 observaciones no representan por sí solas las condiciones de toda la universidad durante el día o el año.
No se realizaron pruebas de hipótesis ni análisis causales. La información disponible tampoco permite evaluar el cumplimiento de un criterio de confort o atribuir las diferencias exclusivamente a la vegetación, al tránsito o a la infraestructura.
Para interpretar mejor los resultados se requiere documentar el instrumento, su calibración, la altura del sensor y las condiciones de exposición. Las coordenadas normalizadas del archivo deben confirmarse con la fuente original antes de emplearse en cartografía.
Estos datos permiten describir la temperatura y la humedad relativa
de cuatro sectores de la UCE durante el muestreo.
La temperatura media fue de 19,23 °C y la humedad relativa media fue de
32,75 %.
Se observaron diferencias de temperatura entre lugares durante horarios
compartidos.
No permiten concluir que estas diferencias sean permanentes ni
establecer sus causas.
Para mejorar el monitoreo sería necesario repetir las mediciones y
documentar las condiciones e instrumentos utilizados.