Variable de Estudio: Humedad (%).
Se determina que esta variable es Cuantitativa Continua con dominio D={x∈R∣0≤x≤95}. Debido a su comportamiento unimodal, se aplica un Modelo de Distribución Normal global.
Estrategia Inferencial:
Validación: Se utiliza el Coeficiente de Pearson (R) y Chi-Cuadrado (χ²). El ajuste de 86.76% valida el modelo para proyecciones operativas.
Estimación: Mediante el Teorema del Límite Central (TLC), se estima la media poblacional con un 95% de confianza.
Precisión: El análisis arroja un intervalo de [66.80%; 66.99%], lo que permite estandarizar criterios técnicos con un margen de error mínimo (±0.09).
##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: JULEYDI MILES ####
### CARRERA: INGENIERÍA EN PETRÓLEOS #####
#### VARIABLE HUMEDAD ####
## DATASET ##
Datos <- read.csv("Dataset_Mundial_Final.csv", sep = ";", dec = ",", fileEncoding = "latin1")
Variable <- na.omit(as.numeric(Datos$humidity))
N <- length(Variable)Se presenta la distribución de frecuencias de la variable Humedad utilizando la Regla de Sturges para la organización sistemática de la variabilidad atmosférica.
# CÁLCULO PARA TABLA HUMEDAD
BASE <- 10
hum_variable <- Variable
n_total <- length(hum_variable)
min_int <- floor(min(hum_variable, na.rm = TRUE) / BASE) * BASE
max_int <- ceiling(max(hum_variable, na.rm = TRUE) / BASE) * BASE
cortes_int <- seq(from = min_int, to = max_int, by = BASE)
K_int <- length(cortes_int) - 1
ni_int <- as.vector(table(cut(hum_variable, breaks = cortes_int, include.lowest = TRUE, right = FALSE)))
hi_int <- (ni_int / n_total) * 100
df_tabla_hum <- 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)))
)
df_tabla_hum %>%
mutate(across(everything(), ~as.character(round(as.numeric(.), 2)))) %>%
rbind(c("TOTAL", "-", "-", n_total, "100", "-", "-", "-", "-")) %>%
gt() %>%
tab_header(title = md("**Tabla N°1 de Distribución de Frecuencias de Humedad (%) de las Plantas Solares**")) %>%
tab_source_note(source_note = "Fuente: Dataset Mundial | Autor: Juleydi Miles") %>%
cols_label(Li = "Lim. Inf", Ls = "Lim. Sup", MC = "Marca Clase", ni = "ni", hi = "hi (%)",
Ni_asc = "Ni ↑", Ni_desc = "Ni ↓", Hi_asc = "Hi ↑", Hi_desc = "Hi ↓") %>%
cols_align(align = "center", columns = everything()) %>%
tab_options(column_labels.background.color = "#F0F0F0")| Tabla N°1 de Distribución de Frecuencias de Humedad (%) de las Plantas Solares | ||||||||
| Lim. Inf | Lim. Sup | Marca Clase | ni | hi (%) | Ni ↑ | Ni ↓ | Hi ↑ | Hi ↓ |
|---|---|---|---|---|---|---|---|---|
| 0 | 10 | 5 | 3 | 0,01 | 3 | 58978 | 0,01 | 100 |
| 10 | 20 | 15 | 99 | 0,17 | 102 | 58975 | 0,17 | 99,99 |
| 20 | 30 | 25 | 921 | 1,56 | 1023 | 58876 | 1,73 | 99,83 |
| 30 | 40 | 35 | 1343 | 2,28 | 2366 | 57955 | 4,01 | 98,27 |
| 40 | 50 | 45 | 2805 | 4,76 | 5171 | 56612 | 8,77 | 95,99 |
| 50 | 60 | 55 | 7116 | 12,07 | 12287 | 53807 | 20,83 | 91,23 |
| 60 | 70 | 65 | 16357 | 27,73 | 28644 | 46691 | 48,57 | 79,17 |
| 70 | 80 | 75 | 27383 | 46,43 | 56027 | 30334 | 95 | 51,43 |
| 80 | 90 | 85 | 2945 | 4,99 | 58972 | 2951 | 99,99 | 5 |
| 90 | 100 | 95 | 6 | 0,01 | 58978 | 6 | 100 | 0,01 |
| TOTAL | - | - | 58978 | 100 | - | - | - | - |
| Fuente: Dataset Mundial | Autor: Juleydi Miles | ||||||||
Se presenta la distribución de frecuencias relativas. El diseño de barras fusionadas con borde negro permite visualizar la concentración de proyectos en rangos de humedad moderada-alta.
# Configuración de márgenes profesionales
par(mar = c(8, 6, 5, 2))
# Generación del gráfico con ajuste dinámico de ylim basándose en df_tabla_hum
posiciones <- barplot(df_tabla_hum$hi,
names.arg = df_tabla_hum$MC,
col = "#B0C4DE",
border = "black",
ylim = c(0, max(df_tabla_hum$hi) * 1.3),
space = 0,
axes = FALSE,
las = 2,
cex.names = 0.8)
# Personalización de ejes y rejilla técnica
axis(2, las = 2)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
# Rotulación con posicionamiento corregido
mtext("Porcentaje (%)", side = 2, line = 4, cex = 1, font = 1)
mtext("Humedad (%)", side = 1, line = 4, cex = 1)
mtext("Gráfica N°1: Distribución Porcentual de las Plantas Solares por Humedad",
side = 3, line = 2, adj = 0.5, cex = 1.1, font = 2)
# Leyenda Técnica
legend("topleft",
legend = c("Datos Empíricos"),
fill = c("#B0C4DE"),
border = c("black"),
bty = "n",
cex = 0.9)
# Línea de base (eje X)
abline(h = 0, col = "black", lwd = 1.5)Se ajusta un Modelo Normal debido a que los datos se distribuyen de forma equilibrada alrededor de un valor central (≈67%), reflejando las condiciones ambientales moderadas y predominantes en las regiones donde se concentra la mayor infraestructura fotovoltaica a nivel mundial.
# 1. Preparación de datos
mu_hum <- mean(Variable, na.rm = TRUE)
sd_hum <- sd(Variable, na.rm = TRUE)
n_total <- length(Variable)
# 2. Configuración de márgenes
par(mar = c(8, 6, 5, 2))
# 3. Generación del histograma base
cortes <- seq(0, 100, by = 10)
h_hum <- hist(Variable, breaks = cortes, plot = FALSE)
# Convertir frecuencias absolutas a porcentajes (%)
h_hum$counts <- (h_hum$counts / n_total) * 100
# 4. Preparación de la curva normal
x_curva <- seq(0, 100, length.out = 100)
y_curva <- dnorm(x_curva, mean = mu_hum, sd = sd_hum) * 10 * 100
# Definir el límite superior del eje Y con margen para la leyenda
y_max <- max(c(h_hum$counts, y_curva)) * 1.3
# 5. Generación del Gráfico
plot(h_hum,
main = "Gráfica N°2: Distribución de Humedad (Modelo Normal)",
xlab = "Humedad (%)",
ylab = "Porcentaje (%)",
col = "#B0C4DE",
border = "black",
cex.main = 1.1,
font.main = 2,
ylim = c(0, y_max),
axes = FALSE)
# Superposición de la Curva Normal
lines(x_curva, y_curva, col = "#C0392B", lwd = 3)
# 6. Personalización técnica
axis(1)
axis(2, las = 2)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
abline(h = 0, col = "black", lwd = 1.5)
# 7. Leyenda
legend("topleft",
legend = c("Humedad Observada", "Modelo Normal (Conjetura)"),
fill = c("#B0C4DE", NA),
border = c("black", NA),
lty = c(NA, 1),
col = c(NA, "#C0392B"),
lwd = c(NA, 3),
bty = "n",
cex = 0.8)# 1. Parámetros base
mu_h <- mean(Variable, na.rm = TRUE)
sd_h <- sd(Variable, na.rm = TRUE)
n_total <- sum(!is.na(Variable))
breaks_h <- seq(0, 100, by = 10)
K_h <- length(breaks_h) - 1
# 2. Frecuencias (Base 100)
probs_h <- diff(pnorm(breaks_h, mu_h, sd_h))
probs_h <- probs_h / sum(probs_h)
n_base <- 100
Fo_h <- as.vector(table(cut(Variable, breaks = breaks_h, right = FALSE))) * (n_base / n_total)
Fe_h <- probs_h * n_base
# 3. Estadísticos
chi_h <- sum((Fo_h - Fe_h)^2 / Fe_h)
pear_h <- cor(Fo_h, Fe_h) * 100
# 4. Determinación del Estado
res_h <- if(pear_h > 80) "APROBADO" else "RECHAZADO"
# IMPRESIÓN EN CONSOLA
cat("RESULTADOS:\n")## RESULTADOS:
## Test Pearson: 86,76 %
## Chi-Cuadrado: 66,7
## Estado de Validación: APROBADO
La validación del Modelo Normal se realiza mediante el Coeficiente de Pearson (R) y Chi-Cuadrado (χ²). El ajuste de 86.76% en Pearson y chi-cuadrado de 66.70 validan el modelo para proyecciones operativas.
# Crear dataframe para la tabla con los nombres solicitados
resumen_ajuste_hum <- data.frame(
"Variable" = "Humedad (%)",
"Modelo_Aplicado" = "Distribución Normal",
"Pearson_R" = pear_h,
"Chi_Sq" = chi_h,
"Estado" = res_h
)
# Formato de la tabla
resumen_ajuste_hum %>%
gt() %>%
tab_header(title = md("**Tabla N°2 de Resumen de Validación de Humedad**")) %>%
tab_source_note(source_note = "Autor: Juleydi Miles") %>%
cols_label(
Variable = "Variable",
Modelo_Aplicado = "Modelo de Ajuste",
Pearson_R = "Test Pearson (%)",
Chi_Sq = "Chi-Cuadrado (χ²)",
Estado = "Validación"
) %>%
fmt_number(columns = c(Pearson_R, Chi_Sq), decimals = 2) %>%
cols_align(align = "center", columns = everything()) %>%
tab_options(column_labels.background.color = "#F0F0F0") %>%
tab_style(
style = list(cell_text(color = "#1D8348", weight = "bold")),
locations = cells_body(columns = Estado, rows = Estado == "APROBADO")
)| Tabla N°2 de Resumen de Validación de Humedad | ||||
| Variable | Modelo de Ajuste | Test Pearson (%) | Chi-Cuadrado (χ²) | Validación |
|---|---|---|---|---|
| Humedad (%) | Distribución Normal | 86.76 | 66.70 | APROBADO |
| Autor: Juleydi Miles | ||||
Pregunta 1: ¿Cuál es la probabilidad de que una planta se sitúe en la franja óptima entre 60% y 80%?
Pregunta 2: En una cartera de 200 proyectos, ¿cuántos se estiman en este rango?
# 1. Parámetros del modelo
mu_h <- mean(Variable, na.rm = TRUE)
sd_h <- sd(Variable, na.rm = TRUE)
# 2. Cálculo de Probabilidades
# Probabilidad de estar entre 60% y 80%
prob_optima <- pnorm(80, mu_h, sd_h) - pnorm(60, mu_h, sd_h)
proyectos_200 <- round(prob_optima * 200)
# 3. Configuración de márgenes y gráfico
par(mar = c(6, 8, 4, 2))
# Generación de la curva normal
x_h <- seq(20, 100, length.out = 500)
y_vals <- dnorm(x_h, mu_h, sd_h)
y_max <- max(y_vals) * 1.2
plot(x_h, y_vals, type = "n", axes = FALSE,
main = "Gráfica N°3: Zonas de Probabilidad de Humedad (Modelo Normal)",
xlab = "Humedad (%)", ylab = "",
ylim = c(0, y_max))
# Sombreado del área de interés (60% - 80%)
x_area <- seq(60, 80, length.out = 100)
y_area <- dnorm(x_area, mu_h, sd_h)
polygon(c(60, x_area, 80), c(0, y_area, 0), col = "#7FB3D5", border = NA)
# Línea del modelo
lines(x_h, y_vals, col = "#C0392B", lwd = 4)
# Personalización técnica
axis(1)
axis(2, las = 2)
grid(nx = NA, ny = NULL, col = "#D7DBDD", lty = "dotted")
mtext("Densidad de Probabilidad", side = 2, line = 5.5, cex = 1)
# Leyenda
legend("topleft",
legend = c("Modelo Normal (Humedad)",
paste0("Zona Óptima (", round(prob_optima * 100, 2), "%)")),
col = c("#C0392B", "#7FB3D5"),
lwd = c(4, 10),
bty = "n",
cex = 0.8)Respuesta 1: Existe una probabilidad del 59,29% de que cualquier planta solar del dataset opere en condiciones de humedad entre el 60% y el 80%. Esto confirma que la mayoría de los activos están sujetos a niveles de humedad medio-altos.
Respuesta 2: Si se planificara una expansión de 200 proyectos nuevos, el modelo proyecta que aproximadamente 119 de ellos se ubicarán dentro de esta franja de incidencia.
El TLC establece que, dada una muestra suficientemente grande (n > 30), la distribución de las medias muestrales seguirá una distribución Normal. Esto permite estimar la Media Poblacional (μ) verdadera utilizando intervalos de confianza.
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}}\]
# 1. ESTADÍSTICOS BÁSICOS (Humedad)
x_bar <- mean(Variable, na.rm = TRUE)
sigma <- sd(Variable, na.rm = TRUE)
n_total <- sum(!is.na(Variable))
# 2. CÁLCULO DEL ERROR Y MARGEN (E) AL 95%
E <- 1.96 * (sigma / sqrt(n_total))
# 3. CONSTRUCCIÓN DE LA TABLA CON GT
data.frame(
Parametro = "Humedad Promedio Mundial (%)",
Lim_Inferior = x_bar - E,
Media_Muestral = x_bar,
Lim_Superior = x_bar + E,
Error_Estandar = paste0("+/- ", round(E, 4)),
Confianza = "95% (Z=1.96)"
) %>%
gt() %>%
tab_header(
title = md("**Tabla N°3 de Estimación 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 = "#E8F8F5"), 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 de Estimación de la Media Poblacional (TLC) | |||||
| Parametro | Lim_Inferior | Media_Muestral | Lim_Superior | Error_Estandar | Confianza |
|---|---|---|---|---|---|
| Humedad Promedio Mundial (%) | 66.804 | 66.898 | 66.992 | +/- 0,094 | 95% (Z=1.96) |
| Autor: Juleydi Miles | |||||
El análisis de la Humedad mediante el Modelo Normal permitió caracterizar con precisión el entorno operativo de la infraestructura solar global. Los resultados validan que la mayoría de los proyectos operan bajo condiciones de humedad moderada-alta, estabilizadas por los patrones climáticos de las zonas de mayor inversión.
Con un 95% de confianza, se determina que la media poblacional de humedad se sitúa en el intervalo de [66,804%; 66,992%]. Esta precisión, respaldada por un margen de error mínimo de ± 0,094, garantiza un sustento estadístico sólido para optimizar el mantenimiento y la protección del parque energético mundial basado en una media de 66,9%.