Descriptive_Analysis

Author

Miguel Ángel Pérez Vargas, Miguel Ángel Consuegra Ramos

Published

August 27, 2024

library(readr)
dataGPP <- read_csv("C:/Users/RYZEN/Desktop/global_power_plant_database.csv")

Esta base de datos incluye información de alrededor de 35,000 plantas de energía en 167 países, incluyendo plantas térmicas y renovables. Cada planta está geolocalizada e incluye datos sobre capacidad, generación, propiedad y tipo de combustible. Es una herramienta de código abierto y actualizable, diseñada para facilitar el análisis y comparación de plantas energéticas a nivel global, con el respaldo del World Resources Institute. Su última actualización fue en junio 2 de 2021.

Original Data Source: https://datasets.wri.org/dataset/globalpowerplantdatabase

Con fines ilustrativos, se hace una vista preliminar de los primeros 10 registros de este dataset:

library(knitr)
print(kable(head(dataGPP, 10)))


|country |country_long |name                                                      |gppd_idnr    | capacity_mw| latitude| longitude|primary_fuel |other_fuel1 |other_fuel2 |other_fuel3 | commissioning_year|owner |source                     |url                                                                                   |geolocation_source |wepp_id | year_of_capacity_data| generation_gwh_2013| generation_gwh_2014| generation_gwh_2015| generation_gwh_2016| generation_gwh_2017| generation_gwh_2018| generation_gwh_2019|generation_data_source | estimated_generation_gwh_2013| estimated_generation_gwh_2014| estimated_generation_gwh_2015| estimated_generation_gwh_2016| estimated_generation_gwh_2017|estimated_generation_note_2013 |estimated_generation_note_2014 |estimated_generation_note_2015 |estimated_generation_note_2016 |estimated_generation_note_2017 |
|:-------|:------------|:---------------------------------------------------------|:------------|-----------:|--------:|---------:|:------------|:-----------|:-----------|:-----------|------------------:|:-----|:--------------------------|:-------------------------------------------------------------------------------------|:------------------|:-------|---------------------:|-------------------:|-------------------:|-------------------:|-------------------:|-------------------:|-------------------:|-------------------:|:----------------------|-----------------------------:|-----------------------------:|-----------------------------:|-----------------------------:|-----------------------------:|:------------------------------|:------------------------------|:------------------------------|:------------------------------|:------------------------------|
|AFG     |Afghanistan  |Kajaki Hydroelectric Power Plant Afghanistan              |GEODB0040538 |       33.00|  32.3220|   65.1190|Hydro        |NA          |NA          |NA          |                 NA|NA    |GEODB                      |http://globalenergyobservatory.org                                                    |GEODB              |1009793 |                  2017|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                        123.77|                        162.90|                         97.39|                        137.76|                        119.50|HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |
|AFG     |Afghanistan  |Kandahar DOG                                              |WKS0070144   |       10.00|  31.6700|   65.7950|Solar        |NA          |NA          |NA          |                 NA|NA    |Wiki-Solar                 |https://www.wiki-solar.org                                                            |Wiki-Solar         |NA      |                    NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                         18.43|                         17.48|                         18.25|                         17.70|                         18.29|SOLAR-V1-NO-AGE                |SOLAR-V1-NO-AGE                |SOLAR-V1-NO-AGE                |SOLAR-V1-NO-AGE                |SOLAR-V1-NO-AGE                |
|AFG     |Afghanistan  |Kandahar JOL                                              |WKS0071196   |       10.00|  31.6230|   65.7920|Solar        |NA          |NA          |NA          |                 NA|NA    |Wiki-Solar                 |https://www.wiki-solar.org                                                            |Wiki-Solar         |NA      |                    NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                         18.64|                         17.58|                         19.10|                         17.62|                         18.72|SOLAR-V1-NO-AGE                |SOLAR-V1-NO-AGE                |SOLAR-V1-NO-AGE                |SOLAR-V1-NO-AGE                |SOLAR-V1-NO-AGE                |
|AFG     |Afghanistan  |Mahipar Hydroelectric Power Plant Afghanistan             |GEODB0040541 |       66.00|  34.5560|   69.4787|Hydro        |NA          |NA          |NA          |                 NA|NA    |GEODB                      |http://globalenergyobservatory.org                                                    |GEODB              |1009795 |                  2017|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                        225.06|                        203.55|                        146.90|                        230.18|                        174.91|HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |
|AFG     |Afghanistan  |Naghlu Dam Hydroelectric Power Plant Afghanistan          |GEODB0040534 |      100.00|  34.6410|   69.7170|Hydro        |NA          |NA          |NA          |                 NA|NA    |GEODB                      |http://globalenergyobservatory.org                                                    |GEODB              |1009797 |                  2017|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                        406.16|                        357.22|                        270.99|                        395.38|                        350.80|HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |
|AFG     |Afghanistan  |Nangarhar (Darunta) Hydroelectric Power Plant Afghanistan |GEODB0040536 |       11.55|  34.4847|   70.3633|Hydro        |NA          |NA          |NA          |                 NA|NA    |GEODB                      |http://globalenergyobservatory.org                                                    |GEODB              |1009787 |                  2017|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                         58.77|                         54.42|                         42.71|                         59.72|                         46.12|HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |
|AFG     |Afghanistan  |Northwest Kabul Power Plant Afghanistan                   |GEODB0040540 |       42.00|  34.5638|   69.1134|Gas          |NA          |NA          |NA          |                 NA|NA    |GEODB                      |http://globalenergyobservatory.org                                                    |GEODB              |NA      |                  2017|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                            NA|                            NA|                            NA|                            NA|                            NA|NO-ESTIMATION                  |NO-ESTIMATION                  |NO-ESTIMATION                  |NO-ESTIMATION                  |NO-ESTIMATION                  |
|AFG     |Afghanistan  |Pul-e-Khumri Hydroelectric Power Plant Afghanistan        |GEODB0040537 |        6.00|  35.9416|   68.7100|Hydro        |NA          |NA          |NA          |                 NA|NA    |GEODB                      |http://globalenergyobservatory.org                                                    |GEODB              |NA      |                  2017|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                         21.99|                         21.19|                         18.40|                         25.34|                         19.74|HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |
|AFG     |Afghanistan  |Sarobi Dam Hydroelectric Power Plant Afghanistan          |GEODB0040535 |       22.00|  34.5865|   69.7757|Hydro        |NA          |NA          |NA          |                 NA|NA    |GEODB                      |http://globalenergyobservatory.org                                                    |GEODB              |1009799 |                  2017|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                        123.23|                         82.87|                         69.15|                         93.83|                         80.00|HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |
|ALB     |Albania      |Bistrica 1                                                |WRI1002169   |       27.00|  39.9116|   20.1047|Hydro        |NA          |NA          |NA          |               1965|NA    |Energy Charter Secretariat |http://www.energycharter.org/fileadmin/DocumentsMedia/IDEER/IDEER-Albania_2013_en.pdf |GEODB              |1021225 |                    NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|                  NA|NA                     |                        105.17|                         75.26|                         79.50|                        105.45|                         88.45|HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |HYDRO-V1                       |

Además, se presenta un gráfico de barras apiladas que muestra la distribución proporcional de los diferentes tipos de plantas energéticas en los 10 países con mayor cantidad de plantas.

#Cargar las librerías necesarias
library(ggplot2)
library(dplyr)
#Identificar los 10 países con más plantas energéticas
top_10_paises <- dataGPP %>%
  count(country, sort = TRUE) %>%
  top_n(10, wt = n) %>%
  pull(country)
#Aplicar un filtro para conservar solo las plantas en los 10 países seleccionados
data_top10 <- dataGPP %>%
  filter(country %in% top_10_paises)
# Crear un gráfico de barras apiladas que muestra la distribución de los tipos de plantas energéticas (primary_fuel) por país
ggplot(data_top10, aes(x = country, fill = primary_fuel)) +
  geom_bar(position = "stack") +
  labs(
    title = "Distribución de Tipos de Plantas Energéticas por País",
    x = "País",
    y = "Número de Plantas",
    fill = "Tipo de Combustible Primario"
  ) +
  theme_minimal()

El dataset está compuesto por un total de 34936 filas y 36 columnas:

dim(dataGPP)
[1] 34936    36

Esta base de datos, contiene 36 variables diferentes, que se definen y clasifican según sus tipos en la siguiente tabla:

#Cargar las librerías necesarias
library(knitr)
library(kableExtra)
#Crear un dataframe con las variables, sus definiciones y el tipo de variable
variables <- data.frame(
  Variable = c("country", "country_long", "name", "gppd_idnr", "capacity_mw", 
               "latitude", "longitude", "primary_fuel", "other_fuel1", 
               "other_fuel2", "other_fuel3", "commissioning_year", "owner", 
               "source", "url", "geolocation_source", "wepp_id", 
               "year_of_capacity_data", "generation_gwh_2013", 
               "generation_gwh_2014", "generation_gwh_2015", 
               "generation_gwh_2016", "generation_gwh_2017", 
               "generation_gwh_2018", "generation_gwh_2019", 
               "generation_data_source", "estimated_generation_gwh_2013", 
               "estimated_generation_gwh_2014", "estimated_generation_gwh_2015", 
               "estimated_generation_gwh_2016", "estimated_generation_gwh_2017", 
               "estimated_generation_note_2013", "estimated_generation_note_2014", 
               "estimated_generation_note_2015", "estimated_generation_note_2016", 
               "estimated_generation_note_2017"),
  
  Definición = c("País en el que se encuentra la planta.",
                 "Nombre completo del país.",
                 "Nombre de la planta de energía.",
                 "Identificador único de la planta de energía en la base de datos GPPD.",
                 "Capacidad de la planta de energía en megavatios (MW).",
                 "Coordenada de latitud de la planta de energía.",
                 "Coordenada de longitud de la planta de energía.",
                 "Combustible principal utilizado por la planta de energía.",
                 "Tipo de combustible secundario.",
                 "Tipo de combustible terciario.",
                 "Tipo de combustible cuaternario.",
                 "Año en que se puso en servicio la planta de energía.",
                 "Propietario de la planta de energía.",
                 "Fuente de los datos.",
                 "Enlace URL a la fuente de los datos.",
                 "Fuente de los datos de geolocalización.",
                 "ID de World Electric Power Plants (WEPP).",
                 "Año de los datos de capacidad proporcionados.",
                 "Generación de electricidad en GWh para el año 2013.",
                 "Generación de electricidad en GWh para el año 2014.",
                 "Generación de electricidad en GWh para el año 2015.",
                 "Generación de electricidad en GWh para el año 2016.",
                 "Generación de electricidad en GWh para el año 2017.",
                 "Generación de electricidad en GWh para el año 2018.",
                 "Generación de electricidad en GWh para el año 2019.",
                 "Fuente de los datos de generación.",
                 "Generación estimada de electricidad en GWh para el año 2013.",
                 "Generación estimada de electricidad en GWh para el año 2014.",
                 "Generación estimada de electricidad en GWh para el año 2015.",
                 "Generación estimada de electricidad en GWh para el año 2016.",
                 "Generación estimada de electricidad en GWh para el año 2017.",
                 "Notas sobre la generación estimada para 2013.",
                 "Notas sobre la generación estimada para 2014.",
                 "Notas sobre la generación estimada para 2015.",
                 "Notas sobre la generación estimada para 2016.",
                 "Notas sobre la generación estimada para 2017."),
  
  Tipo = c("Cualitativa, nominal", "Cualitativa, nominal", "Cualitativa, nominal", "Cualitativa, nominal", "Cuantitativa, continua", 
           "Cuantitativa, continua", "Cuantitativa, continua", "Cualitativa, nominal", "Cualitativa, nominal", 
           "Cualitativa, nominal", "Cualitativa, nominal", "Cuantitativa, discreta", "Cualitativa, nominal", 
           "Cualitativa, nominal", "Cualitativa, nominal", "Cualitativa, nominal", "Cualitativa, nominal", "Cuantitativa, discreta", 
           "Cuantitativa, continua", "Cuantitativa, continua", "Cuantitativa, continua", "Cuantitativa, continua", 
           "Cuantitativa, continua", "Cuantitativa, continua", "Cuantitativa, continua", "Cualitativa, nominal", 
           "Cuantitativa, continua", "Cuantitativa, continua", "Cuantitativa, continua", "Cuantitativa, continua", 
           "Cuantitativa, continua", "Cualitativa, nominal", "Cualitativa, nominal", "Cualitativa, nominal", 
           "Cualitativa, nominal", "Cualitativa, nominal")
)
#Crear una tabla a partir del dataframe
kable(variables, format = "html", escape = FALSE, col.names = c("Variable", "Definición", "Tipo")) %>%
  kable_styling(full_width = F, position = "left") %>%
  add_header_above(c("Variables used" = 3))
Variables used
Variable Definición Tipo
country País en el que se encuentra la planta. Cualitativa, nominal
country_long Nombre completo del país. Cualitativa, nominal
name Nombre de la planta de energía. Cualitativa, nominal
gppd_idnr Identificador único de la planta de energía en la base de datos GPPD. Cualitativa, nominal
capacity_mw Capacidad de la planta de energía en megavatios (MW). Cuantitativa, continua
latitude Coordenada de latitud de la planta de energía. Cuantitativa, continua
longitude Coordenada de longitud de la planta de energía. Cuantitativa, continua
primary_fuel Combustible principal utilizado por la planta de energía. Cualitativa, nominal
other_fuel1 Tipo de combustible secundario. Cualitativa, nominal
other_fuel2 Tipo de combustible terciario. Cualitativa, nominal
other_fuel3 Tipo de combustible cuaternario. Cualitativa, nominal
commissioning_year Año en que se puso en servicio la planta de energía. Cuantitativa, discreta
owner Propietario de la planta de energía. Cualitativa, nominal
source Fuente de los datos. Cualitativa, nominal
url Enlace URL a la fuente de los datos. Cualitativa, nominal
geolocation_source Fuente de los datos de geolocalización. Cualitativa, nominal
wepp_id ID de World Electric Power Plants (WEPP). Cualitativa, nominal
year_of_capacity_data Año de los datos de capacidad proporcionados. Cuantitativa, discreta
generation_gwh_2013 Generación de electricidad en GWh para el año 2013. Cuantitativa, continua
generation_gwh_2014 Generación de electricidad en GWh para el año 2014. Cuantitativa, continua
generation_gwh_2015 Generación de electricidad en GWh para el año 2015. Cuantitativa, continua
generation_gwh_2016 Generación de electricidad en GWh para el año 2016. Cuantitativa, continua
generation_gwh_2017 Generación de electricidad en GWh para el año 2017. Cuantitativa, continua
generation_gwh_2018 Generación de electricidad en GWh para el año 2018. Cuantitativa, continua
generation_gwh_2019 Generación de electricidad en GWh para el año 2019. Cuantitativa, continua
generation_data_source Fuente de los datos de generación. Cualitativa, nominal
estimated_generation_gwh_2013 Generación estimada de electricidad en GWh para el año 2013. Cuantitativa, continua
estimated_generation_gwh_2014 Generación estimada de electricidad en GWh para el año 2014. Cuantitativa, continua
estimated_generation_gwh_2015 Generación estimada de electricidad en GWh para el año 2015. Cuantitativa, continua
estimated_generation_gwh_2016 Generación estimada de electricidad en GWh para el año 2016. Cuantitativa, continua
estimated_generation_gwh_2017 Generación estimada de electricidad en GWh para el año 2017. Cuantitativa, continua
estimated_generation_note_2013 Notas sobre la generación estimada para 2013. Cualitativa, nominal
estimated_generation_note_2014 Notas sobre la generación estimada para 2014. Cualitativa, nominal
estimated_generation_note_2015 Notas sobre la generación estimada para 2015. Cualitativa, nominal
estimated_generation_note_2016 Notas sobre la generación estimada para 2016. Cualitativa, nominal
estimated_generation_note_2017 Notas sobre la generación estimada para 2017. Cualitativa, nominal

Luego, analizaremos los datos faltantes, a través de tablas y gráficos.

En primer lugar, generamos una tabla que muestra el número de datos faltantes para cada variable, junto con el porcentaje que estos representan en relación con el total de observaciones de cada una de ellas.

#Importar las librerías necesarias
library(dplyr)
library(tidyr) 
library(knitr)
#Crear un resumen de valores faltantes por variable
  resumen <- dataGPP %>%
  summarise_all(~sum(is.na(.))) %>%
  pivot_longer(cols = everything(), names_to = "Variable", values_to = "Valores_Faltantes") %>%
  mutate(Porcentaje = round((Valores_Faltantes / nrow(dataGPP)) * 100, 2))
#Genarar y mostrar la tabla
print(kable(resumen, caption = "Resumen de Valores Faltantes ('NA') por Variable", align = "c"))


Table: Resumen de Valores Faltantes ('NA') por Variable

|            Variable            | Valores_Faltantes | Porcentaje |
|:------------------------------:|:-----------------:|:----------:|
|            country             |         0         |    0.00    |
|          country_long          |         0         |    0.00    |
|              name              |         0         |    0.00    |
|           gppd_idnr            |         0         |    0.00    |
|          capacity_mw           |         0         |    0.00    |
|            latitude            |         0         |    0.00    |
|           longitude            |         0         |    0.00    |
|          primary_fuel          |         0         |    0.00    |
|          other_fuel1           |       32992       |   94.44    |
|          other_fuel2           |       34660       |   99.21    |
|          other_fuel3           |       34936       |   100.00   |
|       commissioning_year       |       17489       |   50.06    |
|             owner              |       14068       |   40.27    |
|             source             |        15         |    0.04    |
|              url               |        18         |    0.05    |
|       geolocation_source       |        419        |    1.20    |
|            wepp_id             |       18702       |   53.53    |
|     year_of_capacity_data      |       20049       |   57.39    |
|      generation_gwh_2013       |       28519       |   81.63    |
|      generation_gwh_2014       |       27710       |   79.32    |
|      generation_gwh_2015       |       26733       |   76.52    |
|      generation_gwh_2016       |       25792       |   73.83    |
|      generation_gwh_2017       |       25436       |   72.81    |
|      generation_gwh_2018       |       25299       |   72.42    |
|      generation_gwh_2019       |       25277       |   72.35    |
|     generation_data_source     |       23536       |   67.37    |
| estimated_generation_gwh_2013  |       18816       |   53.86    |
| estimated_generation_gwh_2014  |       18433       |   52.76    |
| estimated_generation_gwh_2015  |       17886       |   51.20    |
| estimated_generation_gwh_2016  |       17366       |   49.71    |
| estimated_generation_gwh_2017  |       1798        |    5.15    |
| estimated_generation_note_2013 |         0         |    0.00    |
| estimated_generation_note_2014 |         0         |    0.00    |
| estimated_generation_note_2015 |         0         |    0.00    |
| estimated_generation_note_2016 |         0         |    0.00    |
| estimated_generation_note_2017 |         0         |    0.00    |

En segundo lugar, con el fin realizar una representación visual de la tercera columna de la tabla, generamos un gráfico de barras con el porcentaje de datos faltantes.

#Importar la librería utilizada
library(ggplot2)
#Crear un dataframe con el porcentaje de datos faltantes por variable
faltantes <- data.frame(
  Variable = colnames(dataGPP),
  porcentajef = sapply(dataGPP, function(x) mean(is.na(x)) * 100)
)
#Crear el gráfico de barras
ggplot(faltantes, aes(x = reorder(Variable, -porcentajef), y = porcentajef)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  coord_flip() + #Girar el gráfico para que las variables se muestren en el eje y
  labs(title = "Porcentaje de datos faltantes por variable", x = "Variable", y = "Porcentaje") +
  theme_minimal()

En tercer lugar. generamos un gráfico de torta, para mostrar la proporción de datos faltantes en toda la base de datos.

#Importar la librería necesaria
library(ggplot2)
#Calcular el número de celdas
celdas <- prod(dim(dataGPP))
#Calcular el número de celdas con datos faltantes
faltanteac <- sum(is.na(dataGPP))
completoac <- celdas - faltanteac
#Crear un dataframe con datos faltantes y datos completos
tortagf <- data.frame(
  Category = c("Datos faltantes", "Datos completos"),
  Count = c(faltanteac, completoac)
)
#Crear el gráfico de torta
ggplot(tortagf, aes(x = "", y = Count, fill = Category)) +
  geom_bar(width = 1, stat = "identity") + #Crear las barras del gráfico
  coord_polar("y", start = 0) + #Transformar las barras en un gráfico de torta
  labs(title = "Proporción de datos faltantes en el dataset") +
  theme_void() + 
  scale_fill_manual(values = c("red", "green"))

Ahora, para encontrar los datos atípicos en las variables numéricas, separamos las variables en categorías basadas en su tipo y naturaleza. Generamos tablas y gráficos de caja y bigote para mayor comprensión.

Esta tabla contiene el número total de valores atípicos de cada variable numérica, así como su porcentaje con respecto al total de datos que almacena cada una de ellas.

#Importar las librerías necesarias
library(ggplot2)
library(dplyr)
library(kableExtra)
#Seleccionar las variables cuantitativas continuas
continuas <- dataGPP %>%
  select(capacity_mw, latitude, longitude, generation_gwh_2013:generation_gwh_2019, estimated_generation_gwh_2013:estimated_generation_gwh_2017)
#Seleccionar las variabels cuantitativas discretas
discretas <- dataGPP %>%
  select(commissioning_year, year_of_capacity_data)
#Combinar ambos tipos de variable en una lista
variables <- c(continuas, discretas)
#Inicializar un dataframe vacío para almacenar variables
resumenatp <- data.frame(
  Variable = character(),
  Número = integer(),
  Porcentaje = numeric()
)
#Calcular datos atípicos por variable
for (variable in names(variables)) {
  values <- variables[[variable]]
  #Calcular Q1, Q2, Q3 y IQR
  Q1 <- quantile(values, 0.25, na.rm = TRUE)
  Q3 <- quantile(values, 0.75, na.rm = TRUE)
  IQR <- Q3 - Q1
  #Definir los límites para identificar los datos atípicos
  lower_bound <- Q1 - 1.5 * IQR
  upper_bound <- Q3 + 1.5 * IQR
  #Calcular el número y porcentaje de datos atípicos
  atípicos <- sum(values < lower_bound | values > upper_bound, na.rm = TRUE)
  total_values <- sum(!is.na(values))
  percentage <- (atípicos / total_values) * 100

  resumenatp <- rbind(resumenatp, data.frame(
    Variable = variable,
    Número = atípicos,
    Porcentaje = round(percentage, 2)
  ))
}
#Crear la tabla 
resumenatp %>%
  kable("html", caption = "Datos atípicos por Variable") %>%
  kable_styling(bootstrap_options = c("striped", "hover", "condensed", "responsive"))
Datos atípicos por Variable
Variable Número Porcentaje
capacity_mw 5622 16.09
latitude 4159 11.90
longitude 0 0.00
generation_gwh_2013 946 14.74
generation_gwh_2014 1090 15.08
generation_gwh_2015 1260 15.36
generation_gwh_2016 1412 15.44
generation_gwh_2017 1514 15.94
generation_gwh_2018 1551 16.09
generation_gwh_2019 1582 16.38
estimated_generation_gwh_2013 2448 15.19
estimated_generation_gwh_2014 2472 14.98
estimated_generation_gwh_2015 2517 14.76
estimated_generation_gwh_2016 2569 14.62
estimated_generation_gwh_2017 5648 17.04
commissioning_year 878 5.03
year_of_capacity_data 80 0.54

Variables Cuantitativas Continuas: Aquí se incluyen las variables relacionadas con capacidad y generación de electricidad (capacity_mw, latitude, longitude, generation_gwh de 2013 a 2019 y estimated_generation_gwh de 2013 a 2017).

#Importar las librerías utilizadas
library(ggplot2)
library(dplyr)
#Seleccionar varaibles cuantitativas continuas
continuas <- dataGPP %>%
  select(capacity_mw, latitude, longitude, generation_gwh_2013:generation_gwh_2019, estimated_generation_gwh_2013:estimated_generation_gwh_2017)
#Generar diagramas de caja y bigote
for (variable in names(continuas)) {
  boxplot(continuas[[variable]], 
          main = paste("Boxplot de", variable), 
          ylab = variable,
          horizontal = TRUE,     
          col = 'steelblue')     
}

Variables Cuantitativas Discretas: Aquí se incluyen las variables relacionadas con los años (commissioning_year, year_of_capacity_data).

discretas <- dataGPP %>%
  select(commissioning_year, year_of_capacity_data)
#Generar diagramas de caja y bigote
for (variable in names(discretas)) {
  boxplot(discretas[[variable]], 
          main = paste("Boxplot de", variable), 
          ylab = variable, 
          horizontal = TRUE, 
          col = 'steelblue')
}

Con el fin de verificar si los datos siguen una distribución normal, usamos un algoritmo que aplique el test de Anderson - Darling.

#Importar la librería necesaria
library(nortest)
#Crear vector con las variables numpéricas
numeric_vars <- c("capacity_mw", "latitude", "longitude", 
                  "generation_gwh_2013", "generation_gwh_2014", 
                  "generation_gwh_2015", "generation_gwh_2016", 
                  "generation_gwh_2017", "generation_gwh_2018", 
                  "generation_gwh_2019", "estimated_generation_gwh_2013", 
                  "estimated_generation_gwh_2014", "estimated_generation_gwh_2015", 
                  "estimated_generation_gwh_2016", "estimated_generation_gwh_2017")
#Función para realizar el test de Anderson-Darling
check_normality_ad <- function(data, var) {
  cat("\nVariable:", var)
  #Cuenta el número de datos no nulos
  n <- sum(!is.na(data[[var]]))
  
  if (n > 0) {
    test_result <- ad.test(data[[var]])
    print(test_result)
  } else {
    cat("No hay suficientes datos para realizar la prueba.\n")
  }
}
#Aplica la función a cada variable numérica
for (var in numeric_vars) {
  check_normality_ad(dataGPP, var)
}

Variable: capacity_mw
    Anderson-Darling normality test

data:  data[[var]]
A = 7770.5, p-value < 2.2e-16


Variable: latitude
    Anderson-Darling normality test

data:  data[[var]]
A = 2425.9, p-value < 2.2e-16


Variable: longitude
    Anderson-Darling normality test

data:  data[[var]]
A = 704.15, p-value < 2.2e-16


Variable: generation_gwh_2013
    Anderson-Darling normality test

data:  data[[var]]
A = 1675.2, p-value < 2.2e-16


Variable: generation_gwh_2014
    Anderson-Darling normality test

data:  data[[var]]
A = 1820.7, p-value < 2.2e-16


Variable: generation_gwh_2015
    Anderson-Darling normality test

data:  data[[var]]
A = 1995.4, p-value < 2.2e-16


Variable: generation_gwh_2016
    Anderson-Darling normality test

data:  data[[var]]
A = 2287.4, p-value < 2.2e-16


Variable: generation_gwh_2017
    Anderson-Darling normality test

data:  data[[var]]
A = 2417.1, p-value < 2.2e-16


Variable: generation_gwh_2018
    Anderson-Darling normality test

data:  data[[var]]
A = 2563.4, p-value < 2.2e-16


Variable: generation_gwh_2019
    Anderson-Darling normality test

data:  data[[var]]
A = 2623.6, p-value < 2.2e-16


Variable: estimated_generation_gwh_2013
    Anderson-Darling normality test

data:  data[[var]]
A = 4377.6, p-value < 2.2e-16


Variable: estimated_generation_gwh_2014
    Anderson-Darling normality test

data:  data[[var]]
A = 4566, p-value < 2.2e-16


Variable: estimated_generation_gwh_2015
    Anderson-Darling normality test

data:  data[[var]]
A = 4765, p-value < 2.2e-16


Variable: estimated_generation_gwh_2016
    Anderson-Darling normality test

data:  data[[var]]
A = 4876.1, p-value < 2.2e-16


Variable: estimated_generation_gwh_2017
    Anderson-Darling normality test

data:  data[[var]]
A = 8069.7, p-value < 2.2e-16

Los resultados de la prueba arrojan que los datos no siguen una distrubución normal. Por lo que es necesario recurrir a otras pruebas no paramétricas:

  1. Mann-Whitney U Test (Wilcoxon Rank-Sum Test): Esta prueba, es ideal para comparar dos grupos independientes, en el caso de esta base de datos. Podría usarse para comparar la capacidad de generación de plantas con diferentes fuentes de energía.
  2. Kruskal-Wallis Test: Esta prueba, es considerada una extensión del Mann-Whitney U Test para más de dos grupos independientes. Un posible uso, sería comparar la capacidad de generación de varias plantas de energía con diferentes tipos de combustible.
  3. Spearman’s Rank Correlation: Esta prueba, es útil para medir la relación entre dos variables numéricas, como la capacidad de generación y el año de puesta en servicio.
  4. Wilcoxon Signed-Rank Test: Esta prueba, se usa para comparar dos muestras relacionadas, como la generación de energía en diferentes años para la misma planta.

Haremos la prueba con el Wilcoxon Signed-Rank Test.

#Crear vector de variables numéricas a analizar
variables_numericas <- c("capacity_mw", "latitude", "longitude", 
                         "generation_gwh_2013", "generation_gwh_2014", 
                         "generation_gwh_2015", "generation_gwh_2016", 
                         "generation_gwh_2017", "generation_gwh_2018", 
                         "generation_gwh_2019", "estimated_generation_gwh_2013", 
                         "estimated_generation_gwh_2014", "estimated_generation_gwh_2015", 
                         "estimated_generation_gwh_2016", "estimated_generation_gwh_2017")
#Función para ralizar el test de Wilcoxon Signed-Rank Test
realizar_prueba_wilcoxon <- function(dataGPP, variable) {
  cat("\nResultado de la prueba de Wilcoxon para", variable, ":\n")
  #Verifica si hay suficientes datos no nulos para la prueba
  if (sum(!is.na(dataGPP[[variable]])) > 0) {
    #Aplica la prueba
    resultado_wilcoxon <- wilcox.test(dataGPP[[variable]], alternative = "two.sided", conf.int = TRUE, correct = TRUE)
    print(resultado_wilcoxon)
  } else {
    cat("No hay suficientes datos para realizar la prueba.\n")
  }
}
#Aplica la función a cada variable numérica
for (variable in variables_numericas) {
  realizar_prueba_wilcoxon(dataGPP, variable)
}

Resultado de la prueba de Wilcoxon para capacity_mw :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 610279516, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 32.30004 34.40001
sample estimates:
(pseudo)median 
      33.25002 


Resultado de la prueba de Wilcoxon para latitude :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 587617427, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 37.73129 38.06760
sample estimates:
(pseudo)median 
      37.90094 


Resultado de la prueba de Wilcoxon para longitude :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 282659960, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 -5.236768 -3.396286
sample estimates:
(pseudo)median 
     -4.264401 


Resultado de la prueba de Wilcoxon para generation_gwh_2013 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 16977889, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
  89.43066 105.95092
sample estimates:
(pseudo)median 
      97.44445 


Resultado de la prueba de Wilcoxon para generation_gwh_2014 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 21624032, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 100.5760 118.7616
sample estimates:
(pseudo)median 
      109.5111 


Resultado de la prueba de Wilcoxon para generation_gwh_2015 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 28081787, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 126.9628 147.0715
sample estimates:
(pseudo)median 
      137.0625 


Resultado de la prueba de Wilcoxon para generation_gwh_2016 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 34430524, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 110.9135 129.5322
sample estimates:
(pseudo)median 
      119.9186 


Resultado de la prueba de Wilcoxon para generation_gwh_2017 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 37405041, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
  93.83747 110.26801
sample estimates:
(pseudo)median 
      102.1526 


Resultado de la prueba de Wilcoxon para generation_gwh_2018 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 38373761, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 66.38127 77.38352
sample estimates:
(pseudo)median 
       71.9946 


Resultado de la prueba de Wilcoxon para generation_gwh_2019 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 43309602, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 43.37646 52.05796
sample estimates:
(pseudo)median 
      47.72207 


Resultado de la prueba de Wilcoxon para estimated_generation_gwh_2013 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 129935260, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 48.95497 52.62504
sample estimates:
(pseudo)median 
      50.74501 


Resultado de la prueba de Wilcoxon para estimated_generation_gwh_2014 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 136182756, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 49.67001 53.37502
sample estimates:
(pseudo)median 
      51.48504 


Resultado de la prueba de Wilcoxon para estimated_generation_gwh_2015 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 145359775, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 47.99506 51.28000
sample estimates:
(pseudo)median 
      49.60497 


Resultado de la prueba de Wilcoxon para estimated_generation_gwh_2016 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 154361235, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 49.60501 53.00503
sample estimates:
(pseudo)median 
      51.24498 


Resultado de la prueba de Wilcoxon para estimated_generation_gwh_2017 :

    Wilcoxon signed rank test with continuity correction

data:  dataGPP[[variable]]
V = 5.46e+08, p-value < 2.2e-16
alternative hypothesis: true location is not equal to 0
95 percent confidence interval:
 86.52996 92.72998
sample estimates:
(pseudo)median 
      89.55006 

Tras analizar la “Global Power Plant Database”, podemos obtener las siguiente conclusiones:

  1. La base de datos utilizada, contiene 34936 registros y 36 variables relacianadas con alrededor de 35,000 plantas de energía en 167 países.

  2. Una vez clasificadas las variables según su tipo, estas se dividen en:

    Cualitativas Nominales: country, conutry_long, name, gppd_idnr, primary__fuel, other_fuel1, other_fuel2, other_fuel3, owner, source, url, geolocation_source, wepp_id, generation_data_source, estimated_generation_note2013, estimated_generation_note2014, estimated_generation_note2015, estimated_generation_note2016, estimated_generation_note2017.

    Cuantitativas Continuas: capacity_mw, latitude, longitude, generation_gwh_2013, generation_gwh_2014, generation_gwh_2015, generation_gwh_2016, generation_gwh_2017, generation_gwh_2018, generation_gwh_2019, , estimated_generation_gwh_2013, estimated_generation_gwh_2014, estimated_generation_gwh_2015, estimated_generation_gwh_2016, estimated_generation_gwh_2017.

    Cuantitativas Discretas: commissioning_year, year_of_capacity_data.

  3. Aunque la base de datos es robusta, hay una proporción significativa de datos faltantes ‘NA’.

  4. La mayoría de las variables no siguen una distribución normal (verificado con el el Test Anderson - Darling) , lo que sugiere que los análisis deben basarse en métodos no paramétricos para obtener reultados más precisos.