Introducción

En los últimos años, la preocupación por el cambio climático ha impulsado a muchos países a buscar alternativas sostenibles para la producción de energía. Colombia, con su gran potencial en recursos naturales renovables como la energía solar, eólica e hidráulica, tiene una oportunidad única de reducir su dependencia de los combustibles fósiles y contribuir a la reducción de emisiones de CO₂. No obstante, el país enfrenta obstáculos significativos, como la falta de infraestructura y la resistencia a adoptar nuevas tecnologías. Este estudio se enfoca en evaluar cómo la adopción de energías renovables ha influido en la disminución de emisiones de dióxido de carbono (CO₂) en los municipios rurales de Colombia entre 2013 y 2023

ResÚmen del Problema

El problema principal que aborda este proyecto es la falta de datos cuantitativos claros sobre el impacto que las energías renovables han tenido en la reducción de emisiones de CO₂ en municipios rurales. Aunque existen políticas y programas que promueven la transición energética, no se ha medido con precisión el efecto directo de estas iniciativas en términos de reducción de emisiones contaminantes. Por ello, este estudio se enfoca en analizar y comparar los niveles de CO₂ en municipios que han implementado energías renovables frente a aquellos que aún dependen de fuentes fósiles. Al mismo tiempo, se evaluará el impacto económico local, con el fin de identificar tendencias que apoyen la creación de políticas públicas más efectivas.

Interpretación Preliminar

A partir del análisis preliminar de los datos, se espera identificar una tendencia clara de reducción en las emisiones de CO₂ en los municipios que han adoptado energías renovables. Además, se anticipa que esta reducción estará acompañada de una menor variabilidad en los datos, lo que podría indicar una adopción más consistente de tecnologías limpias en ciertas regiones. Por otro lado, los municipios que aún dependen de combustibles fósiles probablemente presenten mayores niveles de emisiones y una mayor dispersión en los datos, reflejando la ineficiencia de estas fuentes energéticas. Estos primeros resultados permitirán formular recomendaciones iniciales para fortalecer la transición hacia energías renovables en el país, enfocándose en la reducción de CO₂ como una prioridad.

Análisis Descriptivo

Para el análisis descriptivo de los datos recolectados, algunas métricas como medidas de tendencia central, medidas de dispersión y para la visualización de datos algunos gráficos con el fin de obtener una visión clara del impacto de las energías renovables en las emisiones de CO₂:

Para las variables cuantitativas procedemos a encontrar la media, mediana, desviación estandar y varianza.

###Análisis de variables cuantitativas

Capacidad de generación energética [MV]

summarytools::descr(datosProbC02$Capacidad)
## Warning in fun(libname, pkgname): couldn't connect to display ":0"
## Descriptive Statistics  
## datosProbC02$Capacidad  
## N: 158  
## 
##                     Capacidad
## ----------------- -----------
##              Mean       37.97
##           Std.Dev       78.07
##               Min        0.01
##                Q1        2.25
##            Median        9.90
##                Q3       21.00
##               Max      700.00
##               MAD       13.34
##               IQR       18.48
##                CV        2.06
##          Skewness        4.67
##       SE.Skewness        0.19
##          Kurtosis       31.68
##           N.Valid      158.00
##         Pct.Valid      100.00
# Crear el diagrama de cajas (boxplot) ajustando el rango del eje Y
boxplot(datosProbC02$Capacidad, 
        main="Diagrama de Cajas con Percentiles", 
        ylab="Capacidad", 
        col="lightblue", 
        outline=FALSE,  # No mostrar outliers dentro de la caja principal
        ylim=c(0, 100))  # Ajustar el rango del eje Y para una mejor visibilidad

# Calcular percentiles
percentiles <- quantile(datosProbC02$Capacidad, probs = c(0.25, 0.50, 0.75, 0.90))

# Agregar líneas para los percentiles
abline(h=percentiles[1], col="blue", lty=2, lwd=2)  # Percentil 25 (Q1)
abline(h=percentiles[2], col="red", lty=2, lwd=2)   # Percentil 50 (Mediana)
abline(h=percentiles[3], col="green", lty=2, lwd=2) # Percentil 75 (Q3)
abline(h=percentiles[4], col="purple", lty=2, lwd=2) # Percentil 90

# Añadir los outliers por separado
points(datosProbC02$Capacidad[datosProbC02$Capacidad > 100], 
       col="red", pch=16)  # Mostrar outliers por encima de 100

  • La media es 37.97, pero la mediana es 9.90, lo que indica que los datos están sesgados hacia valores altos (algunos valores extremos elevan la media).

  • La desviación estándar de 78.07 sugiere una gran variabilidad en los datos.

  • La asimetría positiva (4.67) y la curtosis alta (31.68) confirman la presencia de valores atípicos significativos.

  • El máximo de 700 y el mínimo de 0.01 refuerzan esta variabilidad y la distribución asimétrica.

Energia [kW/dia]

summarytools::descr(datosProbC02$`Energía [kWh/día]`)
## Descriptive Statistics  
## datosProbC02$`Energía [kWh/día]`  
## N: 158  
## 
##                       Energía [kWh/día]
## ----------------- ---------------------
##              Mean             231296.03
##           Std.Dev             507038.54
##               Min                 21.00
##                Q1              10800.00
##            Median              47520.00
##                Q3             114816.00
##               Max            3360000.00
##               MAD              66361.18
##               IQR             101460.00
##                CV                  2.19
##          Skewness                  3.59
##       SE.Skewness                  0.19
##          Kurtosis                 14.36
##           N.Valid                158.00
##         Pct.Valid                100.00
# Datos extraídos de la tabla de Energía
estadisticas_energia <- data.frame(
  Estadística = c("Media", "Desv. Estándar", "Mediana", "Máximo", "Mínimo", "Q1", "Q3"),
  Valor = c(231296.03, 507038.54, 47520.00, 3360000.00, 21.00, 10800.00, 114816.00)
)

# Librerías
library(ggplot2)

# Crear gráfico de barras para Energía
ggplot(estadisticas_energia, aes(x = Estadística, y = Valor)) +
  geom_bar(stat = "identity", fill = "darkorange") +
  theme_minimal() +
  labs(title = "Estadísticas Descriptivas de la Energía [kWh/día]",
       x = "Estadística",
       y = "Valor") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

  • Media: El consumo promedio de energía es alto, con 231,296.03 kWh/día.

  • Desviación Estándar: Existe una gran variabilidad en los datos, con una desviación de 507,038.54 kWh/día.

  • Mediana: El valor central es significativamente menor que la media, siendo 47,520.00 kWh/día, lo que sugiere la presencia de algunos valores muy altos que elevan el promedio.

  • Máximo: El valor máximo es extremadamente alto, alcanzando 3,360,000.00 kWh/día.

  • Simetría: La distribución está muy sesgada hacia la derecha, lo que indica que hay valores extremos que distorsionan la media.

Usuarios

summarytools::descr(datosProbC02$Usuarios)
## Descriptive Statistics  
## datosProbC02$Usuarios  
## N: 158  
## 
##                      Usuarios
## ----------------- -----------
##              Mean    40109.06
##           Std.Dev    87925.82
##               Min        4.00
##                Q1     1873.00
##            Median     8240.00
##                Q3    19910.00
##               Max   582659.00
##               MAD    11507.20
##               IQR    17594.00
##                CV        2.19
##          Skewness        3.59
##       SE.Skewness        0.19
##          Kurtosis       14.36
##           N.Valid      158.00
##         Pct.Valid      100.00
# Crear el diagrama de cajas (boxplot) ajustando el rango del eje Y
boxplot(datosProbC02$Usuarios, 
        main = "Diagrama de Cajas con Percentiles - Usuarios", 
        ylab = "Usuarios", 
        col = "lightblue", 
        outline = FALSE,  # No mostrar outliers dentro de la caja principal
        ylim = c(0, 100000))  # Ajustar el rango del eje Y para una mejor visibilidad

# Calcular percentiles
percentiles <- quantile(datosProbC02$Usuarios, probs = c(0.25, 0.50, 0.75, 0.90))

# Agregar líneas para los percentiles
abline(h = percentiles[1], col = "blue", lty = 2, lwd = 2)  # Percentil 25 (Q1)
abline(h = percentiles[2], col = "red", lty = 2, lwd = 2)   # Percentil 50 (Mediana)
abline(h = percentiles[3], col = "green", lty = 2, lwd = 2) # Percentil 75 (Q3)
abline(h = percentiles[4], col = "purple", lty = 2, lwd = 2) # Percentil 90

# Añadir los outliers por separado
points(datosProbC02$Usuarios[datosProbC02$Usuarios > 100000], 
       col = "red", pch = 16)  # Mostrar outliers por encima de 100000

  • La media es 40,109.06, mientras que la mediana es 8,240.00, lo que sugiere que hay valores atípicos elevados que aumentan la media.
  • La desviación estándar de 87,925.82 indica una alta variabilidad.
  • La asimetría positiva (3.59) y la curtosis (14.36) sugieren que la distribución está sesgada con valores extremos (outliers) hacia la derecha.
  • El máximo es 582,659, lo que confirma la presencia de valores muy altos en el conjunto de datos.

Inversión estimada [COP]

summarytools::descr(datosProbC02$`Inversión estimada [COP]`)
## Descriptive Statistics  
## datosProbC02$`Inversión estimada [COP]`  
## N: 158  
## 
##                       Inversión estimada [COP]
## ----------------- ----------------------------
##              Mean              145058220253.16
##           Std.Dev              293830287083.14
##               Min                   9800000.00
##                Q1                9460000000.00
##            Median               39632500000.00
##                Q3               85570000000.00
##               Max             2625000000000.00
##               MAD               51879880500.00
##               IQR               76056250000.00
##                CV                         2.03
##          Skewness                         4.61
##       SE.Skewness                         0.19
##          Kurtosis                        31.06
##           N.Valid                       158.00
##         Pct.Valid                       100.00
# Crear un diagrama de cajas para la Inversión estimada
boxplot(datosProbC02$`Inversión estimada [COP]`, 
        main="Diagrama de Cajas - Inversión estimada [COP]", 
        ylab="Inversión estimada [COP]", 
        col="lightblue", 
        outline=FALSE)

  • La media es 145.06 mil millones de COP, mientras que la mediana es 39.63 mil millones de COP, lo que indica que la media está influenciada por valores extremadamente altos.

  • La desviación estándar de 293.83 mil millones de COP refleja una gran variabilidad en los datos.

  • La asimetría positiva (4.61) y la curtosis alta (31.06) sugieren que la distribución está fuertemente sesgada hacia la derecha, con valores extremos elevados.

  • El máximo es 2.62 billones de COP, lo que confirma la presencia de valores atípicos muy altos.

Empleos estimados

summarytools::descr(datosProbC02$`Empleos estimados`)
## Descriptive Statistics  
## datosProbC02$`Empleos estimados`  
## N: 158  
## 
##                       Empleos estimados
## ----------------- ---------------------
##              Mean                221.61
##           Std.Dev                485.17
##               Min                  0.00
##                Q1                 16.00
##            Median                 69.00
##                Q3                146.00
##               Max               4872.00
##               MAD                 91.92
##               IQR                128.25
##                CV                  2.19
##          Skewness                  6.12
##       SE.Skewness                  0.19
##          Kurtosis                 51.67
##           N.Valid                158.00
##         Pct.Valid                100.00
# Crear un diagrama de cajas para Empleos estimados
boxplot(datosProbC02$`Empleos estimados`, 
        main="Diagrama de Cajas - Empleos estimados", 
        ylab="Empleos estimados", 
        col="lightgreen", 
        outline=FALSE)

  • Media: 221.61 empleos.

  • Mediana: 69 empleos (la mitad de los valores están por debajo de este número).

  • Desviación estándar: 485.17 empleos (alta variabilidad).

  • Rango: Desde 0 hasta 4872 empleos (gran diferencia entre mínimo y máximo).

  • Sesgo: 6.12 (distribución sesgada hacia la derecha, con algunos valores extremadamente altos).

Emisiones CO2 [Ton/año]

summarytools::descr(datosProbC02$`Emisiones CO2 [Ton/año]`)
## Descriptive Statistics  
## datosProbC02$`Emisiones CO2 [Ton/año]`  
## N: 158  
## 
##                       Emisiones CO2 [Ton/año]
## ----------------- ---------------------------
##              Mean                    67538.46
##           Std.Dev                   148055.23
##               Min                        6.00
##                Q1                     3154.00
##            Median                    13876.00
##                Q3                    33526.00
##               Max                   981120.00
##               MAD                    19377.58
##               IQR                    29625.75
##                CV                        2.19
##          Skewness                        3.59
##       SE.Skewness                        0.19
##          Kurtosis                       14.36
##           N.Valid                      158.00
##         Pct.Valid                      100.00
# Crear un diagrama de cajas para Emisiones de CO2
boxplot(datosProbC02$`Emisiones CO2 [Ton/año]`, 
        main="Diagrama de Cajas - Emisiones CO2 [Ton/año]", 
        ylab="Emisiones CO2 [Ton/año]", 
        col="lightcoral", 
        outline=FALSE)

  • Media: 67,538.46 toneladas/año.

  • Mediana: 13,876 toneladas/año (la mitad de los valores están por debajo de este número).

  • Desviación estándar: 148,055.23 toneladas/año (mucha dispersión).

  • Rango: Desde 6 hasta 981,120 toneladas/año (gran diferencia entre mínimo y máximo).

  • Sesgo: 3.59 (distribución sesgada a la derecha, con algunos valores muy altos).

Análisis de variables cualitativas

Tipo de energía

Encontramos que el tipo de energía con mas proyectos a implementar proviene de la energía solar, que si bien no tiene uno de los mejores rendimientos en cuanto a la cantidad de energia generada en comparación con la energia absorbida, es uno de los que mas se ha estudiado.

ggplot(datosProbC02, aes(x = Tipo, y = Capacidad, fill = Tipo)) +
  geom_boxplot() +
  theme_minimal() +
  labs(title = "Diagrama de Cajas para Tipo de Energía y Capacidad",
       x = "Tipo de Energía",
       y = "Capacidad de Generación [MW]") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

library(modeest)
mlv(datosProbC02$Tipo)
## [1] "Solar"

Departamento y municipio

Los municipios que mas se han dedicado al apoyo de estos proyectos de energías renovables son el municipio de Pereira en Risaralda y el municipio de Uribia en la guajira.

Pero el departamento que mas proyectos agrupa en sus municipios es el departamento del valle del Cauca.

# Contar el número de proyectos por departamento
projects_per_department <- table(datosProbC02$Departamento)

# Convertirlo a un data frame para usar ggplot
df_projects <- as.data.frame(projects_per_department)
colnames(df_projects) <- c("Departamento", "Cantidad")

# Crear el gráfico de barras para proyectos por departamento
library(ggplot2)
ggplot(df_projects, aes(x = Departamento, y = Cantidad)) +
  geom_bar(stat = "identity", fill = "skyblue") +
  theme_minimal() +
  labs(title = "Cantidad de Proyectos por Departamento",
       x = "Departamento", 
       y = "Cantidad de Proyectos") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

# Contar el número de proyectos por municipio
projects_per_municipio <- table(datosProbC02$Municipio)

# Convertirlo a un data frame para usar ggplot
df_projects_municipio <- as.data.frame(projects_per_municipio)
colnames(df_projects_municipio) <- c("Municipio", "Cantidad")

# Ordenar por cantidad y seleccionar los 3 municipios con más proyectos
df_top3_municipios <- df_projects_municipio[order(-df_projects_municipio$Cantidad), ][1:3, ]

# Crear el gráfico de barras para los 3 municipios con más proyectos
ggplot(df_top3_municipios, aes(x = Municipio, y = Cantidad)) +
  geom_bar(stat = "identity", fill = "lightgreen") +
  theme_minimal() +
  labs(title = "Top 3 Municipios con Más Proyectos",
       x = "Municipio", 
       y = "Cantidad de Proyectos") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1))

mlv(datosProbC02$Departamento)
## [1] "VALLE DEL CAUCA"
mlv(datosProbC02$Municipio)
## [1] "PEREIRA" "URIBIA"