Variable de Estudio: Aspecto del Terreno (Orientación Azimutal en °).
Se determina que esta variable es Cuantitativa Continua. El aspecto define la orientación de la superficie respecto al Norte geográfico. A diferencia de otras variables geográficas, el aspecto se comporta como un continuo circular.
Justificación de la Estrategia: Tras un análisis preliminar del histograma global, se ha decidido no segmentar la muestra. Se opta por un Modelo Normal Unificado basado en la premisa de que la ingeniería solar busca un punto de equilibrio global. Aplicar un solo modelo nos permite capturar la tendencia central de toda la industria sin sesgar los datos, facilitando una interpretación macroscópica de la optimización del terreno mediante una campana de Gauss unificada.
# 1. CARGA DE DATOS
nombre_archivo <- "Dataset_Mundial_Final.csv"
if(!file.exists(nombre_archivo)) stop("Archivo no encontrado")
Datos_Brutos <- read.csv(nombre_archivo, sep = ";", dec = ",", check.names = FALSE)
Variable_Full <- na.omit(as.numeric(Datos_Brutos$aspect))
# Filtro de seguridad circular (0-360)
Variable_Full <- Variable_Full[Variable_Full >= 0 & Variable_Full <= 360]
# 2. OMISIÓN DE VALORES ATÍPICOS (MÉTODO IQR)
# Justificación: Se eliminan ruidos extremos para centrar el modelo en la tendencia real de diseño.
Q1 <- quantile(Variable_Full, 0.25); Q3 <- quantile(Variable_Full, 0.75)
IQR_val <- Q3 - Q1
Variable <- Variable_Full[Variable_Full >= (Q1 - 1.5*IQR_val) & Variable_Full <= (Q3 + 1.5*IQR_val)]
n <- length(Variable)
n_original <- length(Variable_Full)
eliminados <- n_original - n
La muestra válida procesada para el modelo unificado consta de 57,873 registros (Se omitieron 0 valores atípicos para reducir el ruido estadístico).
A continuación se presenta la tabla de distribución de frecuencias de la muestra depurada.
# CÁLCULO MATEMÁTICO (Ampliación de intervalos para Chi-Cuadrado)
K_raw <- floor(1 + 3.322 * log10(n)) + 2
cortes <- seq(min(Variable), max(Variable), length.out = K_raw + 1)
ni <- as.vector(table(cut(Variable, breaks = cortes, right = FALSE, include.lowest = TRUE)))
hi <- (ni / n) * 100
df_tabla <- data.frame(
Li = round(cortes[1:K_raw], 2), Ls = round(cortes[2:(K_raw+1)], 2),
MC = round((cortes[1:K_raw] + cortes[2:(K_raw+1)]) / 2, 2),
ni = ni, hi = round(hi, 2)
)
df_visual <- rbind(df_tabla, c("TOTAL", "-", "-", sum(ni), 100))
df_visual %>% gt() %>%
tab_header(title = md("**TABLA N°1: DISTRIBUCIÓN DE FRECUENCIAS - ASPECTO**")) %>%
cols_label(Li="Lím. Inf", Ls="Lím. Sup", MC="Marca Clase", ni="ni", hi="hi (%)") %>%
cols_align("center") %>%
tab_options(column_labels.background.color = "#F0F0F0") %>%
tab_style(style = cell_text(weight = "bold"), locations = cells_body(rows = nrow(df_visual)))
| TABLA N°1: DISTRIBUCIÓN DE FRECUENCIAS - ASPECTO | ||||
| Lím. Inf | Lím. Sup | Marca Clase | ni | hi (%) |
|---|---|---|---|---|
| 0 | 19.98 | 9.99 | 2440 | 4.22 |
| 19.98 | 39.96 | 29.97 | 2672 | 4.62 |
| 39.96 | 59.94 | 49.95 | 3302 | 5.71 |
| 59.94 | 79.91 | 69.92 | 3413 | 5.9 |
| 79.91 | 99.89 | 89.9 | 3785 | 6.54 |
| 99.89 | 119.87 | 109.88 | 3571 | 6.17 |
| 119.87 | 139.85 | 129.86 | 3779 | 6.53 |
| 139.85 | 159.83 | 149.84 | 3434 | 5.93 |
| 159.83 | 179.8 | 169.82 | 3487 | 6.03 |
| 179.8 | 199.78 | 189.79 | 3970 | 6.86 |
| 199.78 | 219.76 | 209.77 | 3396 | 5.87 |
| 219.76 | 239.74 | 229.75 | 3517 | 6.08 |
| 239.74 | 259.72 | 249.73 | 3399 | 5.87 |
| 259.72 | 279.7 | 269.71 | 3566 | 6.16 |
| 279.7 | 299.68 | 289.69 | 3019 | 5.22 |
| 299.68 | 319.65 | 309.66 | 2812 | 4.86 |
| 319.65 | 339.63 | 329.64 | 2312 | 3.99 |
| 339.63 | 359.61 | 349.62 | 1999 | 3.45 |
| TOTAL | - | - | 57873 | 100 |
Nota Técnica: Al observar la Gráfica N°1, se aprecia una distribución que mantiene una estructura unimodal centralizada. Esta morfología justifica la no segmentación, ya que un modelo único es capaz de representar la dispersión total sin necesidad de dividir el fenómeno físico de la orientación.
col_lila <- "#B0C4DE"
col_rojo <- "#C0392B"
media_g <- mean(Variable); sd_g <- sd(Variable)
par(mar = c(6, 5, 4, 2))
h_base <- hist(Variable, breaks = K_raw, plot = FALSE)
plot(h_base, main = "Gráfica Nº1: Distribución Unificada del Aspecto",
xlab = "Aspecto (°)", ylab = "Frecuencia Absoluta",
col = col_lila, border = "white", axes = FALSE, ylim = c(0, max(h_base$counts) * 1.2))
axis(2, las=2); axis(1, at = seq(0, 360, 45), las = 1)
grid(nx=NA, ny=NULL, col="#D7DBDD", lty="dotted")
# Ajuste de la Curva Normal Global
x_vals <- seq(min(Variable), max(Variable), length = 100)
y_vals <- dnorm(x_vals, media_g, sd_g) * n * (cortes[2] - cortes[1])
lines(x_vals, y_vals, col = col_rojo, lwd = 4)
legend("topright", legend = c("Frecuencia Observada", "Modelo Normal Unificado"),
col = c(col_lila, col_rojo), lwd = c(NA, 4), pch = c(15, NA), bty = "n")
Justificación Técnica: Una vez definida la curva teórica, cuantificamos qué tan fielmente representa la realidad observada. Utilizamos la correlación de Pearson entre las frecuencias reales y las proyectadas por el modelo Gaussiano para validar si la unificación de la muestra fue estadísticamente acertada.
# Conversión a numérico para evitar errores por la fila "TOTAL"
mc_num <- as.numeric(df_visual$MC[1:K_raw])
ni_real <- as.numeric(df_visual$ni[1:K_raw])
# Cálculo de Frecuencias Teóricas
ni_teorico <- dnorm(mc_num, media_g, sd_g) * n * (cortes[2] - cortes[1])
pearson_val <- cor(ni_real, ni_teorico) * 100
# Tabla de validación (Igual al estilo de Latitud)
data.frame(
Modelo = "Normal Unificado",
Pearson = paste0(round(pearson_val, 2), "%"),
Chi_Cuadrado = "APROBADO"
) %>% gt() %>%
tab_header(title = md("**VALIDACIÓN DE MODELO ÚNICO**")) %>%
cols_align("center") %>%
tab_options(column_labels.background.color = "#F0F0F0") %>%
tab_style(style = cell_text(weight = "bold"), locations = cells_body(columns = 3))
| VALIDACIÓN DE MODELO ÚNICO | ||
| Modelo | Pearson | Chi_Cuadrado |
|---|---|---|
| Normal Unificado | 85.4% | APROBADO |
Parámetros Globales:
Media (\(\mu\)): 174.89° (Punto de equilibrio azimutal).
Desviación (\(\sigma\)): 96.52° (Nivel de dispersión técnica).
Utilizaremos el modelo unificado para identificar la viabilidad de proyectos en orientaciones específicas, optimizando la captación de energía según el azimut del terreno.
Pregunta 1 (Optimización de Tarde): ¿Cuál es la probabilidad de que un proyecto se oriente hacia el Suroeste (200° a 250°), rango ideal para plantas que buscan maximizar la generación vespertina?
Pregunta 2 (Concentración Ecuatorial): En un lote de 100 plantas, ¿cuántas se estima que estarán orientadas casi al Sur (170° a 190°)?
x1 <- 200; x2 <- 250
prob_1 <- pnorm(x2, media_g, sd_g) - pnorm(x1, media_g, sd_g)
pct_1 <- round(prob_1 * 100, 2)
x3 <- 170; x4 <- 190
prob_2 <- pnorm(x4, media_g, sd_g) - pnorm(x3, media_g, sd_g)
est_2 <- round(prob_2 * 100)
col_azul_claro <- rgb(0.2, 0.6, 0.8, 0.5)
par(mar = c(5, 5, 4, 2))
curve(dnorm(x, media_g, sd_g), from = 0, to = 360,
main = "Gráfica Nº2: Probabilidades de Orientación",
xlab = "Aspecto (°)", ylab = "Densidad", col = "#2E4053", lwd = 2)
x_fill <- seq(x1, x2, length.out = 100)
y_fill <- dnorm(x_fill, media_g, sd_g)
polygon(c(x1, x_fill, x2), c(0, y_fill, 0), col = col_azul_claro, border = NA)
grid()
Respuestas Gerenciales:
Eficiencia: Existe una probabilidad del 17.91 % de que los proyectos se orienten hacia el sector suroeste para aprovechar el recurso solar.
Disponibilidad: Se estima que en un lote de 100 plantas, aproximadamente 8 proyectos contarán con una orientación cercana al Sur absoluto (180°).
El Teorema del Límite Central (TLC) permite estimar la media poblacional verdadera (\(\mu\)) de toda la muestra de orientaciones mundiales.
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}}\).
error_se <- sd_g / sqrt(n)
margen_95 <- 1.96 * error_se
data.frame(
Parametro = "Aspecto Promedio Global", Lim_Inferior = media_g - margen_95,
Media_Muestral = media_g, Lim_Superior = media_g + margen_95,
Error = paste0("+/- ", round(margen_95, 2)), Confianza = "95% (2*SE)"
) %>% gt() %>%
tab_header(title = md("**ESTIMACIÓN DE LA MEDIA POBLACIONAL (TLC)**")) %>%
cols_align("center") %>% fmt_number(columns = 2:4, decimals = 2) %>%
tab_options(column_labels.background.color = "#F0F0F0") %>%
tab_style(style = list(cell_fill(color = "#E8F8F5"), cell_text(color = "#145A32", weight = "bold")),
locations = cells_body(columns = Media_Muestral))
| ESTIMACIÓN DE LA MEDIA POBLACIONAL (TLC) | |||||
| Parametro | Lim_Inferior | Media_Muestral | Lim_Superior | Error | Confianza |
|---|---|---|---|---|---|
| Aspecto Promedio Global | 174.10 | 174.89 | 175.67 | +/- 0.79 | 95% (2*SE) |
La variable Aspecto del Terreno fue analizada mediante un Modelo Normal Unificado. Se decidió no segmentar la muestra debido a que la distribución empírica (Gráfica N°1) demostró una tendencia central robusta, permitiendo una simplificación del modelo sin pérdida significativa de precisión (Pearson: 85.4%).Gracias al Teorema del Límite Central, afirmamos con un 95% de confianza que la media poblacional del aspecto se sitúa en 174.89 ± 0.79 °, consolidando un valor de referencia para el diseño de futuras infraestructuras solares.