Se procede a la importación del dataset mundial depurado.
Justificación Técnica: Debido a que el archivo de origen utiliza la coma (,) como separador decimal, se configura el motor de lectura mediante locale(decimal_mark = “,”). Esto garantiza que variables como la temperatura y la latitud sean tratadas como vectores numéricos continuos, evitando errores en los cálculos de correlación posteriores.
Dataset <- read_delim("Dataset_Mundial_Final.csv",
delim = ";",
escape_double = FALSE,
trim_ws = TRUE,
locale = locale(decimal_mark = ","))
Para este estudio se han seleccionado la Latitud Absoluta y la Temperatura Ambiente.
Justificación: El rendimiento de un módulo fotovoltaico está inversamente relacionado con su temperatura de operación (debido al coeficiente de temperatura del silicio). Físicamente, la temperatura ambiente global sigue un gradiente latitudinal: a mayor distancia del Ecuador, menor es la radiación térmica absorbida por la atmósfera. Modelar esta relación es fundamental para la ingeniería, ya que permite estimar las necesidades de refrigeración y la degradación esperada de los equipos basándose únicamente en su posición geográfica.
Variable independiente (X): Latitud Absoluta (°).
Variable dependiente (Y): Temperatura Ambiente (°C).
Se genera una muestra de los datos procesados donde se observa la correspondencia entre la ubicación y el clima térmico.
# 1. Procesamiento de datos (Creamos el objeto tabla_pares aquí mismo)
Dataset_Clean <- Dataset %>%
mutate(abs_lat = abs(as.numeric(latitude)),
temp = as.numeric(ambient_temperature)) %>%
filter(!is.na(abs_lat), !is.na(temp)) %>%
filter(is.finite(abs_lat), is.finite(temp)) %>%
select(abs_lat, temp)
x <- Dataset_Clean$abs_lat
y <- Dataset_Clean$temp
tabla_pares <- data.frame(Latitud_Abs = x, Temp_Ambiente = y)
# 2. Muestra de la tabla con formato Gris #F0F0F0
head(tabla_pares, 10) %>% gt() %>%
tab_header(title = md("**TABLA DE PARES DE VALORES TÉRMICOS**")) %>%
cols_label(Latitud_Abs = "Latitud Absoluta (°)", Temp_Ambiente = "Temp. Ambiente (°C)") %>%
cols_align("center") %>%
tab_options(column_labels.background.color = "#F0F0F0") %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_column_labels()
)
| TABLA DE PARES DE VALORES TÉRMICOS | |
| Latitud Absoluta (°) | Temp. Ambiente (°C) |
|---|---|
| 35.078 | 14.402 |
| 36.714 | 17.875 |
| 34.407 | 21.315 |
| 33.768 | 8.857 |
| 31.654 | 19.636 |
| 31.654 | 19.636 |
| 33.429 | 16.209 |
| 36.658 | 17.139 |
| 36.660 | 17.331 |
| 34.373 | 15.923 |
Justificación Gráfica: La visualización de la nube de puntos permite identificar preliminarmente la tendencia del fenómeno. Se espera observar una pendiente negativa, confirmando que la temperatura desciende conforme aumenta la latitud.
ggplot(Dataset_Clean, aes(x = abs_lat, y = temp)) +
geom_point(color = "#2c3e50", alpha = 0.15, size = 1) +
theme_minimal() +
labs(title = "Gráfica No.1: Dispersión Latitud(x) entre Temperatura(y)",
subtitle = "Análisis de 58,978 emplazamientos fotovoltaicos",
x = "Latitud Absoluta (°)",
y = "Temperatura Ambiente (°C)") +
theme(plot.title = element_text(hjust = 0.5, face = "bold", size = 14))
Justificación del Modelo: Dado el comportamiento físico del clima planetario, se conjetura que la relación entre ambas variables es de tipo Lineal Inversa. La aplicación de mínimos cuadrados nos permite obtener la ecuación que mejor describe este gradiente térmico.
modelo_lin <- lm(temp ~ abs_lat, data = Dataset_Clean)
m_coef <- coef(modelo_lin)[2]
b_coef <- coef(modelo_lin)[1]
cat(" PARÁMETROS DEL MODELO TÉRMICO\n",
"Pendiente (m): ", round(m_coef, 5), "\n",
"Intercepto (b): ", round(b_coef, 5), "\n",
"La ecuación es: y =", round(m_coef, 4), "* x + (", round(b_coef, 4), ")\n")
## PARÁMETROS DEL MODELO TÉRMICO
## Pendiente (m): -0.42811
## Intercepto (b): 30.29188
## La ecuación es: y = -0.4281 * x + ( 30.2919 )
Justificación de Optimización: Para mejorar la precisión de la línea de tendencia y la estética visual del reporte, aplicamos un filtro de Rango Intercuartílico (IQR). Esto elimina ruidos provocados por microclimas extremos o errores puntuales de carga, permitiendo que la “recta de enfriamiento latitudinal” sea el foco principal de la inferencia.
stats_temp <- boxplot.stats(Dataset_Clean$temp)
data_optimizada <- Dataset_Clean %>%
filter(temp >= stats_temp$stats[1] & temp <= stats_temp$stats[5])
test_p <- cor.test(data_optimizada$abs_lat, data_optimizada$temp)
r_val <- as.numeric(test_p$estimate)
cat(" RESULTADOS TRAS OPTIMIZACIÓN \n",
" Nuevo Coeficiente r: ", round(r_val, 4), "\n",
" Relación Porcentual: ", round(r_val * 100, 2), "%\n")
## RESULTADOS TRAS OPTIMIZACIÓN
## Nuevo Coeficiente r: -0.8351
## Relación Porcentual: -83.51 %
Justificación Visual: Al superponer la recta de regresión sobre los datos optimizados, validamos visualmente la capacidad predictiva del modelo. La línea azul representa la “Temperatura Teórica” esperada para cualquier latitud del mundo.
sub_vis <- paste0("Modelo Térmico: <span style='color:#3498db;'>**y = ",
round(m_coef, 3), " · x + ", round(b_coef, 3), "**</span>")
ggplot(data_optimizada, aes(x = abs_lat, y = temp)) +
geom_point(color = "#34495e", alpha = 0.1, size = 1) +
geom_smooth(method = "lm", color = "#3498db", size = 1.3, se = FALSE) +
theme_minimal() +
labs(title = "Gráfica No.2: Gradiente Térmico Latitudinal",
subtitle = sub_vis,
x = "Latitud Absoluta (°)",
y = "Temperatura Ambiente (°C)") +
theme(
plot.title = element_text(hjust = 0.5, face = "bold"),
plot.subtitle = element_markdown(hjust = 0.5),
axis.title = element_text(face = "bold")
)
Justificación: La tabla resume los indicadores de bondad de ajuste. El coeficiente de determinación (\(R^2\)) cuantifica qué porcentaje de la variabilidad térmica es explicada exclusivamente por la ubicación geográfica.
# Tabla Resumen con formato Gris #F0F0F0 y validación de Pearson
r_abs <- abs(r_val)
test_status <- ifelse(r_abs >= 0.75, "Aprobado (Fuerte)", "Aprobado con Observaciones")
color_semaforo <- ifelse(test_status == "Aprobado (Fuerte)", "#27ae60", "#f1c40f")
resumen_df <- data.frame(
conjetura = "Lineal Inversa",
ecuacion = sprintf("y = %.4f + (%.4f)x", b_coef, m_coef),
test = sprintf("%s (%s%%)", test_status, round(r_val * 100, 2)),
determinacion = sprintf("%.4f (Fuerte)", r_val^2)
)
resumen_df %>% gt() %>%
tab_header(
title = md("**CONCLUSIONES Y ESTADÍSTICOS: MODELO TÉRMICO**"),
subtitle = "Variables: Latitud y Temperatura Ambiente"
) %>%
cols_label(
conjetura = "Tipo de Modelo",
ecuacion = html("Ecuación (ŷ = a + bx)"),
test = "Validación Pearson",
determinacion = html("R<sup>2</sup> (Fuerza)")
) %>%
cols_align("center") %>%
tab_options(column_labels.background.color = "#F0F0F0") %>%
tab_style(
style = cell_text(weight = "bold"),
locations = cells_column_labels()
) %>%
tab_style(
style = cell_text(color = color_semaforo, weight = "bold"),
locations = cells_body(columns = c(test, determinacion))
)
| CONCLUSIONES Y ESTADÍSTICOS: MODELO TÉRMICO | |||
| Variables: Latitud y Temperatura Ambiente | |||
| Tipo de Modelo | Ecuación (ŷ = a + bx) | Validación Pearson | R2 (Fuerza) |
|---|---|---|---|
| Lineal Inversa | y = 30.2919 + (-0.4281)x | Aprobado (Fuerte) (-83.51%) | 0.6974 (Fuerte) |
x_bar <- mean(Dataset_Clean$temp)
sigma_m <- sd(Dataset_Clean$temp)
n_val <- nrow(Dataset_Clean)
error_se <- sigma_m / sqrt(n_val)
margen <- 1.96 * error_se
Entre la Latitud Absoluta y la Temperatura Ambiente mundial existe una fuerte relación de tipo Lineal Inversa, cuya ecuación matemática está representada por \(\hat{y} = 30.2919 + (-0.4281)x\), siendo ‘x’ la Latitud Absoluta en ° y ‘y’ la temperatura ambiente estimada en °C.El coeficiente de correlación de Pearson es de -83.51%, lo que confirma que el modelo tiene un ajuste sólido para la toma de decisiones gerenciales y técnicas en la fase de prospección.Por ejemplo, para una latitud de 20°, se estima una temperatura ambiente (\(\hat{y}\)) de 21.73 °C.Finalmente, gracias al Teorema del Límite Central, afirmamos con un 95% de confianza que la temperatura promedio poblacional de los emplazamientos solares se sitúa en 14.59 ± 0.05 °C, con una desviación estándar muestral de 5.77 °C, consolidando un valor de referencia crítico para la ingeniería de refrigeración fotovoltaica global.