## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.2 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
##
## Adjuntando el paquete: 'janitor'
##
## The following objects are masked from 'package:stats':
##
## chisq.test, fisher.test
##
## Adjuntando el paquete: 'plotly'
##
## The following object is masked from 'package:ggplot2':
##
## last_plot
##
## The following object is masked from 'package:stats':
##
## filter
##
## The following object is masked from 'package:graphics':
##
## layout
Introducción En los últimos años, los efectos del cambio climático se han vuelto cada vez más evidentes, alterando los patrones meteorológicos tradicionales. Uno de los impactos más notorios ha sido la variación en la frecuencia, intensidad y distribución de las lluvias. Este fenómeno afecta directamente los sistemas hídricos, especialmente los embalses, los cuales cumplen un papel fundamental en el abastecimiento de agua y la generación hidroeléctrica.
El presente análisis busca visualizar cómo ha cambiado el volumen mínimo y máximo de energía potencial generada por diversos embalses en Colombia, como reflejo indirecto de la disponibilidad de agua en ellos.
# Cargar y limpiar datos usando readr::read_csv para evitar conflictos
raw_data <- readr::read_csv("Estadistica/NivelesMinimosOperativosdeEmbalsesdeinviernoa4183bcd-328f-46b3-a44f-d20d6c167301.csv")## Rows: 82788 Columns: 8
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## chr (4): CodigoDuracion, NombreEmbalse, CodigoVariable, CodigoEmbalse
## dbl (2): MinimoOperativo, totalRecords
## date (2): Fecha, FechaPublicacion
##
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
raw_data <- clean_names(raw_data)
# Filtrar columnas necesarias
datos_filtrados <- select(raw_data, fecha, nombre_embalse, codigo_variable, minimo_operativo)
# Convertir fecha a tipo Date
datos_filtrados$fecha <- as.Date(datos_filtrados$fecha)
# Pivotear a formato ancho
datos_anidados <- pivot_wider(
datos_filtrados,
names_from = codigo_variable,
values_from = minimo_operativo
)## Warning: Values from `minimo_operativo` are not uniquely identified; output will contain
## list-cols.
## • Use `values_fn = list` to suppress this warning.
## • Use `values_fn = {summary_fun}` to summarise duplicates.
## • Use the following dplyr code to identify duplicates.
## {data} |>
## dplyr::summarise(n = dplyr::n(), .by = c(fecha, nombre_embalse,
## codigo_variable)) |>
## dplyr::filter(n > 1L)
# Ordenar por embalse y fecha
datos_anidados <- arrange(datos_anidados, nombre_embalse, fecha)
# Convertir columnas list a numeric de forma segura
safe_extract_numeric <- function(x) {
val <- unlist(x)
if (length(val) == 0) return(NA_real_)
return(as.numeric(val[1]))
}
datos_anidados <- datos_anidados %>%
mutate(
min_kwh = map_dbl(MINKWH, safe_extract_numeric),
max_kwh = map_dbl(MAXKWH, safe_extract_numeric)
)
# Crear grupos de 4 embalses
embalses <- unique(datos_anidados$nombre_embalse)
grupo_df <- tibble(nombre_embalse = embalses, grupo = ceiling(seq_along(embalses) / 4))
datos_anidados <- left_join(datos_anidados, grupo_df, by = "nombre_embalse")
# Pivot para formato largo
datos_largos <- datos_anidados %>%
pivot_longer(cols = c(min_kwh, max_kwh), names_to = "tipo", values_to = "valor")
# Etiquetado legible para escalas grandes
label_abbrev <- function(x) {
case_when(
x >= 1e9 ~ paste0(round(x / 1e9, 1), "B"),
x >= 1e6 ~ paste0(round(x / 1e6, 1), "M"),
x >= 1e3 ~ paste0(round(x / 1e3, 1), "K"),
TRUE ~ as.character(x)
)
}
# Graficar por grupo de 4 embalses
plots <- datos_largos %>%
group_split(grupo) %>%
map(~ ggplot(data = .x, aes(x = fecha, y = valor, color = tipo)) +
geom_line(alpha = 0.8, size = 0.7) +
facet_wrap(~ nombre_embalse, scales = "free_y", ncol = 2) +
scale_y_continuous(labels = label_abbrev) +
scale_x_date(date_labels = "%b %Y", date_breaks = "2 months") +
labs(
title = paste("Evolución de MIN y MAX KWH - Grupo", unique(.x$grupo)),
x = "Fecha",
y = "KWH (escala abreviada)",
color = "Tipo"
) +
theme_minimal(base_size = 13) +
theme(
axis.text.x = element_text(angle = 45, hjust = 1, size = 9),
strip.text = element_text(size = 11)
))## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
El potencial energético de un embalse depende en gran medida del volumen de agua almacenada. Los embalses operan dentro de un rango entre un mínimo operativo (por debajo del cual no pueden generar energía) y un máximo estructural.
En los siguientes gráficos, se observa cómo estos valores han variado en los últimos meses, evidenciando fluctuaciones más abruptas que en periodos anteriores. Esto puede deberse tanto a períodos de sequía más prolongados como a lluvias intensas en cortos periodos, características del cambio climático.
Algunos embalses como ITUANGO y GUAVIO muestran variaciones pronunciadas entre sus valores mínimos y máximos, lo que indica una inestabilidad creciente en el flujo hídrico.
La inestabilidad en la capacidad de generación representa un desafío importante para la planificación energética. La generación hidroeléctrica depende de una predicción confiable de los caudales, por lo que cualquier alteración climática complica la operación del sistema eléctrico, haciendo más necesarias fuentes alternas de generación y políticas de resiliencia energética.
Los datos analizados a lo largo de este estudio reflejan una tendencia preocupante de creciente inestabilidad en los embalses colombianos, que coincide con el comportamiento climático observado en la última década. En particular, se ha evidenciado que los valores mínimos y máximos de generación potencial (en KWH) presentan variaciones abruptas y, en muchos casos, asincrónicas. Esto sugiere que las temporadas de lluvia y sequía ya no siguen los patrones históricos regulares, y que las precipitaciones intensas en cortos periodos de tiempo no alcanzan a compensar las pérdidas prolongadas por sequías más severas.
Desde la perspectiva energética, estos cambios implican riesgos significativos para la confiabilidad del sistema eléctrico nacional, ya que gran parte de la matriz energética de Colombia se basa en generación hidroeléctrica. Un embalse operando por debajo de su mínimo operativo no solo pierde capacidad de generación, sino que también limita la regulación del sistema ante picos de demanda energética.
Desde la perspectiva energética, estos cambios implican riesgos significativos para la confiabilidad del sistema eléctrico nacional, ya que gran parte de la matriz energética de Colombia se basa en generación hidroeléctrica. Un embalse operando por debajo de su mínimo operativo no solo pierde capacidad de generación, sino que también limita la regulación del sistema ante picos de demanda energética.
A su vez, esto conlleva implicaciones sociales y económicas:
Mayor riesgo de racionamiento eléctrico durante temporadas secas prolongadas.
Incremento en el costo de la energía por mayor dependencia de fuentes térmicas o importadas.
Impactos sobre el abastecimiento de agua potable, especialmente en zonas cuya captación depende directamente de estos embalses.
1.Modernizar los modelos de predicción hidrológica incorporando variables climáticas más dinámicas.
2.Invertir en infraestructura de almacenamiento y distribución que permita mayor resiliencia.
3.Diversificar la matriz energética nacional, potenciando fuentes renovables no convencionales como solar y eólica.
4.Fortalecer la regulación ambiental y los planes de ordenamiento del recurso hídrico para preservar cuencas estratégicas.
Este análisis busca servir como evidencia técnica para la toma de decisiones tanto en el ámbito gubernamental como privado, impulsando una planificación más resiliente, sostenible y adaptativa ante los desafíos que impone el cambio climático