1 Carga de Datos

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 = ","))

2 Justificación de selección de variables

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).

3 Tabla de pares de valores

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

4 Gráfica Nube de Puntos

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))

5 Conjetura del Modelo Lineal y Cálculo de parámetros

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 )

6 Optimización de la Gráfica (Filtro de Outliers)

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 %

7 Sobre-escritura del modelo sobre la nube de puntos

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")
  )

8 Tabla Resumen y Validación

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

9 Conclusiones

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.