Se procede a la importación del dataset mundial para el análisis del impacto de la humedad en el recurso energético solar.
Justificación: El vapor de agua suspendido en la atmósfera es uno de los principales agentes de atenuación de la radiación solar. A medida que la Humedad Relativa aumenta, los fenómenos de dispersión y absorción se intensifican. Al acercarse al punto de saturación, la formación de nubosidad causa una caída no lineal en la captación de energía. Un modelo Polinómico de Segundo Grado captura esta zona de “inflexión” donde la pérdida de energía se acelera, siendo vital para la ingeniería energética.
Variable independiente (X): Humedad Relativa (%).
Variable dependiente (Y): Irradiación Global Horizontal - GHI (kWh/m²/día).
Tabla No.1: Muestra de datos originales para Humedad e Irradiación.
Dataset_Poly <- dataSOLAR %>%
mutate(x = as.numeric(humidity),
y = as.numeric(ghi)) %>%
filter(!is.na(x), !is.na(y), x > 0) %>%
select(x, y)
head(Dataset_Poly, 10) %>%
gt() %>%
tab_header(title = md("**TABLA DE PARES DE VALORES (DATOS BASE)**")) %>%
cols_label(x = "Humedad Relativa (%)", y = "Irradiación GHI (kWh/m²/día)") %>%
cols_align("center") %>%
tab_options(column_labels.background.color = "#F0F0F0",
column_labels.font.weight = "bold")| TABLA DE PARES DE VALORES (DATOS BASE) | |
| Humedad Relativa (%) | Irradiación GHI (kWh/m²/día) |
|---|---|
| 47.743 | 5.824 |
| 42.305 | 5.579 |
| 36.396 | 5.805 |
| 37.344 | 6.749 |
| 24.226 | 6.624 |
| 24.226 | 6.624 |
| 32.352 | 6.664 |
| 52.803 | 5.582 |
| 52.803 | 5.600 |
| 32.838 | 6.484 |
ggplot(Dataset_Poly, aes(x = x, y = y)) +
geom_point(color = "darkblue", alpha = 0.2, size = 1.5) +
theme_minimal() +
labs(title = "Gráfica No.1: Dispersión entre Humedad(x) e Irradiación GHI(y)",
subtitle = "Estudio: Efecto Higrométrico en la Radiación Solar",
x = "Humedad Relativa (%)",
y = "Irradiación GHI (kWh/m²/día)") +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))modelo_poly2 <- lm(y ~ poly(x, 2, raw = TRUE), data = Dataset_Poly)
coeffs2 <- coef(modelo_poly2)
r2_poly2 <- summary(modelo_poly2)$r.squared
r_val <- sqrt(r2_poly2)
# Definimos b0_f, b1_f y b2_f para que coincidan abajo
b0_f <- format(round(coeffs2[1], 4), scientific = FALSE)
b1_f <- format(round(coeffs2[2], 4), scientific = FALSE)
b2_f <- format(round(coeffs2[3], 6), scientific = FALSE)
cat(" RESULTADOS MODELO POLINOMICO (GRADO 2) \n",
" Beta 0 (Constante): ", b0_f, "\n",
" Beta 1 (Lineal): ", b1_f, "\n",
" Beta 2 (Cuadrático):", b2_f, "\n",
" Coeficiente de determinación R²:", round(r2_poly2, 4), "\n",
"----------------------------------------------------\n",
" La ecuación es: \n",
" y =", b0_f, " + (", b1_f, " * x) + (", b2_f, " * x²)\n")## RESULTADOS MODELO POLINOMICO (GRADO 2)
## Beta 0 (Constante): 7.0754
## Beta 1 (Lineal): -0.0276
## Beta 2 (Cuadrático): -0.000147
## Coeficiente de determinación R²: 0.3692
## ----------------------------------------------------
## La ecuación es:
## y = 7.0754 + ( -0.0276 * x) + ( -0.000147 * x²)
# Corrección de b1_l a b1_f para evitar el error de objeto no encontrado
sub_poly2 <- paste0("Modelo Cuadrático: <span style='color:#e74c3c;'>**y = ",
b0_f, " + (", b1_f, " · x) + (", b2_f, " · x<sup>2</sup>)**</span>")
ggplot(Dataset_Poly, aes(x = x, y = y)) +
geom_point(color = "darkblue", alpha = 0.3, size = 1.5) +
stat_function(fun = function(x) {
coeffs2[1] + coeffs2[2]*x + coeffs2[3]*x^2
}, color = "#e74c3c", size = 1.3) +
theme_minimal() +
labs(title = "Gráfica No.2: Comparación Realidad vs Modelo Polinómico",
subtitle = sub_poly2,
x = "Humedad Relativa (%)",
y = "Irradiación GHI (kWh/m²/día)") +
theme(
plot.title = element_text(hjust = 0.5, face = "bold", size = 14),
plot.subtitle = element_markdown(hjust = 0.5),
axis.title = element_text(face = "bold")
)Tabla No.2: Resultados de validación y fuerza del modelo polinómico.
# 1. Definición de etiquetas según la fuerza de r
r_etiqueta <- case_when(
abs(r_val) < 0.3 ~ "Baja",
abs(r_val) < 0.7 ~ "Media",
TRUE ~ "Alta"
)
# 2. Creación del Data Frame
resumen_df <- data.frame(
conjetura = "Polinómico Grado 2",
ecuacion = sprintf("y = %.2f + (%.4f)x + (%.6f)x²", coeffs2[1], coeffs2[2], coeffs2[3]),
test = paste0("Aprobado (r = ", round(r_val * 100, 2), "%)"),
determinacion = sprintf("%.4f (%s)", r2_poly2, r_etiqueta)
)
# 3. Generación de la tabla
resumen_df %>%
gt() %>%
tab_header(
title = md("**CONCLUSIONES Y ESTADÍSTICOS**"),
subtitle = "Variables: Humedad Relativa e Irradiación GHI"
) %>%
cols_label(
conjetura = "Conjetura del Modelo",
ecuacion = html("Ecuación (ŷ = β<sub>0</sub> + β<sub>1</sub>x + β<sub>2</sub>x<sup>2</sup>)"),
test = "Test de Pearson",
determinacion = html("Coeficiente de Determinación (R<sup>2</sup>)")
) %>%
tab_source_note(source_note = "Autor: Grupo 1") %>%
tab_options(
column_labels.background.color = "#F0F0F0", # Etiquetas en gris
column_labels.font.weight = "bold",
table.width = pct(100)
) %>%
cols_align(align = "center") %>%
# Estilo verde para resaltar el éxito del modelo
tab_style(
style = cell_text(color = "#27ae60", weight = "bold"),
locations = cells_body(
columns = c(test, determinacion),
rows = grepl("Aprobado", test)
)
)| CONCLUSIONES Y ESTADÍSTICOS | |||
| Variables: Humedad Relativa e Irradiación GHI | |||
| Conjetura del Modelo | Ecuación (ŷ = β0 + β1x + β2x2) | Test de Pearson | Coeficiente de Determinación (R2) |
|---|---|---|---|
| Polinómico Grado 2 | y = 7.08 + (-0.0276)x + (-0.000147)x² | Aprobado (r = 60.76%) | 0.3692 (Media) |
| Autor: Grupo 1 | |||
Entre la Humedad Relativa y la Irradiación GHI mundial existe una Media relación de tipo Polinómico Grado 2, cuya ecuación matemática está representada por \(\hat{y} = 7.0754 + (-0.0276)x + (-0.000147)x^2\), siendo ‘x’ la humedad relativa en porcentaje (%) y ‘y’ la irradiación GHI estimada en \(kWh/m^2/día\).
El coeficiente de correlación de Pearson es de 60.76%, lo que confirma un ajuste robusto para los datos recolectados en el dataset global. Esta relación permite identificar el punto crítico de saturación de vapor de agua donde la captación de energía solar comienza a decrecer de forma acelerada debido a la dispersión radiativa.
Restricción: Es fundamental señalar que la aplicación de este modelo es funcional únicamente dentro de los rangos físicos observados, evitando extrapolaciones en condiciones de humedad extrema donde la formación de nubosidad total (overcast) podría alterar la naturaleza parabólica del modelo.Finalmente, gracias al Teorema del Límite Central, al trabajar con una muestra de gran escala, afirmamos con un 95% de confianza que los promedios poblacionales siguen esta tendencia, permitiendo una predicción técnica confiable.