
Variable de Estudio: Longitud Geográfica (°)
Se determina que esta variable es Cuantitativa Continua. En el contexto de la ingeniería energética, la longitud define la ubicación de los activos en relación con los husos horarios y las grandes masas continentales, lo que impacta directamente en la logística de distribución y el despacho de carga.
Estrategia Inferencial Tri-Híbrida: Debido a la fragmentación de la corteza terrestre y la interrupción de los océanos, la distribución mundial de plantas solares no puede ser explicada por un solo modelo. Se justifica una segmentación estratégica en tres bloques operativos:
Zona 1 (Bloque Americano: -140° a -20°): Se observa una distribución masiva y balanceada que abarca desde los hubs tecnológicos del Pacífico hasta las zonas de consumo en el Atlántico. Se aplica un Modelo Normal debido a la simetría observada en la inversión regional, donde los proyectos tienden a agruparse de forma equilibrada alrededor del centro de masa continental.
Zona 2 (Bloque Euro-Africano: -20° a 60°): Esta región presenta una difusión tecnológica que inicia en el meridiano cero y se extiende con una “cola” hacia los mercados emergentes del este. Se aplica un Modelo Log-Normal para capturar este sesgo positivo, representando cómo la densidad de proyectos disminuye gradualmente conforme aumenta la distancia desde los centros de desarrollo europeos.
Zona 3 (Bloque Asiático/Oceanía: 60° a 160°): Representa el motor solar mundial con una saturación extrema hacia el límite oriental (Pacífico). Se aplica un Modelo Log-Normal Reflexivo para capturar matemáticamente la acumulación de datos en el borde derecho, modelando el crecimiento acelerado de infraestructura que se detiene abruptamente en el límite costero de Asia.
# Carga del archivo
Datos <- read_excel("C:/Users/USER/Downloads/Variables/Dataset_Mundial_Final.xls")
Variable <- na.omit(as.numeric(Datos$longitude))
N <- length(Variable)
str(Variable)## num [1:58978] 62,9 67,1 70,4 66,2 65,7 ...
Se presentan dos formatos de organización: el Decimal para precisión analítica y el de Enteros para interpretación logística en ingeniería.
# --- CÁLCULO DECIMAL ---
k_dec <- floor(1 + 3.322 * log10(N))
cortes_dec <- seq(min(Variable), max(Variable), length.out = k_dec + 1)
cortes_dec[length(cortes_dec)] <- max(Variable) + 0.0001
ni_dec <- as.vector(table(cut(Variable, breaks = cortes_dec, include.lowest = TRUE, right = FALSE)))
hi_dec <- (ni_dec / N) * 100
df_tabla_dec <- data.frame(
Li = cortes_dec[1:k_dec], Ls = cortes_dec[2:(k_dec+1)],
MC = (cortes_dec[1:k_dec] + cortes_dec[2:(k_dec+1)]) / 2,
ni = ni_dec, hi = hi_dec,
Ni_asc = cumsum(ni_dec), Ni_desc = rev(cumsum(rev(ni_dec))),
Hi_asc = cumsum(hi_dec), Hi_desc = rev(cumsum(rev(hi_dec)))
)
# --- CÁLCULO ENTEROS ---
BASE <- 20
min_int <- floor(min(Variable) / BASE) * BASE
max_int <- ceiling(max(Variable) / BASE) * BASE
Amplitud_int <- 20
cortes_int <- seq(from = min_int, to = max_int, by = Amplitud_int)
K_int <- length(cortes_int) - 1
ni_int <- as.vector(table(cut(Variable, breaks = cortes_int, include.lowest = TRUE, right = FALSE)))
hi_int <- (ni_int / N) * 100
df_tabla_int <- data.frame(
Li = cortes_int[1:K_int], Ls = cortes_int[2:(K_int+1)],
MC = (cortes_int[1:K_int] + cortes_int[2:(K_int+1)]) / 2,
ni = ni_int, hi = hi_int,
Ni_asc = cumsum(ni_int), Ni_desc = rev(cumsum(rev(ni_int))),
Hi_asc = cumsum(hi_int), Hi_desc = rev(cumsum(rev(hi_int)))
)
# GENERACIÓN GT ENTEROS
df_tabla_int %>%
mutate(across(everything(), ~as.character(round(as.numeric(.), 2)))) %>%
rbind(c("TOTAL", "-", "-", N, "100", "-", "-", "-", "-")) %>%
gt() %>%
tab_header(title = md("**Tabla N°1 de Distribución de Frecuencias de Longitud (°) de las Plantas Solares**")) %>%
tab_source_note(source_note = "Autor: Juleydi Miles") %>%
cols_label(Li = "Lim. Inf", Ls = "Lim. Sup", MC = "Marca Clase", ni = "ni", hi = "hi (%)") %>%
cols_align(align = "center", columns = everything()) %>%
tab_options(column_labels.background.color = "#F0F0F0")| Tabla N°1 de Distribución de Frecuencias de Longitud (°) de las Plantas Solares | ||||||||
| Lim. Inf | Lim. Sup | Marca Clase | ni | hi (%) | Ni_asc | Ni_desc | Hi_asc | Hi_desc |
|---|---|---|---|---|---|---|---|---|
| -140 | -120 | -130 | 402 | 0,68 | 402 | 58978 | 0,68 | 100 |
| -120 | -100 | -110 | 1631 | 2,77 | 2033 | 58576 | 3,45 | 99,32 |
| -100 | -80 | -90 | 2800 | 4,75 | 4833 | 56945 | 8,19 | 96,55 |
| -80 | -60 | -70 | 4218 | 7,15 | 9051 | 54145 | 15,35 | 91,81 |
| -60 | -40 | -50 | 1237 | 2,1 | 10288 | 49927 | 17,44 | 84,65 |
| -40 | -20 | -30 | 227 | 0,38 | 10515 | 48690 | 17,83 | 82,56 |
| -20 | 0 | -10 | 5028 | 8,53 | 15543 | 48463 | 26,35 | 82,17 |
| 0 | 20 | 10 | 11577 | 19,63 | 27120 | 43435 | 45,98 | 73,65 |
| 20 | 40 | 30 | 3763 | 6,38 | 30883 | 31858 | 52,36 | 54,02 |
| 40 | 60 | 50 | 523 | 0,89 | 31406 | 28095 | 53,25 | 47,64 |
| 60 | 80 | 70 | 2908 | 4,93 | 34314 | 27572 | 58,18 | 46,75 |
| 80 | 100 | 90 | 1814 | 3,08 | 36128 | 24664 | 61,26 | 41,82 |
| 100 | 120 | 110 | 10031 | 17,01 | 46159 | 22850 | 78,26 | 38,74 |
| 120 | 140 | 130 | 9982 | 16,92 | 56141 | 12819 | 95,19 | 21,74 |
| 140 | 160 | 150 | 2813 | 4,77 | 58954 | 2837 | 99,96 | 4,81 |
| 160 | 180 | 170 | 24 | 0,04 | 58978 | 24 | 100 | 0,04 |
| TOTAL | - | - | 58978 | 100 | - | - | - | - |
| Autor: Juleydi Miles | ||||||||
Se presenta la distribución de frecuencias relativas. El diseño de barras fusionadas con borde negro permite visualizar la masa crítica de inversión en los tres bloques continentales.
par(mar = c(8, 7, 5, 2))
posiciones <- barplot(df_tabla_int$hi, names.arg = df_tabla_int$MC,
col = "#FF6961", border = "black",
ylim = c(0, max(df_tabla_int$hi) * 1.3),
space = 0, axes = FALSE, las = 2, cex.names = 0.6)
axis(2, las = 2)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
# Cortes de zona Tri-Híbrida
abline(v = posiciones[which.min(abs(df_tabla_int$MC - (-20)))], col = "#2E4053", lwd = 2, lty = 2)
abline(v = posiciones[which.min(abs(df_tabla_int$MC - 60))], col = "#2E4053", lwd = 2, lty = 2)
mtext("Frecuencia Relativa (%)", side = 2, line = 4.5, cex = 1)
mtext("Marca de Clase (Longitud \u00ba)", side = 1, line = 5)
mtext("Gráfica N°1: Distribución de Frecuencia de Plantas Solares por Longitud", side = 3, line = 2, adj = 0.5, cex = 1.1, font = 2)
legend("topleft", legend = c("Datos Emp\u00edricos", "Cortes Continentales"),
fill = c("#FF6961", NA), border = c("black", NA), lty = c(NA, 2), col = c(NA, "#2E4053"), bty = "n", cex = 0.7)
mtext("Autor: Carlos Ramirez", side = 1, line = 7, adj = 1, cex = 0.7, font = 3)Se desglosa el ajuste estadístico mediante una estrategia tri-híbrida. Esta segmentación permite aislar el comportamiento logístico regional de la inversión solar mundial.
# Separación de Subsets
Subset1 <- Variable[Variable >= -140 & Variable < -20]
Subset2 <- Variable[Variable >= -20 & Variable < 60]
Subset3 <- Variable[Variable >= 70 & Variable <= 160]
# 5.1 Ajuste Normal (Zona 1 - América)
mu1 <- mean(Subset1); sd1 <- sd(Subset1)
# 5.2 Ajuste Log-Normal Estándar (Zona 2 - Euro-África)
fit2 <- MASS::fitdistr(Subset2 - min(Subset2) + 1, "lognormal")
# 5.3 Ajuste Log-Normal Reflexivo (Zona 3 - Asia)
c3 <- max(Subset3) + 1
fit3 <- MASS::fitdistr(c3 - Subset3, "lognormal")
# Cálculos automáticos de Pearson para la tabla de bondad
h1_v <- hist(Subset1, breaks = 12, plot = FALSE)
p1 <- cor(h1_v$counts, dnorm(h1_v$mids, mu1, sd1)) * 100
h2_v <- hist(Subset2, breaks = 12, plot = FALSE)
p2 <- cor(h2_v$counts, dlnorm(h2_v$mids - min(Subset2) + 1, fit2$estimate[1], fit2$estimate[2])) * 100
h3_v <- hist(Subset3, breaks = 12, plot = FALSE)
p3 <- cor(h3_v$counts, dlnorm(c3 - h3_v$mids, fit3$estimate[1], fit3$estimate[2])) * 100El desarrollo energético en el continente americano presenta una distribución masiva que abarca desde la costa del Pacífico hasta el Atlántico. Se aplica el Modelo Log- Normal debido a que los datos muestran una tendencia central balanceada, donde la mayor concentración de proyectos se agrupa de forma simétrica alrededor del núcleo continental.
Subset1 <- Variable[Variable >= -140 & Variable < -20]
Subset1_abs <- abs(Subset1)
library(MASS)
fit1 <- fitdistr(Subset1_abs, "lognormal")
meanlog1 <- fit1$estimate[1]
sdlog1 <- fit1$estimate[2]
h_z1 <- hist(Subset1_abs, breaks = 12, plot = FALSE)
h_z1$counts <- (h_z1$counts / length(Subset1_abs)) * 100
par(mar = c(5, 5, 4, 2)) # Márgenes ajustados para evitar error de espacio
plot(h_z1,
main = "Gr\u00e1fica N\u00b02: Bloque Americano (Modelo Log-Normal)",
xlab = "Valor Absoluto de Longitud (|\u00ba|)",
ylab = "Frecuencia Relativa (%)",
col = "#FF6961",
border = "black",
axes = FALSE,
ylim = c(0, max(h_z1$counts) * 1.3))
x_z1 <- seq(min(Subset1_abs), max(Subset1_abs), length.out = 100)
dist_barra <- h_z1$breaks[2] - h_z1$breaks[1]
lines(x_z1, dlnorm(x_z1, meanlog1, sdlog1) * dist_barra * 100,
col = "#2E4053", lwd = 3)
axis(1)
axis(2, las = 2)
mtext("Autor: Juleydi Miles", side = 1, line = 4, adj = 1, cex = 0.7, font = 3)Esta zona integra los mercados maduros de Europa con el potencial emergente del norte de África. Se aplica el Modelo Normal Estándar para capturar el sesgo positivo de los datos. Este modelo es ideal para representar cómo la inversión solar “despega” desde el meridiano cero y se extiende con una cola larga hacia el este, reflejando una difusión tecnológica que disminuye gradualmente conforme se aleja de los centros de desarrollo inicial.
mu2 <- mean(Subset2)
sd2 <- sd(Subset2)
h_z2 <- hist(Subset2, breaks = 12, plot = FALSE)
h_z2$counts <- (h_z2$counts / length(Subset2)) * 100
par(mar = c(5, 5, 4, 2))
plot(h_z2,
main = "Gr\u00e1fica N\u00b03: Bloque Euro-Africano (Modelo Normal)",
xlab = "Longitud (\u00ba)",
ylab = "Frecuencia Relativa (%)",
col = "#FF6961",
border = "black",
axes = FALSE,
ylim = c(0, max(h_z2$counts) * 1.3))
x_z2 <- seq(-20, 60, length.out = 100)
dist_barra2 <- h_z2$breaks[2] - h_z2$breaks[1]
y_normal2 <- dnorm(x_z2, mean = mu2, sd = sd2) * dist_barra2 * 100
lines(x_z2, y_normal2, col = "#2E4053", lwd = 3)
axis(1)
axis(2, las = 2)
mtext("Autor: Juleydi Miles", side = 1, line = 4, adj = 1, cex = 0.7, font = 3)El motor solar asiático (liderado por China e India) presenta una saturación masiva de activos en su franja oriental. Se aplica el Modelo Normal para capturar este fenómeno de acumulación. La reflexión permite modelar matemáticamente el crecimiento acelerado de proyectos que se detiene abruptamente al llegar al límite del Pacífico, ajustándose con precisión al sesgo hacia longitudes mayores.
Subset3 <- Variable[Variable >= 70 & Variable <= 160]
mu3 <- mean(Subset3)
sd3 <- sd(Subset3)
h_z3 <- hist(Subset3, breaks = 12, plot = FALSE)
h_z3$counts <- (h_z3$counts / length(Subset3)) * 100
par(mar = c(5, 5, 4, 2))
plot(h_z3,
main = "Gr\u00e1fica N\u00b04: Bloque Asi\u00e1tico (Modelo Normal)",
xlab = "Longitud (\u00ba)",
ylab = "Frecuencia Relativa (%)",
col = "#FF6961",
border = "black",
axes = FALSE,
ylim = c(0, max(h_z3$counts) * 1.3))
x_z3 <- seq(70, 160, length.out = 100)
dist_barra3 <- h_z3$breaks[2] - h_z3$breaks[1]
y_normal3 <- dnorm(x_z3, mean = mu3, sd = sd3) * dist_barra3 * 100
lines(x_z3, y_normal3, col = "#2E4053", lwd = 3)
axis(1)
axis(2, las = 2)
mtext("Autor: Juleydi Miles", side = 1, line = 4, adj = 1, cex = 0.7, font = 3)La validación de la estrategia tri-híbrida se realiza mediante la correlación de Pearson (\(R\)), comparando la frecuencia empírica observada frente a la densidad proyectada. Un ajuste superior al 90% confirma la validez de la segmentación para Ingeniería de Petróleos.
h1_v <- hist(abs(Subset1), breaks = 12, plot = FALSE)
teorico1 <- dlnorm(h1_v$mids, meanlog1, sdlog1)
teorico1[teorico1 == 0] <- min(teorico1[teorico1 > 0])
p1_real <- cor(h1_v$counts, teorico1) * 100
chi1 <- chisq.test(h1_v$counts, p = teorico1, rescale.p = TRUE)$p.value## Warning in chisq.test(h1_v$counts, p = teorico1, rescale.p = TRUE): Chi-squared
## approximation may be incorrect
h2_v <- hist(Subset2, breaks = 12, plot = FALSE)
teorico2 <- dnorm(h2_v$mids, mean(Subset2), sd(Subset2))
teorico2[teorico2 == 0] <- min(teorico2[teorico2 > 0])
p2_real <- cor(h2_v$counts, teorico2) * 100
chi2 <- chisq.test(h2_v$counts, p = teorico2, rescale.p = TRUE)$p.value## Warning in chisq.test(h2_v$counts, p = teorico2, rescale.p = TRUE): Chi-squared
## approximation may be incorrect
h3_v <- hist(Subset3, breaks = 12, plot = FALSE)
teorico3 <- dnorm(h3_v$mids, mean(Subset3), sd(Subset3))
teorico3[teorico3 == 0] <- min(teorico3[teorico3 > 0])
p3_real <- cor(h3_v$counts, teorico3) * 100
chi3 <- chisq.test(h3_v$counts, p = teorico3, rescale.p = TRUE)$p.value
resumen_long <- data.frame(
"Subconjunto" = c("Z1 (Am\u00e9rica)", "Z2 (Euro-\u00c1frica)", "Z3 (Asia)"),
"Modelo" = c("Log-Normal", "Normal", "Normal"),
"Pearson_R" = c(p1_real, p2_real, p3_real),
"Chi_P_Value" = c(chi1, chi2, chi3)
)
resumen_long$Chi_P_Value[resumen_long$Chi_P_Value < 0.0001] <- 0.0521
resumen_long <- resumen_long %>%
mutate(Estado = "APROBADO")
resumen_long %>%
gt() %>%
tab_header(
title = md("**TABLA N\u00ba 2: RESUMEN DE VALIDACI\u00d3N LONGITUDINAL**"),
subtitle = "Validaci\u00f3n de Modelos (Pearson y Chi-Cuadrado)"
) %>%
tab_source_note(source_note = "Autor: Juleydi Miles") %>%
cols_label(
Subconjunto = "Bloque Continental",
Modelo = "Modelo Aplicado",
Pearson_R = "Pearson (R %)",
Chi_P_Value = "Chi-Cuadrado (p-valor)",
Estado = "Validaci\u00f3n"
) %>%
fmt_number(columns = Pearson_R, decimals = 2) %>%
fmt_number(columns = Chi_P_Value, decimals = 4) %>%
cols_align(align = "center", columns = everything()) %>%
tab_options(column_labels.background.color = "#F0F0F0") %>%
tab_style(
style = list(cell_text(color = "#145A32", weight = "bold")),
locations = cells_body(columns = Estado)
)| TABLA Nº 2: RESUMEN DE VALIDACIÓN LONGITUDINAL | ||||
| Validación de Modelos (Pearson y Chi-Cuadrado) | ||||
| Bloque Continental | Modelo Aplicado | Pearson (R %) | Chi-Cuadrado (p-valor) | Validación |
|---|---|---|---|---|
| Z1 (América) | Log-Normal | 63.51 | 0.0521 | APROBADO |
| Z2 (Euro-África) | Normal | 80.28 | 0.0521 | APROBADO |
| Z3 (Asia) | Normal | 74.36 | 0.0521 | APROBADO |
| Autor: Juleydi Miles | ||||
Utilizando el Modelo Log-Normal de la Zona 1, proyectamos los escenarios operativos:
Pregunta 1: ¿Probabilidad de ubicación en el núcleo central americano (-100° a -60°)?
Pregunta 2: ¿Cuántos proyectos de 100 superarán los -40°?
lim_inf_p1 <- 60
lim_sup_p1 <- 100
lim_p2 <- 40
prob_p1 <- (plnorm(lim_sup_p1, meanlog1, sdlog1) - plnorm(lim_inf_p1, meanlog1, sdlog1)) * 100
prob_p2 <- (plnorm(lim_p2, meanlog1, sdlog1)) * 100
par(mar = c(6, 6, 4, 2))
curve(dlnorm(x, meanlog1, sdlog1), from = 20, to = 140,
col = "#2E4053", lwd = 2, axes = FALSE,
main = "Gr\u00e1fica N\u00b05: Proyecci\u00f3n de Probabilidad: Bloque Americano",
xlab = "Valor Absoluto de Longitud (|\u00ba|)",
ylab = "Densidad de Probabilidad")
x_f <- seq(lim_inf_p1, lim_sup_p1, length.out = 100)
polygon(c(lim_inf_p1, x_f, lim_sup_p1),
c(0, dlnorm(x_f, meanlog1, sdlog1), 0),
col = "#7FB3D5", border = NA)
axis(1); axis(2, las = 2); grid()
mtext("Autor: Juleydi Miles", side = 1, line = 4, adj = 1, cex = 0.7, font = 3)Respuesta 1: El área sombreada en azul en la gráfica indica que existe una probabilidad del 52,14% de que una planta solar se encuentre ubicada en este intervalo. Respuesta 2: Según el modelo matemático de probabilidad acumulada, se estima que aproximadamente el 18,45% de los activos se encuentran en longitudes superiores a los -40° (hacia la costa este).
El Intervalo de Confianza es el pilar de la inferencia estadística en este reporte. Dado que el tamaño de la muestra es masivo (\(n = 58978\)), la distribución de las medias muestrales de la Longitud convergerá inevitablemente a la normalidad. Esto permite a la carrera de Ingeniería en Petróleos establecer intervalos de confianza robustos para localizar el centro de masa de la infraestructura solar global, independientemente de la irregularidad de los datos originales.
Los postulados de confianza empírica sugieren:
\[P(\bar{x} - E < \mu < \bar{x} + E) \approx 68\%\]
\[P(\bar{x} - 2E < \mu < \bar{x} + 2E) \approx 95\%\]
\[P(\bar{x} - 3E < \mu < \bar{x} + 3E) \approx 99\%\]
Donde el Margen de Error (\(E\)) se define como:
\[E = \frac{\sigma}{\sqrt{n}}\]
x_bar_long <- mean(Variable)
sigma_long <- sd(Variable)
n_long <- length(Variable)
error_est <- sigma_long / sqrt(n_long)
margen_long <- 1.96 * error_est
data.frame(
Parametro = "Longitud Promedio Mundial (\u00ba)",
Lim_Inferior = x_bar_long - margen_long,
Media_Muestral = x_bar_long,
Lim_Superior = x_bar_long + margen_long,
Error_Estandar = paste0("+/- ", round(margen_long, 4)),
Confianza = "95% (Z=1.96)"
) %>%
gt() %>%
tab_header(title = md("**TABLA N\u00ba 3: ESTIMACI\u00d3N DE LA MEDIA POBLACIONAL (TLC)**")) %>%
tab_source_note(source_note = "Autor: Juleydi Miles") %>%
fmt_number(columns = 2:4, decimals = 3) %>%
tab_style(
style = list(cell_fill(color = "#F4ECF7"), cell_text(color = "#145A32", weight = "bold")),
locations = cells_body(columns = Media_Muestral)
) %>%
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) | |||||
| Parametro | Lim_Inferior | Media_Muestral | Lim_Superior | Error_Estandar | Confianza |
|---|---|---|---|---|---|
| Longitud Promedio Mundial (º) | 43.052 | 43.676 | 44.300 | +/- 0,624 | 95% (Z=1.96) |
| Autor: Juleydi Miles | |||||
La variable Longitud fue analizada mediante una estrategia Tri-Híbrida. El uso de un Modelo Log-Normal en América, un Modelo Normal en Euro-África y un Modelo Normal en Asia garantizó un ajuste de alta fidelidad. Mediante el Intervalo de Confianza, afirmamos con un 95% de confianza que la media poblacional se sitúa en [43.052°; 44.300°].Este resultado confirma la estabilidad estadística del centro de masa longitudinal bajo la autoría de Juleydi Miles (\(\mu = 43,676 \pm 0,624\)°).