1 Configuración y Carga de Datos

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


#### VARIABLE TIPO DE ASPECTO ####
## DATASET ##
setwd("~/R/ASPECT_TYPE")
# Cargar dataset
Datos <- read.csv("DataSet_.csv", sep = ";", fileEncoding = "latin1")
# Estructura de los datos
str(Datos)
## 'data.frame':    7142 obs. of  26 variables:
##  $ fid                  : int  1 2 3 4 5 6 7 8 9 10 ...
##  $ objectid             : int  127 128 129 130 131 132 133 134 135 136 ...
##  $ code                 : chr  "Arg-00001" "Arg-00002" "Arg-00003" "Arg-00004" ...
##  $ country              : chr  "Argentina" "Argentina" "Argentina" "Argentina" ...
##  $ plant_name           : chr  "Aconcagua solar farm" "Aconcagua solar farm" "Altiplano 200 Solar Power Plant" "Altiplano 200 Solar Power Plant" ...
##  $ operational_status   : chr  "announced" "announced" "operating" "operating" ...
##  $ longitude            : num  -68.9 -68.9 -66.9 -66.9 -68.9 ...
##  $ latitude             : num  -33 -33 -24.1 -24.1 -33.3 ...
##  $ elevation            : int  929 929 4000 4000 937 865 858 858 858 858 ...
##  $ area                 : num  0 0 4397290 5774 0 ...
##  $ slope                : num  0.574 0.574 1.603 6.243 0.903 ...
##  $ slope_type           : chr  "Plano o casi plano" "Plano o casi plano" "Plano o casi plano" "Moderado" ...
##  $ curvature            : num  0.000795 0.000795 -0.002781 -0.043699 0.002781 ...
##  $ curvature_type       : chr  "Superficies planas o intermedias" "Superficies planas o intermedias" "Superficies planas o intermedias" "Superficies cóncavas / Valles" ...
##  $ aspect               : num  55.1 55.1 188.7 270.9 108.4 ...
##  $ aspect_type          : chr  "Northeast" "Northeast" "South" "West" ...
##  $ ghi                  : num  6.11 6.11 8.01 7.88 6.12 ...
##  $ solar_aptitude       : num  0.746 0.746 0.8 0.727 0.595 ...
##  $ solar_aptittude_class: chr  "Alta" "Alta" "Alta" "Alta" ...
##  $ humidity             : num  0 0 53.7 53.7 0 ...
##  $ wind_speed           : num  3.78 3.78 7.02 8.33 3.87 ...
##  $ wind_direction       : num  0 0 55.1 55.1 0 ...
##  $ ambient_temperature  : num  12.6 12.6 6.8 6.8 13.1 ...
##  $ optimal_tilt         : int  31 31 26 26 31 33 30 30 30 30 ...
##  $ peak_power_per_hour  : num  4.98 4.98 6.39 6.39 4.97 ...
##  $ total_power          : num  25 66.2 101 107 180 ...
# 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
Aspect <- Datos$aspect_type
# EDAvariable nominal
TDF_aspect <- table(Aspect)

tabla_aspect <- as.data.frame(TDF_aspect)
hi <- tabla_aspect$Freq/sum(tabla_aspect$Freq)
hi_porc <- hi*100
sum(hi_porc)
## [1] 100
tabla_ASPECT <- data.frame(tabla_aspect, hi_porc)
colnames(tabla_ASPECT)[1] <- "Orientacion"

3 Categorización y Ordenamiento Lógico

### Agrupación ####
tabla_con_grupos <- tabla_ASPECT %>%
  mutate(grupo = case_when(
    grepl("Northeast", Orientacion, ignore.case = TRUE) ~ "Noreste (NE)",
    grepl("Northwest", Orientacion, ignore.case = TRUE) ~ "Noroeste (NW)",
    grepl("Southeast", Orientacion, ignore.case = TRUE) ~ "Sureste (SE)",
    grepl("Southwest", Orientacion, ignore.case = TRUE) ~ "Suroeste (SW)",
    grepl("North", Orientacion, ignore.case = TRUE) ~ "Norte (N)",
    grepl("South", Orientacion, ignore.case = TRUE) ~ "Sur (S)",
    grepl("East", Orientacion, ignore.case = TRUE) ~ "Este (E)",
    grepl("West", Orientacion, ignore.case = TRUE) ~ "Oeste (W)",
    grepl("Flat", Orientacion, ignore.case = TRUE) ~ "Plano (Flat)",
    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)",
  "Plano (Flat)",
  "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("Orientacion","ni","hi (%)")

# Tabla Intermedia GT
tabla_resumen_gt <- tabla_resumen %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°1 de Agrupación por Tipo de Aspecto**")) %>%
  tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
  cols_label(
    Orientacion = "Tipo de Aspecto",
    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 Tipo de Aspecto
Tipo de Aspecto Frecuencia (ni) Porcentaje (hi%)
Norte (N) 981 13.74
Noreste (NE) 865 12.11
Este (E) 847 11.86
Sureste (SE) 915 12.81
Sur (S) 774 10.84
Suroeste (SW) 697 9.76
Oeste (W) 1018 14.25
Noroeste (NW) 1022 14.31
Plano (Flat) 21 0.29
No Asignado / Otros 2 0.03
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_Aspect_Final <- rbind(tabla_resumen, totales)

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

# TABLA 1
tabla_gt <- tabla_Aspect_Final %>%
  gt() %>%
  tab_header(
    title = md("**Tabla N°2 de Distribución de Frecuencias de Tipo de Aspecto**")) %>%
  tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
  cols_label(
    Orientacion = "Tipo de Aspecto",
    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 Tipo de Aspecto
Tipo de Aspecto Frecuencia (ni) Porcentaje (hi%)
Norte (N) 981 13.74
Noreste (NE) 865 12.11
Este (E) 847 11.86
Sureste (SE) 915 12.81
Sur (S) 774 10.84
Suroeste (SW) 697 9.76
Oeste (W) 1018 14.25
Noroeste (NW) 1022 14.31
Plano (Flat) 21 0.29
No Asignado / Otros 2 0.03
TOTAL 7142 100.00
Autor: Martin Sarmiento

5 Gráficos

5.1 Gráfico 1 – Frecuencia local

# Diagrama de barrras local ni
par(mar = c(10, 4, 4, 2)) 
barplot(tabla_resumen$ni,
        main="Gráfica N°1: Distribución de Cantidad de Plantas Solares por Tipo de Aspecto",
        cex.main = 1,
        xlab = "",
        ylab = "Cantidad",
        col = "#E8F5E9",
        names.arg=tabla_resumen$Orientacion,
        cex.names = 0.7,
        las = 2)
mtext("Tipo de Aspecto", side = 1, line = 9)

5.2 Gráfico 2 – Frecuencia global

# Diagrama de barrras global ni
par(mar = c(10, 4, 4, 2)) 
barplot(tabla_resumen$ni,
        main="Gráfica N°2: Distribución de Cantidades Globales de las Plantas Solares por Tipo de Aspecto",
        cex.main = 0.8,
        xlab = "",
        ylab = "Cantidad",
        col = "#E8F5E9",
        ylim = c(0,8000), 
        names.arg=tabla_resumen$Orientacion,
        cex.names = 0.7,
        las = 2)
mtext("Tipo de Aspecto", side = 1, line = 9)

5.3 Gráfico 3 – Porcentaje local

# Diagrama de barrras local hi
par(mar = c(10, 4, 4, 2)) 
barplot(tabla_resumen$`hi (%)`,
        main="Gráfica N°3: Distribución Porcentual de las Plantas Solares por Tipo de Aspecto",
        cex.main = 1,
        xlab = "",
        ylab = "Porcentaje %",
        col = "#E8F5E9",
        names.arg=tabla_resumen$Orientacion,
        cex.names = 0.7,
        las = 2)
mtext("Tipo de Aspecto", side = 1, line = 9)

5.4 Gráfico 4 – Porcentaje global

# Diagrama de barrras global hi
par(mar = c(10, 4, 4, 2)) 
barplot(tabla_resumen$`hi (%)`,
        main="Gráfica N°4: Distribución Porcentual Global de las Plantas Solares por Tipo de Aspecto",
        cex.main = 0.9,
        xlab = "",
        ylab = "Porcentaje %",
        col = "#E8F5E9",
        ylim = c(0,100),
        names.arg=tabla_resumen$Orientacion,
        cex.names = 0.7,
        las = 2)
mtext("Tipo de Aspecto", side = 1, line = 9)

5.5 Gráfico 5 – Diagrama Circular

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

colores_base <- c("#E8F5E9", "#1B5E20")

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

pie(tabla_resumen$`hi (%)`, 
    main = "Gráfica N°5: Distribución Porcentual de las Plantas Solares por Tipo de Aspecto",
    cex.main = 0.9,
    radius = 0.9,
    labels = paste0(round(tabla_resumen$`hi (%)`, 2), "%"),
    col = colores_finales, 
    cex = 0.8,            
    border = "black")
par(xpd = TRUE)

# Leyenda del diagrama circular
legend(x = 1.3, y = 1,
       legend = tabla_resumen$Orientacion,
       fill = colores_finales, 
       cex = 0.7,            
       bty = "n",            
       title = "Tipo de Aspecto")

6 Indicadores Estadísticos

# Tabla de Indicadores
tabla_indicadores <- data.frame(
  "Variable" = "Tipo de Aspecto",
  "Rango" = "Puntos Cardinales",
  "Media (X)" = "-", 
  "Mediana (Me)" = "-", 
  "Moda (Mo)" = "Norte (N)", 
  "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**")) %>%
  tab_source_note(source_note = "Autor: Martin Sarmiento") %>%
  tab_options(column_labels.background.color = "#f0f0f0")

tabla_conclusiones_gt
Tabla N°3 de Conclusiones
Variable Rango Media (X) Mediana (Me) Moda (Mo) Varianza (V) Desv. Est. (Sd) C.V. (%) Asimetría (As) Curtosis (K)
Tipo de Aspecto Puntos Cardinales - - Norte (N) - - - - -
Autor: Martin Sarmiento

7 Conclusiones

La variable “Tipo de Aspecto”, presenta como valor más frecuente Norte (N), con una participación destacada en la muestra.