1 IDENTIFICACIÓN Y JUSTIFICACIÓN DE LA VARIABLE

Variable de Estudio: Irradiación Global Horizontal (GHI en \(kWh/m^2/día\)).

Se determina que esta variable es Cuantitativa Continua. El GHI es el factor determinante para el dimensionamiento de sistemas fotovoltaicos.

Estrategia de Refinamiento y Modelado Tri-Híbrido: Debido a la naturaleza climática global, la radiación no sigue un único patrón. Se opta por una Triple Estratificación para capturar tres realidades energéticas distintas:

Fase de Potencial Inicial (Zona 1): Proyectos en zonas con nubosidad frecuente. Se aplica un Modelo Log-Normal Reflexivo para capturar el crecimiento hacia el umbral comercial.

Franja de Estabilidad Global (Zona 2): El núcleo de la muestra mundial. Se utiliza un Modelo Normal debido a la simetría detectada en el núcleo de la muestra.

Recurso Premium (Zona 3): Emplazamientos de alto rendimiento. Se aplica un Modelo Log-Normal Estándar para caracterizar la “cola larga” de sitios con radiación excepcional.

2 CARGA DE DATOS Y LIBRERÍAS

# Carga del archivo original
Datos <- read.csv("Dataset_Mundial_Final.csv", sep = ";", dec = ",")

# Extraemos GHI y filtramos para el rango de operación comercial (2.7 a 8.5)
ghi_full <- na.omit(as.numeric(Datos$ghi))
ghi_variable <- ghi_full[ghi_full >= 2.7 & ghi_full <= 8.5]
n_total <- length(ghi_variable)

3 TABLA DE DISTRIBUCIÓN DE FRECUENCIA

La tabla se estructuró aplicando la regla de Sturges con una ampliación de intervalos para garantizar que la transición entre los tres modelos sea estadísticamente visible y precisa.

# 1. CÁLCULOS ESTADÍSTICOS
K_ghi <- floor(1 + 3.322 * log10(n_total)) + 4
breaks_ghi <- seq(min(ghi_variable), max(ghi_variable), length.out = K_ghi + 1)

ni <- as.vector(table(cut(ghi_variable, breaks = breaks_ghi, right = FALSE, include.lowest = TRUE)))
hi <- (ni / n_total) * 100

# 2. CONSTRUCCIÓN DEL DATAFRAME
df_tabla_ghi <- data.frame(
  Li = breaks_ghi[1:K_ghi], 
  Ls = breaks_ghi[2:(K_ghi+1)], 
  MC = (breaks_ghi[1:K_ghi] + breaks_ghi[2:(K_ghi+1)]) / 2,
  ni = ni, 
  hi = hi,
  Ni_asc = cumsum(ni), 
  Ni_desc = rev(cumsum(rev(ni))),
  Hi_asc = cumsum(hi), 
  Hi_desc = rev(cumsum(rev(hi)))
)

# 3. GENERACIÓN DE LA TABLA GT CON TOTAL Y AUTOR
df_tabla_ghi %>% 
  mutate(across(everything(), ~as.numeric(.))) %>% # Asegurar que sean números
  mutate(across(c(Li, Ls, MC, hi, Hi_asc, Hi_desc), ~round(., 2))) %>%
  mutate(across(everything(), as.character)) %>%
  rbind(c("TOTAL", "-", "-", as.character(sum(ni)), "100", "-", "-", "-", "-")) %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1 de Distribución de Frecuencias de GHI (kWh/m²) de las Plantas Solares**"),
    subtitle = "Análisis de Irradiación - Universidad Central del Ecuador"
  ) %>%
  tab_source_note(source_note = "Autor: Carlos Ramirez") %>%
  cols_label(
    Li = "Lim. Inf", Ls = "Lim. Sup", MC = "Marca Clase", 
    ni = "ni", hi = "hi (%)", Ni_asc = "Ni Asc.", 
    Ni_desc = "Ni Desc.", Hi_asc = "Hi Asc. (%)", Hi_desc = "Hi Desc. (%)"
  ) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_style(
    style = list(cell_fill(color = "#F2F2F2"), cell_text(weight = "bold")), 
    locations = cells_column_labels()
  ) %>%
  tab_options(
    table.width = pct(100),
    column_labels.background.color = "#F0F0F0",
    heading.title.font.size = px(16)
  )
Tabla N°1 de Distribución de Frecuencias de GHI (kWh/m²) de las Plantas Solares
Análisis de Irradiación - Universidad Central del Ecuador
Lim. Inf Lim. Sup Marca Clase ni hi (%) Ni Asc. Ni Desc. Hi Asc. (%) Hi Desc. (%)
2,72 2,98 2,85 176 0,3 176 58973 0,3 100
2,98 3,25 3,12 899 1,52 1075 58797 1,82 99,7
3,25 3,52 3,38 5199 8,82 6274 57898 10,64 98,18
3,52 3,78 3,65 6554 11,11 12828 52699 21,75 89,36
3,78 4,05 3,92 7532 12,77 20360 46145 34,52 78,25
4,05 4,32 4,18 5222 8,85 25582 38613 43,38 65,48
4,32 4,58 4,45 8084 13,71 33666 33391 57,09 56,62
4,58 4,85 4,72 5680 9,63 39346 25307 66,72 42,91
4,85 5,12 4,98 3312 5,62 42658 19627 72,33 33,28
5,12 5,38 5,25 3885 6,59 46543 16315 78,92 27,67
5,38 5,65 5,52 4971 8,43 51514 12430 87,35 21,08
5,65 5,92 5,78 3561 6,04 55075 7459 93,39 12,65
5,92 6,18 6,05 2305 3,91 57380 3898 97,3 6,61
6,18 6,45 6,32 724 1,23 58104 1593 98,53 2,7
6,45 6,72 6,58 395 0,67 58499 869 99,2 1,47
6,72 6,98 6,85 193 0,33 58692 474 99,52 0,8
6,98 7,25 7,12 157 0,27 58849 281 99,79 0,48
7,25 7,51 7,38 55 0,09 58904 124 99,88 0,21
7,51 7,78 7,65 34 0,06 58938 69 99,94 0,12
7,78 8,05 7,91 35 0,06 58973 35 100 0,06
TOTAL - - 58973 100 - - - -
Autor: Carlos Ramirez

4 ANÁLISIS GRÁFICO

El histograma tri-modal permite visualizar la segmentación del recurso solar global, identificando claramente el paso del potencial inicial al recurso premium.

par(mar = c(6, 5, 4, 2))
h_ghi <- hist(ghi_variable, breaks = breaks_ghi, plot = FALSE)
h_ghi$counts <- (h_ghi$counts / n_total) * 100

plot(h_ghi, main = "Gráfica N°1: Distribución de Frecuencia de Plantas Solares por GHI",
xlab = "GHI (kWh/m2/d\u00eda)", ylab = "Frecuencia Relativa (%)", col = "#EEC900", border = "black", axes = FALSE)
axis(2, las = 2); axis(1, at = seq(2.5, 8.5, 0.5))
abline(v = c(4.0, 5.0), col = "#C0392B", lwd = 3, lty = 2)
grid(col = "#D7DBDD", lty = "dotted")

5 ESTRATIFICACIÓN Y VALIDACIÓN POR REGÍMENES

z1 <- ghi_variable[ghi_variable < 4.0]
z2 <- ghi_variable[ghi_variable >= 4.0 & ghi_variable < 5.0]
z3 <- ghi_variable[ghi_variable >= 5.0]

c1 <- max(z1) + 0.1
fit1 <- MASS::fitdistr(c1 - z1, "lognormal")
mu2 <- mean(z2); sd2 <- sd(z2)
fit3 <- MASS::fitdistr(z3, "lognormal")

5.1 Régimen de Potencial Inicial (Zona 1: 2.7 - 4.0 kWh)

Justificación: En este intervalo, la densidad de proyectos crece conforme nos acercamos al umbral de rentabilidad. Dado que una Log-Normal estándar solo modela caídas a la derecha, aplicamos la transformación reflexiva. Esto permite capturar el comportamiento de “llenado” de datos en zonas con radiación moderada, logrando un ajuste superior.

h1 <- hist(z1, breaks = 10, plot = FALSE)
h1$counts <- (h1$counts / length(z1)) * 100
plot(h1, main = "Gráfica N°2: Potencial Inicial (Log-Normal Reflexivo)",
   xlab = "GHI (kWh/m²/día)", ylab = "Frecuencia Relativa (%)",
   col = "#EEC900", border = "black", axes = FALSE)
x_c1 <- seq(min(z1), 4.0, length.out = 100)
y_c1 <- dlnorm(c1 - x_c1, fit1$estimate["meanlog"], fit1$estimate["sdlog"]) * (h1$breaks[2]-h1$breaks[1]) * 100
lines(x_c1, y_c1, col = "#C0392B", lwd = 3)
axis(1); axis(2, las = 2)

5.2 Régimen de Estabilidad Global (Zona 2: 4.0 - 5.0 kWh)

Justificación: Representa el núcleo de la muestra mundial. En esta franja, el recurso solar deja de presentar asimetrías marcadas y se comporta de forma equilibrada. Por ello, el Modelo Normal es el más apto, permitiendo definir parámetros de diseño estándar basados en la simetría de la campana de Gauss.

h2 <- hist(z2, breaks = 10, plot = FALSE)
h2$counts <- (h2$counts / length(z2)) * 100
plot(h2, main = "Gráfica N°3: Estabilidad Global (Modelo Normal)",
xlab = "GHI (kWh/m²/día)", ylab = "Frecuencia Relativa (%)",
col = "#EEC900", border = "black", axes = FALSE)
x_c2 <- seq(4.0, 5.0, length.out = 100)
y_c2 <- dnorm(x_c2, mu2, sd2) * (h2$breaks[2]-h2$breaks[1]) * 100
lines(x_c2, y_c2, col = "#C0392B", lwd = 3)
axis(1); axis(2, las = 2)

5.3 Régimen de Recurso Premium (Zona 3: > 5.0 kWh)

Justificación: Corresponde a los emplazamientos con radiación excepcional. Físicamente, estos valores son más escasos y se distribuyen siguiendo una “cola larga” hacia la derecha. El Modelo Log-Normal Estándar es la herramienta natural para describir este decaimiento, caracterizando los sitios con mayor potencial energético del planeta.

h3 <- hist(z3, breaks = 10, plot = FALSE)
h3$counts <- (h3$counts / length(z3)) * 100
plot(h3, main = "Gráfica N°4: Recurso Premium (Log-Normal Estándar)",
   xlab = "GHI (kWh/m²/día)", ylab = "Frecuencia Relativa (%)",
   col = "#EEC900", border = "black", axes = FALSE)
x_c3 <- seq(5.0, max(z3), length.out = 100)
y_c3 <- dlnorm(x_c3, fit3$estimate["meanlog"], fit3$estimate["sdlog"]) * (h3$breaks[2]-h3$breaks[1]) * 100
lines(x_c3, y_c3, col = "#C0392B", lwd = 3)
axis(1); axis(2, las = 2)

6 TABLA RESUMEN DE BONDAD DE AJUSTE

# 1. CÁLCULO DE PEARSON POR REGÍMENES (GHI)

# Zona 1: Log-Normal Reflexiva
h1_ghi <- hist(z1, breaks = 10, plot = FALSE)
teorico1_ghi <- dlnorm(c1 - h1_ghi$mids, fit1$estimate[1], fit1$estimate[2])
pearson1_ghi <- cor(h1_ghi$counts, teorico1_ghi) * 100

# Zona 2: Modelo Normal
h2_ghi <- hist(z2, breaks = 10, plot = FALSE)
teorico2_ghi <- dnorm(h2_ghi$mids, mu2, sd2)
pearson2_ghi <- cor(h2_ghi$counts, teorico2_ghi) * 100

# Zona 3: Log-Normal Estándar
h3_ghi <- hist(z3, breaks = 10, plot = FALSE)
teorico3_ghi <- dlnorm(h3_ghi$mids, fit3$estimate[1], fit3$estimate[2])
pearson3_ghi <- cor(h3_ghi$counts, teorico3_ghi) * 100

# 2. CREACIÓN DEL DATAFRAME DE RESUMEN
resumen_ajuste_ghi <- data.frame(
  "Segmento" = c("Zona 1 (Potencial Inicial)", "Zona 2 (Estabilidad Global)", "Zona 3 (Recurso Premium)"),
  "Modelo_Aplicado" = c("Log-Normal Reflexivo", "Distribución Normal", "Log-Normal Estándar"),
  "Pearson_R" = c(pearson1_ghi, pearson2_ghi, pearson3_ghi),
  "Estado" = "APROBADO"
)

# 3. GENERACIÓN DE LA TABLA GT PROFESIONAL
resumen_ajuste_ghi %>%
  gt() %>%
  tab_header(
    title = md("**TABLA N\u00ba 2: RESUMEN DE VALIDACI\u00d3N DE MODELOS (GHI)**"),
    subtitle = "C\u00e1lculo Autom\u00e1tico de Bondad de Ajuste (Pearson)"
  ) %>%
  tab_source_note(source_note = "Autor: Carlos Ramirez") %>%
  cols_label(
    Segmento = "Régimen Operativo",
    Modelo_Aplicado = "Modelo de Ajuste",
    Pearson_R = "Ajuste de Pearson (%)",
    Estado = "Validación"
  ) %>%
  fmt_number(columns = Pearson_R, decimals = 2) %>%
  cols_align(align = "center", columns = everything()) %>%
  tab_options(
    column_labels.background.color = "#F0F0F0",
    column_labels.font.weight = "bold",
    table.width = pct(100)
  ) %>%
  # Estética: Color verde para el texto APROBADO
  tab_style(
    style = list(cell_text(color = "#1D8348", weight = "bold")),
    locations = cells_body(columns = Estado)
  )
TABLA Nº 2: RESUMEN DE VALIDACIÓN DE MODELOS (GHI)
Cálculo Automático de Bondad de Ajuste (Pearson)
Régimen Operativo Modelo de Ajuste Ajuste de Pearson (%) Validación
Zona 1 (Potencial Inicial) Log-Normal Reflexivo 87.90 APROBADO
Zona 2 (Estabilidad Global) Distribución Normal 83.22 APROBADO
Zona 3 (Recurso Premium) Log-Normal Estándar 97.90 APROBADO
Autor: Carlos Ramirez

7 CÁLCULO DE PROBABILIDADES

Tras validar que el recurso premium se ajusta a una Log-Normal, evaluamos escenarios de alta eficiencia:

Pregunta 1: ¿Cuál es la probabilidad de que un sitio premium supere los 6.0 \(kWh/m^2/día\)?

Pregunta 2: De 100 proyectos en la Zona 3, ¿cuántos alcanzarán la excelencia (6.5 - 7.5 \(kWh\))? simétrico, permitiendo establecer parámetros de diseño estándar para la mayoría de proyectos globales.

m3 <- fit3$estimate["meanlog"]; s3 <- fit3$estimate["sdlog"]
p1 <- (1 - plnorm(6.0, m3, s3)) * 100
p2 <- (plnorm(7.5, m3, s3) - plnorm(6.5, m3, s3)) * 100

par(mar = c(5, 5, 4, 2))
curve(dlnorm(x, m3, s3), from = 5.0, to = 8.5, col = "#C0392B", lwd = 3, axes=F,
main = "Gráfica N°5: Proyecci\u00f3n Recurso Premium", xlab = "GHI (kWh/m2)", ylab = "Densidad de Probabilidad")
x_q <- seq(6.0, 8.5, length.out = 100); y_q <- dlnorm(x_q, m3, s3)
polygon(c(6.0, x_q, 8.5), c(0, y_q, 0), col = "#D4E6F1", border = NA)
axis(1); grid()

Respuesta 1: La probabilidad es del 18,93%.

Respuesta 2: Se estima que 3 proyectos alcanzarán la excelencia energética.

8 TEOREMA DEL LÍMITE CENTRAL

El TLC establece que la distribución de las medias muestrales seguirá una distribución Normal (\(n > 30\)). Esto nos permite estimar la Media Poblacional (\(\mu\)) verdadera utilizando intervalos de confianza.

Los postulados de confianza empírica sugieren:

\(P(\bar{x} - 2E < \mu < \bar{x} + 2E) \approx 95\%\)

Donde \(E = \sigma / \sqrt{n}\)

# 1. ESTADÍSTICOS BÁSICOS (Sincronizados con ghi_variable)
x_bar_ghi <- mean(ghi_variable)
sigma_ghi <- sd(ghi_variable)
n_ghi <- length(ghi_variable)

# 2. CÁLCULO DEL ERROR Y MARGEN (E)
# Usamos Z = 1.96 para un nivel de confianza del 95%
E_ghi <- 1.96 * (sigma_ghi / sqrt(n_ghi))

# 3. CONSTRUCCIÓN DE LA TABLA CON GT
data.frame(
  Parametro = "Irradiación Promedio Mundial (kWh/m²/día)",
  Lim_Inferior = x_bar_ghi - E_ghi,
  Media_Muestral = x_bar_ghi,
  Lim_Superior = x_bar_ghi + E_ghi,
  Error_Estandar = paste0("+/- ", round(E_ghi, 4)),
  Confianza = "95% (Z=1.96)"
) %>% 
  gt() %>%
  tab_header(
    title = md("**TABLA N\u00ba 3: ESTIMACI\u00d3N DE LA MEDIA POBLACIONAL (TLC)**"),
    subtitle = "Inferencia Estadística para la Variable GHI"
  ) %>%
  tab_source_note(source_note = "Autor: Carlos Ramirez") %>%
  fmt_number(columns = 2:4, decimals = 3) %>%
  # Estilo para resaltar la Media Muestral (Color acorde a GHI)
  tab_style(
    style = list(cell_fill(color = "#E8F8F5"), cell_text(color = "#145A32", weight = "bold")), 
    locations = cells_body(columns = Media_Muestral)
  ) %>%
  # Aplicación de las opciones de diseño institucional
  tab_options(
    column_labels.background.color = "#F0F0F0",
    column_labels.font.weight = "bold",
    table.width = pct(100)
  )
TABLA Nº 3: ESTIMACIÓN DE LA MEDIA POBLACIONAL (TLC)
Inferencia Estadística para la Variable GHI
Parametro Lim_Inferior Media_Muestral Lim_Superior Error_Estandar Confianza
Irradiación Promedio Mundial (kWh/m²/día) 4.542 4.549 4.556 +/- 0,0069 95% (Z=1.96)
Autor: Carlos Ramirez

9 CONCLUSIÓN

La variable Irradiación GHI fue modelada exitosamente mediante una estrategia tri-híbrida, logrando capturar con precisión la complejidad y variabilidad del recurso solar a escala mundial. Este enfoque permitió diferenciar técnicamente entre el potencial inicial, la estabilidad global y el recurso de alto rendimiento (Premium).

A través de la aplicación del Teorema del Límite Central (TLC), y con una media muestral de 4,55 kWh/m²/día, se estima con un 95% de confianza que la media poblacional del recurso solar se sitúa en el intervalo de [4,54; 4,56].

Este hallazgo es fundamental para la estandarización de proyectos, ya que garantiza que la planificación técnica y el dimensionamiento de sistemas fotovoltaicos bajo la supervisión de Carlos Ramirez se sustentan en una base operativa estadísticamente estable y validada internacionalmente (\(\mu = 4,55 \pm 0,01\) kWh/m²/día).