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("Dataset_Mundial_Final.csv", sep = ";", fileEncoding = "latin1")
# Estructura de los datos
str(Datos)
## 'data.frame':    58978 obs. of  29 variables:
##  $ ï..OBJECTID           : int  2 3 4 5 6 7 8 9 10 11 ...
##  $ code                  : chr  "00001-AFG-P" "00002-AFG-P" "00003-AFG-P" "00004-AFG-P" ...
##  $ plant_name            : chr  "Badghis Solar Power Plant" "Balkh solar farm" "Behsood solar farm" "Dab Pal 4 solar farm" ...
##  $ country               : chr  "Afghanistan" "Afghanistan" "Afghanistan" "Afghanistan" ...
##  $ operational_status    : chr  "cancelled - inferred 4 y" "cancelled - inferred 4 y" "cancelled - inferred 4 y" "shelved - inferred 2 y" ...
##  $ longitude             : chr  "62,874" "67,121" "70,413" "66,239" ...
##  $ latitude              : chr  "35,078" "36,714" "34,407" "33,768" ...
##  $ elevation             : int  918 359 629 2288 1060 1060 1392 398 410 1012 ...
##  $ area                  : chr  "6,735" "10,718" "487,729" "111,801" ...
##  $ size                  : chr  "Small" "Small" "Small" "Small" ...
##  $ slope                 : chr  "7,375" "0,49" "1,099" "6,162" ...
##  $ slope_type            : chr  "Moderado" "Plano o casi plano" "Plano o casi plano" "Moderado" ...
##  $ curvature             : chr  "-0,024" "0" "0" "0,045" ...
##  $ curvature_type        : chr  "Superficies cóncavas / Valles" "Superficies planas o intermedias" "Superficies planas o intermedias" "Superficies convexas / Crestas" ...
##  $ aspect                : chr  "96,77" "358,452" "36,18" "305,766" ...
##  $ aspect_type           : chr  "East" "North" "Northeast" "Northwest" ...
##  $ dist_to_road          : chr  "7037,104" "92,748" "112,117" "1705,255" ...
##  $ ambient_temperature   : chr  "14,402" "17,875" "21,315" "8,857" ...
##  $ ghi                   : chr  "5,824" "5,579" "5,805" "6,749" ...
##  $ humidity              : chr  "47,743" "42,305" "36,396" "37,344" ...
##  $ wind_speed            : chr  "0,039" "0,954" "0,234" "0,943" ...
##  $ wind_direction        : chr  "187,481" "207,422" "255,601" "160,331" ...
##  $ dt_wind               : chr  "South" "Southwest" "West" "South" ...
##  $ solar_aptitude        : chr  "0,72" "0,635" "0,685" "0,659" ...
##  $ solar_aptitude_rounded: int  7 6 7 7 8 8 8 6 6 4 ...
##  $ solar_aptittude_class : chr  "Alta" "Alta" "Alta" "Alta" ...
##  $ capacity              : chr  "32" "40" "60" "3000" ...
##  $ optimal_tilt          : chr  "30" "31" "31,063" "33" ...
##  $ pv_potential          : chr  "4,613" "4,408" "4,572" "5,424" ...
# 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) 8118 13.76
Sureste (SE) 10675 18.10
Sur (S) 7327 12.42
Suroeste (SW) 21042 35.68
Oeste (W) 11472 19.45
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) 8118 13.76
Sureste (SE) 10675 18.10
Sur (S) 7327 12.42
Suroeste (SW) 21042 35.68
Oeste (W) 11472 19.45
Noroeste (NW) 31 0.05
TOTAL 58978 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 (%)`, 2), "%"), 
     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 (%)`, 2), "%"), 
     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.