Relación entre la Temperatura Máxima y la Humedad Relativa en el Antisana

1 Carga de datos

library(readr)
dataANTISANA <- read_delim("C:/Users/Usuario/Desktop/TRABAJO DE ESTADISTICA/PDF-EXCEL-QGIS/dataANTISANA.csv", delim = ";", escape_double = FALSE, trim_ws = TRUE)
## Rows: 366 Columns: 10
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ";"
## chr (1): Date
## dbl (9): Longitude, Latitude, Elevation, Max Temperature, Min Temperature, P...
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.

2 Justificación de selección de variables

Se seleccionaron las variables Temperatura Máxima y Humedad Relativa debido a su estrecha relación física dentro del sistema climático de alta montaña. La temperatura controla la capacidad del aire para contener vapor de agua; cuando la temperatura aumenta, el aire puede almacenar mayor cantidad de vapor, lo que modifica directamente los niveles de humedad relativa observados. Esta relación causa–efecto permite analizar cómo los cambios térmicos influyen en el comportamiento del contenido de humedad atmosférica.

Definición de variables: - Variable independiente (X): Temperatura Máxima (Max Temperature). - Variable dependiente (Y): Humedad Relativa (Relative Humidity).

3 Tabla de pares de valores

Se comparan variables por causa y efecto

x <- dataANTISANA$`Max Temperature`
y <- dataANTISANA$`Relative Humidity`

tabla_pares <- data.frame(
  Tem_Max = x, 
  Hume_Rela = y
)

print("Tabla de Pares: Temperatura Máxima (x) y Humedad Relativa (y)")
## [1] "Tabla de Pares: Temperatura Máxima (x) y Humedad Relativa (y)"
head(tabla_pares)
##   Tem_Max Hume_Rela
## 1   16.10      0.93
## 2   15.50      0.96
## 3   11.55      0.98
## 4   12.02      0.99
## 5   11.73      0.98
## 6   12.11      0.97

4 Gráfica de nubes de puntos

library(ggplot2)

ggplot(dataANTISANA, aes(x = `Max Temperature`, y = `Relative Humidity`)) +
  geom_point(color = "darkblue", alpha = 0.6, size = 2) + 
  theme_minimal() +                                      
  labs(title = "Gráfica No.1: Dispersión entre Temperatura Máxima(x)\n              y la Humedad Relativa(y)",
       subtitle = "Estudio: Datos Antisana",
       x = "Tem. Max (°C)",
       y = "Humedad Relativa (0-1)") +
  theme(plot.title = element_text(hjust = 0.5, face = "bold"))

5 Conjetura de un Modelo Exponencial y Cálculo de parámetros

x_exp <- dataANTISANA$`Max Temperature`
y_exp <- dataANTISANA$`Relative Humidity`

modelo_exponencial <- lm(log(y_exp) ~ x_exp)

b_exp <- coef(modelo_exponencial)[2]
a_exp <- exp(coef(modelo_exponencial)[1])

a_txt <- format(a_exp, scientific = FALSE, digits = 6)
b_txt <- round(b_exp, 5)

cat("      PARÁMETROS DEL MODELO EXPONENCIAL\n",
    "Parámetro a (constante): ", a_txt, "\n",
    "Parámetro b (exponente): ", b_txt, "\n",
    "La ecuación es: y =", a_txt, "* e ^ (", b_txt, "* x)\n")
##       PARÁMETROS DEL MODELO EXPONENCIAL
##  Parámetro a (constante):  1.64888 
##  Parámetro b (exponente):  -0.03934 
##  La ecuación es: y = 1.64888 * e ^ ( -0.03934 * x)

6 Sobre escritura del modelo exponencial sobre la nube de puntos

library(ggplot2)
library(ggtext)

a_vis <- format(a_exp, scientific = FALSE, digits = 5)
b_vis <- round(b_exp, 4)

sub_exp <- paste0("Modelo Exponencial: <span style='color:#e67e22;'>**y = ", 
                  a_vis, " · e<sup>", b_vis, "x</sup>**</span>")

ggplot(dataANTISANA, aes(x = `Max Temperature`, y = `Relative Humidity`)) +
  geom_point(color = "#2c3e50", alpha = 0.5, size = 2) +
  
  stat_function(fun = function(x) { a_exp * exp(b_exp * x) }, 
                color = "#e67e22", size = 1.3) +
  
  theme_minimal() +
  labs(title = "Gráfica No.2: Comparación realidad y modelo entre Temperatura Máxima
         y la Humedad Relativa)",
       subtitle = sub_exp,
       x = "Temperatura Máxima (°C)",
       y = "Humedad Relativa (0-1)") +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
    plot.subtitle = element_markdown(hjust = 0.5, size = 11),
    axis.title = element_text(face = "bold")
  )

7 Test de Pearson para el Modelo Exponencial

test_p_exp <- cor.test(x_exp, log(y_exp), method = "pearson")

r_exp <- as.numeric(test_p_exp$estimate)
r2_exp_val <- r_exp^2

cat("      VALIDACIÓN MATEMÁTICA: MODELO EXPONENCIAL\n",
    " Coeficiente de correlación (r): ", round(r_exp, 4), "\n",
    " Relación porcentual:            ", round(r_exp * 100, 2), "%\n",
    " Coeficiente de determinación:   ", round(r2_exp_val, 4), "\n")
##       VALIDACIÓN MATEMÁTICA: MODELO EXPONENCIAL
##   Coeficiente de correlación (r):  -0.85 
##   Relación porcentual:             -85 %
##   Coeficiente de determinación:    0.7224

8 Tabla Resumen: Modelo Exponencial

library(gt)
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
fuerza_r <- case_when(
  abs(r_exp) >= 0.7 ~ "Alta",
  abs(r_exp) >= 0.4 ~ "Moderada",
  TRUE ~ "Baja"
)

fuerza_r2 <- case_when(
  r2_exp_val >= 0.7 ~ "Muy Alta",
  r2_exp_val >= 0.5 ~ "Media-Alta",
  r2_exp_val >= 0.3 ~ "Moderada",
  TRUE ~ "Baja"
)

color_tabla <- case_when(
  r2_exp_val >= 0.5 ~ "#27ae60", 
  r2_exp_val >= 0.3 ~ "#f1c40f", 
  TRUE ~ "#e74c3c"
)

resumen_exp_df <- data.frame(
  conjetura = "Exponencial",
  ecuacion = sprintf("y = %.4f * e^(%.4f * x)", a_exp, b_exp),
  correlacion = sprintf("%.2f (%s)", r_exp*100, fuerza_r),
  determinacion = sprintf("%.2f (%s)", r2_exp_val*100, fuerza_r2)
)

resumen_exp_df %>%
  gt() %>%
  tab_header(
    title = md("**CONCLUSIONES Y ESTADÍSTICOS: MODELO EXPONENCIAL**"),
    subtitle = "Variables: Temperatura Máxima y Humedad Relativa en el Antisana"
  ) %>%
  cols_label(
    conjetura = "Modelo",
    ecuacion = html("Ecuación (y = a &middot; e<sup>bx</sup>)"),
    correlacion = "Correlación (r %)",
    determinacion = html("Determinación (R<sup>2</sup>%)")
  ) %>%
  tab_source_note(source_note = "Autor: Grupo 3") %>%
  tab_style(
    style = cell_text(color = color_tabla, weight = "bold"),
    locations = cells_body(columns = c(correlacion, determinacion))
  ) %>%
  tab_options(
    heading.background.color = "#2c3e50",
    column_labels.font.weight = "bold",
    table.width = pct(100)
  ) %>%
  tab_style(
    style = cell_text(color = "white"),
    locations = cells_title(groups = c("title", "subtitle"))
  ) %>%
  cols_align(align = "center")
CONCLUSIONES Y ESTADÍSTICOS: MODELO EXPONENCIAL
Variables: Temperatura Máxima y Humedad Relativa en el Antisana
Modelo Ecuación (y = a · ebx) Correlación (r %) Determinación (R2%)
Exponencial y = 1.6489 * e^(-0.0393 * x) -85.00 (Alta) 72.24 (Muy Alta)
Autor: Grupo 3

9 Conclusiones: Temperatura Máxima vs Humedad

rango_min <- min(x_exp, na.rm = TRUE)
rango_max <- max(x_exp, na.rm = TRUE)

temp_test <- round(mean(x_exp, na.rm = TRUE), 1)
pred_test <- a_exp * exp(b_exp * temp_test)

cat(paste0(
  "Interpretación:\n",
  "El modelo exponencial revela una relación inversa significativa: por cada grado Celsius que aumenta la **Temperatura Máxima**, la **Humedad Relativa** decrece a una tasa constante de aproximadamente **", round(abs(b_exp) * 100, 2), "%**. Este ajuste explica el **", round(r2_exp_val * 100, 2), "%** de la variabilidad climática observada en la estación.\n\n",
  
  "Validez y Restricciones:\n",
  "Para asegurar la fiabilidad de las predicciones, el uso de esta ecuación debe restringirse al dominio de los datos observados en el Antisana. El modelo es válido para temperaturas máximas comprendidas entre los **", rango_min, " °C** y los **", rango_max, " °C**. Fuera de este intervalo, el modelo entra en fase de extrapolación y pierde precisión física.\n\n",
  
  "Análisis Físico:\n",
  "Este descenso exponencial se debe a que el aire caliente aumenta su capacidad de carga de vapor de agua. Si la cantidad de agua absoluta no varía, un incremento térmico reduce drásticamente la saturación relativa. Por ejemplo, a una temperatura de **", temp_test, " °C**, el modelo estima una humedad de **", round(pred_test * 100, 2), "%**.\n\n",
  
  "Comparativa de Ajuste:\n",
  "La correlación porcentual alcanzada del **", round(r_exp * 100, 2), "%** supera la tendencia lineal simple, confirmando que la dinámica entre el calor máximo y la humedad en ecosistemas de alta montaña sigue un comportamiento curvo y no proporcional."
))

Interpretación: El modelo exponencial revela una relación inversa significativa: por cada grado Celsius que aumenta la Temperatura Máxima, la Humedad Relativa decrece a una tasa constante de aproximadamente 3.93%. Este ajuste explica el 72.24% de la variabilidad climática observada en la estación.

Validez y Restricciones: Para asegurar la fiabilidad de las predicciones, el uso de esta ecuación debe restringirse al dominio de los datos observados en el Antisana. El modelo es válido para temperaturas máximas comprendidas entre los 10.32 °C y los 23.79 °C. Fuera de este intervalo, el modelo entra en fase de extrapolación y pierde precisión física.

Análisis Físico: Este descenso exponencial se debe a que el aire caliente aumenta su capacidad de carga de vapor de agua. Si la cantidad de agua absoluta no varía, un incremento térmico reduce drásticamente la saturación relativa. Por ejemplo, a una temperatura de 15.7 °C, el modelo estima una humedad de 88.91%.

Comparativa de Ajuste: La correlación porcentual alcanzada del -85% supera la tendencia lineal simple, confirmando que la dinámica entre el calor máximo y la humedad en ecosistemas de alta montaña sigue un comportamiento curvo y no proporcional.