
##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: JULEYDI MILES ####
### CARRERA: INGENIERÍA EN PETRÓLEOS #####
#### VARIABLE CAPACIDAD ####
## DATASET ##
# Cargar dataset
Datos <- read_excel("C:/Users/USER/Downloads/Variables/Dataset_Mundial_Final.xls")
# Estructura de los datos
str(Datos)tibble [58,978 × 29] (S3: tbl_df/tbl/data.frame)
$ OBJECTID : num [1:58978] 2 3 4 5 6 7 8 9 10 11 ...
$ code : chr [1:58978] "00001-AFG-P" "00002-AFG-P" "00003-AFG-P" "00004-AFG-P" ...
$ plant_name : chr [1:58978] "Badghis Solar Power Plant" "Balkh solar farm" "Behsood solar farm" "Dab Pal 4 solar farm" ...
$ country : chr [1:58978] "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
$ operational_status : chr [1:58978] "cancelled - inferred 4 y" "cancelled - inferred 4 y" "cancelled - inferred 4 y" "shelved - inferred 2 y" ...
$ longitude : num [1:58978] 62.9 67.1 70.4 66.2 65.7 ...
$ latitude : num [1:58978] 35.1 36.7 34.4 33.8 31.7 ...
$ elevation : num [1:58978] 918 359 629 2288 1060 ...
$ area : num [1:58978] 6.74 10.72 487.73 111.8 1929.96 ...
$ size : chr [1:58978] "Small" "Small" "Small" "Small" ...
$ slope : num [1:58978] 7.38 0.49 1.1 6.16 1.23 ...
$ slope_type : chr [1:58978] "Moderado" "Plano o casi plano" "Plano o casi plano" "Moderado" ...
$ curvature : num [1:58978] -0.024 0 0 0.045 -0.005 -0.005 -0.015 0 0 -0.009 ...
$ curvature_type : chr [1:58978] "Superficies cóncavas / Valles" "Superficies planas o intermedias" "Superficies planas o intermedias" "Superficies convexas / Crestas" ...
$ aspect : num [1:58978] 96.8 358.5 36.2 305.8 248.4 ...
$ aspect_type : chr [1:58978] "East" "North" "Northeast" "Northwest" ...
$ dist_to_road : num [1:58978] 7037.1 92.7 112.1 1705.3 115.8 ...
$ ambient_temperature : num [1:58978] 14.4 17.88 21.32 8.86 19.64 ...
$ ghi : num [1:58978] 5.82 5.58 5.8 6.75 6.62 ...
$ humidity : num [1:58978] 47.7 42.3 36.4 37.3 24.2 ...
$ wind_speed : num [1:58978] 0.039 0.954 0.234 0.943 0.37 ...
$ wind_direction : num [1:58978] 187.5 207.4 255.6 160.3 97.7 ...
$ dt_wind : chr [1:58978] "South" "Southwest" "West" "South" ...
$ solar_aptitude : num [1:58978] 0.72 0.635 0.685 0.659 0.819 0.819 0.818 0.642 0.63 0.374 ...
$ solar_aptitude_rounded: num [1:58978] 7 6 7 7 8 8 8 6 6 4 ...
$ solar_aptittude_class : chr [1:58978] "Alta" "Alta" "Alta" "Alta" ...
$ capacity : num [1:58978] 32 40 60 3000 100 100 36 50 25 100 ...
$ optimal_tilt : num [1:58978] 30 31 31.1 33 31 ...
$ pv_potential : num [1:58978] 4.61 4.41 4.57 5.42 5.17 ...
library(dplyr)
library(gt)
# 1. Extracción y Limpieza de la variable dist_to_road
# Eliminamos NA y valores atípicos
apt_variable_raw <- Datos$dist_to_road %>% na.omit()
q1 <- quantile(apt_variable_raw, 0.25)
q3 <- quantile(apt_variable_raw, 0.75)
iqr <- q3 - q1
# Filtrado de Outliers
apt_clean <- apt_variable_raw[apt_variable_raw >= (q1 - 1.5 * iqr) &
apt_variable_raw <= (q3 + 1.5 * iqr)]
# 2. Aplicación de Regla de Sturges
n_total_apt <- length(apt_clean)
K_sturges <- ceiling(1 + 3.322 * log10(n_total_apt)) # Salen 17 intervalos
min_val <- min(apt_clean)
max_val <- max(apt_clean)
# Generar cortes
cortes_int_apt <- seq(from = min_val, to = max_val, length.out = K_sturges + 1)
# 3. Construcción de la Tabla
ni_int_apt <- as.vector(table(cut(apt_clean, breaks = cortes_int_apt, include.lowest = TRUE, right = FALSE)))
hi_int_apt <- (ni_int_apt / n_total_apt) * 100
df_tabla_apt <- data.frame(
Li = cortes_int_apt[1:K_sturges],
Ls = cortes_int_apt[2:(K_sturges+1)],
MC = (cortes_int_apt[1:K_sturges] + cortes_int_apt[2:(K_sturges+1)]) / 2,
ni = ni_int_apt,
hi = hi_int_apt,
Ni_asc = cumsum(ni_int_apt),
Ni_desc = rev(cumsum(rev(ni_int_apt))),
Hi_asc = cumsum(hi_int_apt),
Hi_desc = rev(cumsum(rev(hi_int_apt)))
)
# 4. Generación de la Tabla con tu formato visual
df_tabla_apt %>%
mutate(across(everything(), ~as.character(round(as.numeric(.), 3)))) %>%
rbind(c("TOTAL", "-", "-", n_total_apt, "100", "-", "-", "-", "-")) %>%
gt() %>%
tab_header(title = md("**Tabla N°3 de Distribución de Frecuencias de Distancia a la Vía 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 (%)",
Ni_asc = "Ni \u2191", Ni_desc = "Ni \u2193", Hi_asc = "Hi \u2191", Hi_desc = "Hi \u2193") %>%
cols_align(align = "center", columns = everything()) %>%
tab_options(column_labels.background.color = "#F0F0F0")| Tabla N°3 de Distribución de Frecuencias de Distancia a la Vía de las Plantas Solares | ||||||||
| Lim. Inf | Lim. Sup | Marca Clase | ni | hi (%) | Ni ↑ | Ni ↓ | Hi ↑ | Hi ↓ |
|---|---|---|---|---|---|---|---|---|
| 0 | 371.058 | 185.529 | 20357 | 39.575 | 20357 | 51439 | 39.575 | 100 |
| 371.058 | 742.115 | 556.587 | 9509 | 18.486 | 29866 | 31082 | 58.061 | 60.425 |
| 742.115 | 1113.173 | 927.644 | 6090 | 11.839 | 35956 | 21573 | 69.9 | 41.939 |
| 1113.173 | 1484.231 | 1298.702 | 2790 | 5.424 | 38746 | 15483 | 75.324 | 30.1 |
| 1484.231 | 1855.289 | 1669.76 | 2183 | 4.244 | 40929 | 12693 | 79.568 | 24.676 |
| 1855.289 | 2226.346 | 2040.817 | 1709 | 3.322 | 42638 | 10510 | 82.89 | 20.432 |
| 2226.346 | 2597.404 | 2411.875 | 1423 | 2.766 | 44061 | 8801 | 85.657 | 17.11 |
| 2597.404 | 2968.462 | 2782.933 | 1141 | 2.218 | 45202 | 7378 | 87.875 | 14.343 |
| 2968.462 | 3339.519 | 3153.99 | 998 | 1.94 | 46200 | 6237 | 89.815 | 12.125 |
| 3339.519 | 3710.577 | 3525.048 | 892 | 1.734 | 47092 | 5239 | 91.549 | 10.185 |
| 3710.577 | 4081.635 | 3896.106 | 898 | 1.746 | 47990 | 4347 | 93.295 | 8.451 |
| 4081.635 | 4452.692 | 4267.164 | 731 | 1.421 | 48721 | 3449 | 94.716 | 6.705 |
| 4452.692 | 4823.75 | 4638.221 | 641 | 1.246 | 49362 | 2718 | 95.962 | 5.284 |
| 4823.75 | 5194.808 | 5009.279 | 583 | 1.133 | 49945 | 2077 | 97.096 | 4.038 |
| 5194.808 | 5565.866 | 5380.337 | 583 | 1.133 | 50528 | 1494 | 98.229 | 2.904 |
| 5565.866 | 5936.923 | 5751.394 | 487 | 0.947 | 51015 | 911 | 99.176 | 1.771 |
| 5936.923 | 6307.981 | 6122.452 | 424 | 0.824 | 51439 | 424 | 100 | 0.824 |
| TOTAL | - | - | 51439 | 100 | - | - | - | - |
| Autor: Juleydi Miles | ||||||||
library(dplyr)
library(gt)
# 1. Preparación y Limpieza (NA y Outliers)
dist_raw <- Datos$dist_to_road %>% na.omit()
q1 <- quantile(dist_raw, 0.25)
q3 <- quantile(dist_raw, 0.75)
iqr <- q3 - q1
# Filtramos para quedarnos con los datos "limpios"
dist_clean <- dist_raw[dist_raw >= (q1 - 1.5 * iqr) & dist_raw <= (q3 + 1.5 * iqr)]
# 2. Definición de Intervalos (de 100 en 100 metros)
BASE_M <- 100
min_m <- 0 # Empezamos desde 0 metros
max_m <- ceiling(max(dist_clean) / BASE_M) * BASE_M
cortes_m <- seq(from = min_m, to = max_m, by = BASE_M)
# 3. Cálculo de Frecuencias
n_total <- length(dist_clean)
ni <- as.vector(table(cut(dist_clean, breaks = cortes_m, include.lowest = TRUE, right = FALSE)))
hi <- (ni / n_total) * 100
# 4. Creación del DataFrame y Transformación a Kilómetros (/1000)
df_tabla_road <- data.frame(
Li = cortes_m[1:length(ni)] / 1000,
Ls = cortes_m[2:(length(ni)+1)] / 1000,
MC = ((cortes_m[1:length(ni)] + cortes_m[2:(length(ni)+1)]) / 2) / 1000,
ni = ni,
hi = hi,
Ni_asc = cumsum(ni),
Ni_desc = rev(cumsum(rev(ni))),
Hi_asc = cumsum(hi),
Hi_desc = rev(cumsum(rev(hi)))
)
# 5. Formateo Final con gt()
df_tabla_road %>%
mutate(across(everything(), ~as.numeric(.))) %>%
mutate(across(c(Li, Ls, MC, hi, Hi_asc, Hi_desc), ~round(., 3))) %>%
mutate(across(everything(), as.character)) %>%
rbind(c("TOTAL", "-", "-", n_total, "100", "-", "-", "-", "-")) %>%
gt() %>%
tab_header(title = md("**Tabla N°3 de Distribución de Frecuencias: Distancia a la Vía (KM)**")) %>%
tab_source_note(source_note = "Autor: Juleydi Miles") %>%
cols_label(Li = "Lim. Inf (Km)", Ls = "Lim. Sup (Km)", MC = "Marca Clase (Km)",
ni = "ni", hi = "hi (%)",
Ni_asc = "Ni \u2191", Ni_desc = "Ni \u2193",
Hi_asc = "Hi \u2191", Hi_desc = "Hi \u2193") %>%
cols_align(align = "center", columns = everything()) %>%
tab_options(column_labels.background.color = "#F0F0F0")| Tabla N°3 de Distribución de Frecuencias: Distancia a la Vía (KM) | ||||||||
| Lim. Inf (Km) | Lim. Sup (Km) | Marca Clase (Km) | ni | hi (%) | Ni ↑ | Ni ↓ | Hi ↑ | Hi ↓ |
|---|---|---|---|---|---|---|---|---|
| 0 | 0.1 | 0.05 | 8503 | 16.53 | 8503 | 51439 | 16.53 | 100 |
| 0.1 | 0.2 | 0.15 | 5619 | 10.924 | 14122 | 42936 | 27.454 | 83.47 |
| 0.2 | 0.3 | 0.25 | 3911 | 7.603 | 18033 | 37317 | 35.057 | 72.546 |
| 0.3 | 0.4 | 0.35 | 3236 | 6.291 | 21269 | 33406 | 41.348 | 64.943 |
| 0.4 | 0.5 | 0.45 | 2766 | 5.377 | 24035 | 30170 | 46.725 | 58.652 |
| 0.5 | 0.6 | 0.55 | 2602 | 5.058 | 26637 | 27404 | 51.784 | 53.275 |
| 0.6 | 0.7 | 0.65 | 2331 | 4.532 | 28968 | 24802 | 56.315 | 48.216 |
| 0.7 | 0.8 | 0.75 | 2113 | 4.108 | 31081 | 22471 | 60.423 | 43.685 |
| 0.8 | 0.9 | 0.85 | 1972 | 3.834 | 33053 | 20358 | 64.257 | 39.577 |
| 0.9 | 1 | 0.95 | 1908 | 3.709 | 34961 | 18386 | 67.966 | 35.743 |
| 1 | 1.1 | 1.05 | 884 | 1.719 | 35845 | 16478 | 69.684 | 32.034 |
| 1.1 | 1.2 | 1.15 | 848 | 1.649 | 36693 | 15594 | 71.333 | 30.316 |
| 1.2 | 1.3 | 1.25 | 746 | 1.45 | 37439 | 14746 | 72.783 | 28.667 |
| 1.3 | 1.4 | 1.35 | 724 | 1.407 | 38163 | 14000 | 74.191 | 27.217 |
| 1.4 | 1.5 | 1.45 | 705 | 1.371 | 38868 | 13276 | 75.561 | 25.809 |
| 1.5 | 1.6 | 1.55 | 622 | 1.209 | 39490 | 12571 | 76.771 | 24.439 |
| 1.6 | 1.7 | 1.65 | 592 | 1.151 | 40082 | 11949 | 77.921 | 23.229 |
| 1.7 | 1.8 | 1.75 | 544 | 1.058 | 40626 | 11357 | 78.979 | 22.079 |
| 1.8 | 1.9 | 1.85 | 533 | 1.036 | 41159 | 10813 | 80.015 | 21.021 |
| 1.9 | 2 | 1.95 | 488 | 0.949 | 41647 | 10280 | 80.964 | 19.985 |
| 2 | 2.1 | 2.05 | 479 | 0.931 | 42126 | 9792 | 81.895 | 19.036 |
| 2.1 | 2.2 | 2.15 | 399 | 0.776 | 42525 | 9313 | 82.671 | 18.105 |
| 2.2 | 2.3 | 2.25 | 411 | 0.799 | 42936 | 8914 | 83.47 | 17.329 |
| 2.3 | 2.4 | 2.35 | 413 | 0.803 | 43349 | 8503 | 84.273 | 16.53 |
| 2.4 | 2.5 | 2.45 | 354 | 0.688 | 43703 | 8090 | 84.961 | 15.727 |
| 2.5 | 2.6 | 2.55 | 367 | 0.713 | 44070 | 7736 | 85.674 | 15.039 |
| 2.6 | 2.7 | 2.65 | 326 | 0.634 | 44396 | 7369 | 86.308 | 14.326 |
| 2.7 | 2.8 | 2.75 | 306 | 0.595 | 44702 | 7043 | 86.903 | 13.692 |
| 2.8 | 2.9 | 2.85 | 302 | 0.587 | 45004 | 6737 | 87.49 | 13.097 |
| 2.9 | 3 | 2.95 | 311 | 0.605 | 45315 | 6435 | 88.095 | 12.51 |
| 3 | 3.1 | 3.05 | 296 | 0.575 | 45611 | 6124 | 88.67 | 11.905 |
| 3.1 | 3.2 | 3.15 | 229 | 0.445 | 45840 | 5828 | 89.115 | 11.33 |
| 3.2 | 3.3 | 3.25 | 250 | 0.486 | 46090 | 5599 | 89.601 | 10.885 |
| 3.3 | 3.4 | 3.35 | 260 | 0.505 | 46350 | 5349 | 90.107 | 10.399 |
| 3.4 | 3.5 | 3.45 | 231 | 0.449 | 46581 | 5089 | 90.556 | 9.893 |
| 3.5 | 3.6 | 3.55 | 234 | 0.455 | 46815 | 4858 | 91.011 | 9.444 |
| 3.6 | 3.7 | 3.65 | 257 | 0.5 | 47072 | 4624 | 91.51 | 8.989 |
| 3.7 | 3.8 | 3.75 | 246 | 0.478 | 47318 | 4367 | 91.989 | 8.49 |
| 3.8 | 3.9 | 3.85 | 272 | 0.529 | 47590 | 4121 | 92.517 | 8.011 |
| 3.9 | 4 | 3.95 | 241 | 0.469 | 47831 | 3849 | 92.986 | 7.483 |
| 4 | 4.1 | 4.05 | 197 | 0.383 | 48028 | 3608 | 93.369 | 7.014 |
| 4.1 | 4.2 | 4.15 | 219 | 0.426 | 48247 | 3411 | 93.795 | 6.631 |
| 4.2 | 4.3 | 4.25 | 183 | 0.356 | 48430 | 3192 | 94.15 | 6.205 |
| 4.3 | 4.4 | 4.35 | 194 | 0.377 | 48624 | 3009 | 94.527 | 5.85 |
| 4.4 | 4.5 | 4.45 | 188 | 0.365 | 48812 | 2815 | 94.893 | 5.473 |
| 4.5 | 4.6 | 4.55 | 208 | 0.404 | 49020 | 2627 | 95.297 | 5.107 |
| 4.6 | 4.7 | 4.65 | 153 | 0.297 | 49173 | 2419 | 95.595 | 4.703 |
| 4.7 | 4.8 | 4.75 | 140 | 0.272 | 49313 | 2266 | 95.867 | 4.405 |
| 4.8 | 4.9 | 4.85 | 149 | 0.29 | 49462 | 2126 | 96.157 | 4.133 |
| 4.9 | 5 | 4.95 | 168 | 0.327 | 49630 | 1977 | 96.483 | 3.843 |
| 5 | 5.1 | 5.05 | 155 | 0.301 | 49785 | 1809 | 96.785 | 3.517 |
| 5.1 | 5.2 | 5.15 | 167 | 0.325 | 49952 | 1654 | 97.109 | 3.215 |
| 5.2 | 5.3 | 5.25 | 192 | 0.373 | 50144 | 1487 | 97.482 | 2.891 |
| 5.3 | 5.4 | 5.35 | 144 | 0.28 | 50288 | 1295 | 97.762 | 2.518 |
| 5.4 | 5.5 | 5.45 | 154 | 0.299 | 50442 | 1151 | 98.062 | 2.238 |
| 5.5 | 5.6 | 5.55 | 126 | 0.245 | 50568 | 997 | 98.307 | 1.938 |
| 5.6 | 5.7 | 5.65 | 128 | 0.249 | 50696 | 871 | 98.556 | 1.693 |
| 5.7 | 5.8 | 5.75 | 124 | 0.241 | 50820 | 743 | 98.797 | 1.444 |
| 5.8 | 5.9 | 5.85 | 142 | 0.276 | 50962 | 619 | 99.073 | 1.203 |
| 5.9 | 6 | 5.95 | 139 | 0.27 | 51101 | 477 | 99.343 | 0.927 |
| 6 | 6.1 | 6.05 | 110 | 0.214 | 51211 | 338 | 99.557 | 0.657 |
| 6.1 | 6.2 | 6.15 | 105 | 0.204 | 51316 | 228 | 99.761 | 0.443 |
| 6.2 | 6.3 | 6.25 | 107 | 0.208 | 51423 | 123 | 99.969 | 0.239 |
| 6.3 | 6.4 | 6.35 | 16 | 0.031 | 51439 | 16 | 100 | 0.031 |
| TOTAL | - | - | 51439 | 100 | - | - | - | - |
| Autor: Juleydi Miles | ||||||||
dist_global_km <- na.omit(Datos$dist_to_road) / 1000
par(mar = c(8, 7, 5, 2))
hist_global <- hist(dist_global_km, breaks = 50, plot = FALSE)
barplot(hist_global$counts,
names.arg = round(hist_global$mids, 1),
main = "", xlab = "", ylab = "",
col = "#EED5D2",
ylim = c(0, max(hist_global$counts) * 1.2),
space = 0, las = 2, cex.names = 0.6)
mtext("Cantidad de Plantas", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Distancia a la vía (km)", side = 1, line = 4)
mtext("Gráfica N°1: Distribución de Cantidad de Plantas Solares por Distancia de la via",
side = 3, line = 2, adj = 0.5, cex = 1, font = 2)
mtext("Autor: Juleydi Miles", side = 1, line = 6, adj = 1, cex = 0.8)dist_raw <- Datos$dist_to_road %>% na.omit()
q1 <- quantile(dist_raw, 0.25); q3 <- quantile(dist_raw, 0.75)
iqr <- q3 - q1
dist_local <- dist_raw[dist_raw <= (q3 + 1.5 * iqr)]
BASE_M <- 100
cortes_m <- seq(0, ceiling(max(dist_local)/BASE_M)*BASE_M, by = BASE_M)
ni_local <- as.vector(table(cut(dist_local, breaks = cortes_m, include.lowest = TRUE, right = FALSE)))
etiquetas_km <- round(cortes_m[-1] / 1000, 1)
par(mar = c(9, 7, 5, 2))
barplot(ni_local,
names.arg = etiquetas_km,
main = "",
xlab = "",
ylab = "",
col = "#EED5D2",
border = "black",
ylim = c(0, max(ni_local) * 1.2),
space = 0,
las = 2,
cex.names = 0.5)
mtext("Cantidad de Plantas", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Distancia a la vía (km) - Límite superior del intervalo", side = 1, line = 6)
mtext("Gráfica N°2: Distribución de Cantidad de Plantas Solares por Distancia de la via",
side = 3, line = 2, adj = 0.5, cex = 1, font = 2)
mtext("Autor: Juleydi Miles", side = 1, line = 8, adj = 1, cex = 0.8)
## Histogramas Porcentuales ##
dist_global_km <- na.omit(Datos$dist_to_road) / 1000
n_total <- length(dist_global_km)
par(mar = c(8, 7, 5, 2))
hist_global <- hist(dist_global_km, breaks = 50, plot = FALSE)
frec_rel_global <- (hist_global$counts / n_total) * 100
bp_global <- barplot(frec_rel_global,
names.arg = round(hist_global$mids, 1),
main = "",
xlab = "",
ylab = "Porcentaje (%)",
col = "#EED5D2",
border = "black",
ylim = c(0, max(frec_rel_global) * 1.3),
space = 0,
las = 2,
cex.names = 0.6)
text(x = bp_global[frec_rel_global > 0.1],
y = frec_rel_global[frec_rel_global > 0.1],
labels = paste0(round(frec_rel_global[frec_rel_global > 0.1], 1), "%"),
pos = 3, cex = 0.5, col = "black")
mtext("Distancia a la vía (km)", side = 1, line = 4)
mtext("Gráfica N°3:Distribución Porcentual de Plantas Solares por Distancia de la via",
side = 3, line = 2, adj = 0.5, cex = 1, font = 2)
mtext("Autor: Juleydi Miles", side = 1, line = 6, adj = 1, cex = 0.8)dist_raw <- Datos$dist_to_road %>% na.omit()
q1 <- quantile(dist_raw, 0.25); q3 <- quantile(dist_raw, 0.75)
iqr <- q3 - q1
dist_local_km <- dist_raw[dist_raw <= (q3 + 1.5 * iqr)] / 1000
cortes <- seq(0, ceiling(max(dist_local_km) * 10) / 10, by = 0.1)
ni <- as.vector(table(cut(dist_local_km, breaks = cortes, include.lowest = TRUE, right = FALSE)))
hi <- (ni / length(dist_local_km)) * 100
mids <- cortes[-1]
etiquetas_eje <- ifelse(round(mids, 1) %% 1 == 0, as.character(round(mids, 0)), "")
par(mar = c(7, 7, 5, 2))
bp4 <- barplot(hi,
names.arg = etiquetas_eje,
main = "", xlab = "", ylab = "Porcentaje (%)",
col = "#EED5D2", border = "black",
ylim = c(0, max(hi) * 1.3),
space = 0, las = 1, cex.names = 0.8)
text(x = bp4[hi > 3],
y = hi[hi > 3],
labels = paste0(round(hi[hi > 3], 1), "%"),
pos = 3,
cex = 0.7,
font = 2,
col = "black")
mtext("Distancia a la vía (km)", side = 1, line = 3, cex = 1)
mtext("Gráfica N°4: Distribución Porcentual de Plantas Solares por Distancia de la via" ,
side = 3, line = 2, adj = 0.5, cex = 1.1, font = 2)
mtext("Autor: Juleydi Miles", side = 1, line = 5, adj = 1, cex = 0.8)
grid(nx = NA, ny = NULL, col = "gray85", lty = "dotted")
### Diagrama de Cajas (Boxplot)###
dist_raw <- Datos$dist_to_road %>% na.omit()
q1 <- quantile(dist_raw, 0.25)
q3 <- quantile(dist_raw, 0.75)
dist_local_km <- dist_raw[dist_raw <= (q3 + 1.5 * iqr)] / 1000
par(mar = c(7, 5, 4, 2)) # Margen inferior amplio para el autor
boxplot(dist_local_km,
horizontal = TRUE,
col = "#EED5D2",
xlab = "Distancia a la vía (km)",
cex.main = 0.9,
main = "Gráfica N°5: Distribución de la Distancia a la vía en Plantas Solares")
mtext("Autor: Juleydi Miles", side = 1, line = 4.5, adj = 1, cex = 0.8)# 1. Preparación de datos (Se mantiene igual)
dist_raw <- Datos$dist_to_road %>% na.omit()
q1 <- quantile(dist_raw, 0.25); q3 <- quantile(dist_raw, 0.75)
iqr <- q3 - q1
dist_local_km <- dist_raw[dist_raw <= (q3 + 1.5 * iqr)] / 1000
BASE <- 0.1
cortes <- seq(0, ceiling(max(dist_local_km) * 10) / 10, by = BASE)
ni <- as.vector(table(cut(dist_local_km, breaks = cortes, include.lowest = TRUE, right = FALSE)))
Ni_asc <- cumsum(ni)
Ni_desc <- rev(cumsum(rev(ni)))
Li <- cortes[1:length(ni)]
Ls <- cortes[2:(length(ni)+1)]
# 2. Configuración de márgenes (Damos más espacio arriba con el tercer valor de 'mar')
par(mar = c(8, 5, 10, 2), xpd = TRUE)
x_asc <- Ls
x_desc <- Li
y_asc <- Ni_asc
y_desc <- Ni_desc
# 3. Dibujar la Ascendente
plot(x_asc, y_asc,
type = "b",
main = "",
xlab = "Distancia a la vía (km)",
ylab = "Frecuencia acumulada",
col = "black",
pch = 19,
cex = 0.6,
xlim = c(0, max(Ls)),
# Aumentamos el ylim a 1.3 para que sobre espacio arriba para el título
ylim = c(0, max(Ni_asc) * 1.3),
bty = "l")
# 4. Agregar la Descendente
lines(x_desc, y_desc, col = "#CDB7B5", type = "b", pch = 19, cex = 0.6)
grid()
# 5. Títulos (Subimos la línea del mtext para que no choque con la leyenda)
mtext("Gráfica N°6: Ojivas Ascendentes y Descendentes de la\nDistribución de la Distancia a la via en las Plantas Solares",
side = 3, line = 4, adj = 0.5, cex = 1, font = 2)
mtext("Autor: Juleydi Miles", side = 1, line = 6, adj = 1, cex = 0.8)
# 6. Leyenda (La movemos un poco más a la derecha y reducimos tamaño)
legend("topright",
legend = c("Ascendente", "Descendente"),
col = c("black", "#CDB7B5"),
lty = 1,
pch = 19,
cex = 0.7,
bty = "n",
inset = c(0, -0.05)) # El 'inset' ayuda a moverla sutilmente fuera del área de dibujolibrary(dplyr)
library(gt)
library(moments)
# 1. Filtro de Datos Locales y Transformación a KM
dist_raw <- Datos$dist_to_road %>% na.omit()
q1_temp <- quantile(dist_raw, 0.25)
q3_temp <- quantile(dist_raw, 0.75)
iqr_temp <- q3_temp - q1_temp
lim_sup_m <- q3_temp + 1.5 * iqr_temp
# CREAMOS LA VARIABLE LOCAL YA EN KILÓMETROS
Variable_Local_KM <- dist_raw[dist_raw <= lim_sup_m] / 1000
# 2. Cálculos de Indicadores (Todo en KM)
media_k <- round(mean(Variable_Local_KM), 2)
mediana_k <- round(median(Variable_Local_KM), 2)
moda_k <- 0.05 # El centro del primer intervalo de 100m (0.1km) es 0.05km
varianza_k <- round(var(Variable_Local_KM), 4) # Más decimales por ser KM
sd_k <- round(sd(Variable_Local_KM), 2)
cv_k <- round((sd_k / abs(media_k)) * 100, 2)
asimetria_k <- round(skewness(Variable_Local_KM), 2)
curtosis_k <- round(kurtosis(Variable_Local_KM), 2)
# 3. Creación del DataFrame
tabla_indicadores_km <- data.frame(
"Variable" = "Distancia de la vía (km) - LOCAL",
"Rango_MinMax" = paste0("[", round(min(Variable_Local_KM), 2), "; ", round(max(Variable_Local_KM), 2), "]"),
"X" = media_k,
"Me" = mediana_k,
"Mo" = moda_k,
"V" = varianza_k,
"Sd" = sd_k,
"Cv" = cv_k,
"As" = asimetria_k,
"K" = curtosis_k,
"Outliers" = "0 [Outliers]"
)
# 4. Generar Tabla GT Profesional
tabla_indicadores_km %>%
gt() %>%
tab_header(title = md("**Tabla N°3 de Conclusiones de Distancia de la vía de las Plantas Solares)**")) %>%
tab_source_note(source_note = "Autor: Juleydi Miles") %>%
cols_label(
Variable = "Variable",
Rango_MinMax = "Rango (km)",
X = "Media (X)",
Me = "Mediana (Me)",
Mo = "Moda (Mo)",
V = "Varianza (V)",
Sd = "Desv. Est. (Sd)",
Cv = "C.V. (%)",
As = "Asimetría (As)",
K = "Curtosis (K)",
Outliers = "Outliers"
) %>%
cols_align(align = "center", columns = everything()) %>%
tab_options(
heading.title.font.size = px(16),
column_labels.background.color = "#F0F0F0"
)| Tabla N°3 de Conclusiones de Distancia de la vía de las Plantas Solares) | ||||||||||
| Variable | Rango (km) | Media (X) | Mediana (Me) | Moda (Mo) | Varianza (V) | Desv. Est. (Sd) | C.V. (%) | Asimetría (As) | Curtosis (K) | Outliers |
|---|---|---|---|---|---|---|---|---|---|---|
| Distancia de la vía (km) - LOCAL | [0; 6.31] | 1.13 | 0.56 | 0.05 | 1.9956 | 1.41 | 124.78 | 1.77 | 5.42 | 0 [Outliers] |
| Autor: Juleydi Miles | ||||||||||
La variable “Distancia a la vía” fluctúa entre 0 y 6.31 km y sus valores se encuentran alrededor de 1.73 km, con una desviación estándar de 1.70, siendo una variable muy heterogénea, cuyos valores se concentran en la parte inicial baja de la variable con la agregación de valores atípicos de 0 outliers; por todo lo anterior, el comportamiento de la variable es muy favorable.