1 Configuración y Carga de Datos

##### UNIVERSIDAD CENTRAL DEL ECUADOR #####
#### AUTOR: MARTIN SARMIENTO ####
### CARRERA: INGENIERÍA EN PETRÓLEOS #####


#### VARIABLE DIRECCIÓN DEL VIENTO PREDOMINANTE ####
## DATASET ##
setwd("~/R/DT_WIND")
# Cargar dataset
Datos <- read.csv("Data_Mundial_Final.csv", sep = ";", fileEncoding = "latin1")
# Estructura de los datos
str(Datos)
## 'data.frame':    58771 obs. of  29 variables:
##  $ OBJECTID              : int  127 129 131 132 133 137 138 139 140 145 ...
##  $ code                  : chr  "00127-ARG-P" "00129-ARG-G" "00131-ARG-P" "00132-ARG-P" ...
##  $ plant_name            : chr  "Aconcagua solar farm" "Altiplano 200 Solar Power Plant" "Anchoris solar farm" "Antu Newen solar farm" ...
##  $ country               : chr  "Argentina" "Argentina" "Argentina" "Argentina" ...
##  $ operational_status    : chr  "announced" "operating" "construction" "cancelled - inferred 4 y" ...
##  $ longitude             : chr  "-68,8713" "-66,895798" "-68,915001" "-70,269897" ...
##  $ latitude              : chr  "-32,998501" "-24,1392" "-33,330101" "-37,375801" ...
##  $ elevation             : int  929 4000 937 865 858 570 1612 665 3989 2640 ...
##  $ area                  : chr  "250,337006" "4397290" "645,163025" "241,276001" ...
##  $ size                  : chr  "Small" "Big" "Small" "Small" ...
##  $ slope                 : chr  "0,574179" "1,60257" "0,902748" "1,79147" ...
##  $ slope_type            : chr  "Plano o casi plano" "Plano o casi plano" "Plano o casi plano" "Plano o casi plano" ...
##  $ curvature             : chr  "0,000795" "-0,002781" "0,002781" "-0,002384" ...
##  $ curvature_type        : chr  "Superficies planas o intermedias" "Superficies planas o intermedias" "Superficies planas o intermedias" "Superficies planas o intermedias" ...
##  $ aspect                : chr  "55,124672" "188,707367" "108,434952" "239,349335" ...
##  $ aspect_type           : chr  "Northeast" "South" "East" "Southwest" ...
##  $ dist_to_road          : chr  "127,2827045" "56014,95403" "335,9280031" "34,00973342" ...
##  $ ambient_temperature   : chr  "12,6" "6,8" "13,1" "11,4" ...
##  $ ghi                   : chr  "6,11" "8,012" "6,119" "6,223" ...
##  $ humidity              : chr  "53,74" "53,74" "53,74" "53,74" ...
##  $ wind_speed            : chr  "3,7789" "7,02062" "3,87037" "6,55962" ...
##  $ wind_direction        : chr  "55,099998" "55,099998" "55,099998" "55,099998" ...
##  $ dt_wind               : chr  "Northeast" "Northeast" "Northeast" "Northeast" ...
##  $ solar_aptitude        : chr  "0,746197" "0,8" "0,595309" "0,657269" ...
##  $ solar_aptitude_rounded: int  7 8 6 7 7 7 8 7 8 6 ...
##  $ solar_aptittude_class : chr  "Alta" "Alta" "Media" "Alta" ...
##  $ capacity              : chr  "25" "101" "180" "20" ...
##  $ optimal_tilt          : chr  "31" "26" "31" "33" ...
##  $ pv_potential          : chr  "4,983" "6,389" "4,969" "5,002" ...
# Cargamos las librerias
library(dplyr)
## 
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(ggplot2)
library(gt)

2 Extracción y Conteo Inicial

# Extraer variable
Wind <- Datos$dt_wind
# EDAvariable nominal
TDF_wind <- table(Wind)

tabla_wind <- as.data.frame(TDF_wind)
hi <- tabla_wind$Freq/sum(tabla_wind$Freq)
hi_porc <- hi*100
sum(hi_porc)
## [1] 100
tabla_WIND <- data.frame(tabla_wind, hi_porc)
colnames(tabla_WIND)[1] <- "Velocidad"

3 Categorización y Ordenamiento Lógico

### Agrupación ####
tabla_con_grupos <- tabla_WIND %>%
  mutate(grupo = case_when(
    grepl("Northeast", Velocidad, ignore.case = TRUE) ~ "Noreste (NE)",
    grepl("Northwest", Velocidad, ignore.case = TRUE) ~ "Noroeste (NW)",
    grepl("Southeast", Velocidad, ignore.case = TRUE) ~ "Sureste (SE)",
    grepl("Southwest", Velocidad, ignore.case = TRUE) ~ "Suroeste (SW)",
    grepl("North", Velocidad, ignore.case = TRUE) ~ "Norte (N)",
    grepl("South", Velocidad, ignore.case = TRUE) ~ "Sur (S)",
    grepl("East", Velocidad, ignore.case = TRUE) ~ "Este (E)",
    grepl("West", Velocidad, ignore.case = TRUE) ~ "Oeste (W)",
    TRUE ~ "No Asignado / Otros"))
  
# Definimos el orden 
orden_horario <- c(
  "Norte (N)",
  "Noreste (NE)",
  "Este (E)",
  "Sureste (SE)",
  "Sur (S)",
  "Suroeste (SW)",
  "Oeste (W)",
  "Noroeste (NW)",
  "No Asignado / Otros",
  "TOTAL")

tabla_resumen <- tabla_con_grupos %>%
  mutate(grupo = factor(grupo, levels = orden_horario)) %>%
  group_by(grupo) %>% 
  summarise(
    Frecuencia = sum(Freq),
    Porcentaje = sum(hi_porc)) %>%
  arrange(grupo)

# Renombramos columnas
colnames(tabla_resumen) <- c("Velocidad","ni","hi (%)")

# Tabla Intermedia GT
tabla_resumen_gt <- tabla_resumen %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1 de Agrupación por Dirección del Viento Predominante de las Plantas Solares**")) %>%
  tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
  cols_label(
    Velocidad = "Dirección del Viento Predominante",
    ni = "Frecuencia (ni)",
    `hi (%)` = "Porcentaje (hi%)") %>%
  fmt_number(columns = c(`hi (%)`), decimals = 2) %>%
  tab_options(
    heading.title.font.size = px(16),
    heading.subtitle.font.size = px(14),
    column_labels.background.color = "#F0F0F0")

# Mostramos la tabla 
tabla_resumen_gt
Tabla N°1 de Agrupación por Dirección del Viento Predominante de las Plantas Solares
Dirección del Viento Predominante Frecuencia (ni) Porcentaje (hi%)
Norte (N) 153 0.26
Noreste (NE) 160 0.27
Este (E) 8064 13.72
Sureste (SE) 10618 18.07
Sur (S) 7304 12.43
Suroeste (SW) 20980 35.70
Oeste (W) 11461 19.50
Noroeste (NW) 31 0.05
Autor: Martin Sarmiento

4 Tabla de Distribución de Frecuencias

#### Crear fila de totales ####
totales <- c("TOTAL", sum(tabla_resumen$ni, na.rm=TRUE), sum(tabla_resumen$`hi (%)`, na.rm=TRUE))
tabla_Wind_Final <- rbind(tabla_resumen, totales)

# Convertir a números para GT
tabla_Wind_Final$ni <- as.numeric(tabla_Wind_Final$ni)
tabla_Wind_Final$`hi (%)` <- as.numeric(tabla_Wind_Final$`hi (%)`)

# TABLA 1
tabla_gt <- tabla_Wind_Final %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°2 de Distribución de Frecuencias de la Dirección del Viento Predominante de las Plantas Solares**")) %>%
  tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
  cols_label(
    Velocidad = "Dirección del Viento Predominante",
    ni = "Frecuencia (ni)",
    `hi (%)` = "Porcentaje (hi%)") %>%
  fmt_number(columns = c(`hi (%)`), decimals = 2) %>%
  tab_options(
    heading.title.font.size = px(16),
    heading.subtitle.font.size = px(14),
    column_labels.background.color = "#F0F0F0")

tabla_gt
Tabla N°2 de Distribución de Frecuencias de la Dirección del Viento Predominante de las Plantas Solares
Dirección del Viento Predominante Frecuencia (ni) Porcentaje (hi%)
Norte (N) 153 0.26
Noreste (NE) 160 0.27
Este (E) 8064 13.72
Sureste (SE) 10618 18.07
Sur (S) 7304 12.43
Suroeste (SW) 20980 35.70
Oeste (W) 11461 19.50
Noroeste (NW) 31 0.05
TOTAL 58771 100.00
Autor: Martin Sarmiento

5 Análisis Gráfico

5.1 Diagramas de Barras de Cantidad

par(mar = c(13, 6, 4, 2)) 
barplot(tabla_resumen$ni,
        main="",
        xlab = "",
        ylab = "",
        col = "#FFB6C1",
        ylim = c(0, max(tabla_resumen$ni) * 1.1),
        names.arg=tabla_resumen$Velocidad,
        cex.names = 0.7,
        las = 2)
mtext("Cantidad", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Dirección del Viento Predominante", side = 1, line = 9)

mtext("Gráfica N°1: Distribución de Cantidad de Plantas Solares por Dirección del Viento Predominante", 
      side = 3, 
      line = 2,
      adj = 0.5, 
      cex = 0.8, 
      font = 2)

par(mar = c(13, 6, 4, 2)) 
barplot(tabla_resumen$ni,
        main="",
        xlab = "",
        ylab = "",
        col = "#FFB6C1",
        ylim = c(0,58771), 
        names.arg=tabla_resumen$Velocidad,
        cex.names = 0.7,
        las = 2)
mtext("Cantidad", side = 2, line = 4.5, cex = 1, font = 1)
mtext("Dirección del Viento Predominante", side = 1, line = 9)

mtext("Gráfica N°2: Distribución de Cantidad de Plantas Solares por Dirección del Viento Predominante", 
      side = 3, 
      line = 2,
      adj = 0.5,
      cex = 0.8,
      font = 2)

5.2 Diagramas de Barras Porcentual

par(mar = c(10, 4, 4, 2)) 
bp3 <- barplot(tabla_resumen$`hi (%)`,
        main="",
        xlab = "",
        ylab = "Porcentaje %",
        col = "#FFB6C1",
        ylim = c(0, max(tabla_resumen$`hi (%)`) * 1.3),
        names.arg=tabla_resumen$Velocidad,
        cex.names = 0.7,
        las = 2)
mtext("Dirección del Viento Predominante", side = 1, line = 9)

mtext("Gráfica N°3: Distribución Porcentual de las Plantas Solares por Dirección del Viento Predominante", 
      side = 3, 
      line = 2, 
      adj = 0.5, 
      cex = 0.8, 
      font = 2)

text(x = bp3, y = tabla_resumen$`hi (%)`, 
     labels = paste0(round(tabla_resumen$`hi (%)`, 1), "%"), 
     pos = 3, cex = 0.8, col = "black")

par(mar = c(10, 4, 4, 2)) 
bp4 <- barplot(tabla_resumen$`hi (%)`,
        main="",
        xlab = "",
        ylab = "Porcentaje %",
        col = "#FFB6C1",
        ylim = c(0,100),
        names.arg=tabla_resumen$Velocidad,
        cex.names = 0.7,
        las = 2)
mtext("Dirección del Viento Predominante", side = 1, line = 9)

mtext("Gráfica N°4: Distribución Porcentual de las Plantas Solares por Dirección del Viento Predominante", 
      side = 3, 
      line = 2, 
      adj = 0.5,
      cex = 0.8, 
      font = 2)

text(x = bp4, y = tabla_resumen$`hi (%)`, 
     labels = paste0(round(tabla_resumen$`hi (%)`, 1), "%"), 
     pos = 3, cex = 0.8, col = "black")

5.3 Diagrama Circular

par(mar = c(5, 6, 4, 10), xpd = TRUE)

colores_base <- c("#FFB6C1", "#8B5F65")

paleta_verde_pro <- colorRampPalette(colores_base)
colores_finales <- paleta_verde_pro(length(tabla_resumen$Velocidad))

pie(tabla_resumen$`hi (%)`, 
    main = "",
    radius = 0.9,
    labels = paste0(round(tabla_resumen$`hi (%)`, 2), "%"),
    col = colores_finales, 
    cex = 0.8,            
    border = "black")
par(xpd = TRUE)

mtext("Gráfica N°5: Distribución Porcentual de las Plantas Solares por Dirección del Viento Predominante",  
      side = 3, 
      line = 2, 
      adj = 0.5, 
      cex = 0.7, 
      font = 2)

legend(x = 1.3, y = 1,
       legend = tabla_resumen$Velocidad,
       fill = colores_finales, 
       cex = 0.7,            
       bty = "n",            
       title = "Dirección del Viento Predominante")

6 Indicadores Estadísticos

# Cálculo de la Moda 
moda_wind <- tabla_resumen$Velocidad[which.max(tabla_resumen$ni)]

# Tabla de Indicadores
tabla_indicadores <- data.frame(
  "Variable" = "Dirección del Viento Predominante",
  "Rango" = "N, NE, E, SE, S, SW, W, NW",
  "Media (X)" = "-", 
  "Mediana (Me)" = "-", 
  "Moda (Mo)" = moda_wind, 
  "Varianza (V)" = "-", 
  "Desv. Est. (Sd)" = "-", 
  "C.V. (%)" = "-", 
  "Asimetría (As)" = "-", 
  "Curtosis (K)" = "-",
  check.names = FALSE)

# Generar Tabla de Indicadores
tabla_conclusiones_gt <- tabla_indicadores %>%
  gt() %>%
  tab_header(title = md("**Tabla N°3 de Conclusiones de la Dirección del Viento Predominante de las Plantas Solares**")) %>%
  tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
  tab_options(column_labels.background.color = "#F0F0F0")

tabla_conclusiones_gt
Tabla N°3 de Conclusiones de la Dirección del Viento Predominante de las Plantas Solares
Variable Rango Media (X) Mediana (Me) Moda (Mo) Varianza (V) Desv. Est. (Sd) C.V. (%) Asimetría (As) Curtosis (K)
Dirección del Viento Predominante N, NE, E, SE, S, SW, W, NW - - Suroeste (SW) - - - - -
Autor: Martin Sarmiento

7 Conclusiones

La variable “Dirección del Viento Predominante”, presenta como valor más frecuente es Suroeste (SW) , con una participación destacada en la muestra.