La base de datos utilizada trata sobre el IPC de distintas ciudades colombianas, calculado mensualmente desde enero de 1979 hasta enero de 2025 por el DANE. El índice de precios al consumidor (IPC) es un indicador económico que mide la evolución (cambio) de los precios de los bienes y servicios que consumen las familias. Por lo tanto, es comúnmente empleado para medir la inflación en un periodo específico.
library(readxl)
library(dplyr)
library(tidyverse)
library(lubridate)
library(ggplot2)
library(scales)
library(gridExtra)
library(tsibble)
# Importar solo la hoja 2, y omitir las dos primeras filas (vacías).
df <- read_excel("inflacion.xlsx", sheet = 2, skip = 2)
# Dar el formato correcto a las fechas.
colnames(df)[1] <- "Fecha"
df <- df[-c(1, nrow(df) ), ]
df$Fecha <- as.numeric(df$Fecha)
df$Fecha <- as.Date(df$Fecha, origin = "1899-12-30")
# Eliminar los espacios en los nombres de las columnas.
colnames(df) <- gsub("\u00A0", "_", colnames(df))
# Seleccionar las columnas de interés.
df <- df %>% select(Fecha, IPC_Barranquilla, IPC_Bogotá, IPC_Bucaramanga, IPC_Cali, IPC_Manizales, IPC_Medellín, IPC_Pasto)
head(df)
## # A tibble: 6 × 8
## Fecha IPC_Barranquilla IPC_Bogotá IPC_Bucaramanga IPC_Cali IPC_Manizales
## <date> <dbl> <dbl> <dbl> <dbl> <dbl>
## 1 1979-01-31 0.59 0.54 0.51 0.66 0.62
## 2 1979-02-28 0.61 0.55 0.54 0.66 0.62
## 3 1979-03-31 0.63 0.57 0.56 0.69 0.64
## 4 1979-04-30 0.65 0.58 0.56 0.7 0.66
## 5 1979-05-31 0.66 0.6 0.58 0.71 0.68
## 6 1979-06-30 0.68 0.61 0.58 0.72 0.7
## # ℹ 2 more variables: IPC_Medellín <dbl>, IPC_Pasto <dbl>
summary(df)
## Fecha IPC_Barranquilla IPC_Bogotá IPC_Bucaramanga
## Min. :1979-01-31 Min. : 0.59 Min. : 0.54 Min. : 0.51
## 1st Qu.:1990-07-31 1st Qu.: 6.38 1st Qu.: 6.59 1st Qu.: 6.09
## Median :2002-01-31 Median : 44.65 Median : 47.41 Median : 43.37
## Mean :2002-01-29 Mean : 48.99 Mean : 49.25 Mean : 48.41
## 3rd Qu.:2013-07-31 3rd Qu.: 78.70 3rd Qu.: 79.16 3rd Qu.: 80.06
## Max. :2025-01-31 Max. :150.20 Max. :143.60 Max. :149.59
## IPC_Cali IPC_Manizales IPC_Medellín IPC_Pasto
## Min. : 0.66 Min. : 0.62 Min. : 0.55 Min. : 0.54
## 1st Qu.: 7.60 1st Qu.: 7.03 1st Qu.: 6.86 1st Qu.: 6.67
## Median : 48.32 Median : 47.94 Median : 45.80 Median : 49.58
## Mean : 50.60 Mean : 49.60 Mean : 49.05 Mean : 50.16
## 3rd Qu.: 79.47 3rd Qu.: 78.03 3rd Qu.: 78.38 3rd Qu.: 79.08
## Max. :146.75 Max. :145.51 Max. :148.91 Max. :146.09
sum(is.na(df))
## [1] 0
La tabla tiene 553 filas y 8 columnas (la primera para las fechas y las restantes para las siete ciudades). En cada fila se encuentra el IPC de las ciudades para cierta fecha. No hay datos faltantes.
# Convertir a formato largo para facilitar la visualización
ipc_long <- df %>%
pivot_longer(
cols = starts_with("IPC_"),
names_to = "Ciudad",
values_to = "IPC"
) %>%
mutate(Ciudad = gsub("IPC_", "", Ciudad))
head(ipc_long, n=7)
## # A tibble: 7 × 3
## Fecha Ciudad IPC
## <date> <chr> <dbl>
## 1 1979-01-31 Barranquilla 0.59
## 2 1979-01-31 Bogotá 0.54
## 3 1979-01-31 Bucaramanga 0.51
## 4 1979-01-31 Cali 0.66
## 5 1979-01-31 Manizales 0.62
## 6 1979-01-31 Medellín 0.55
## 7 1979-01-31 Pasto 0.54
Aquí se creó otro dataframe ‘ipc_long’ que tiene 3871 filas y 3 columnas. Se obtuvo de reescribir el dataframe original de tal manera que en cada fila esté el IPC de una ciudad específica para cierta fecha. De ahí que su número de filas sea el producto entre 553 (fechas) y 7 (ciudades).
# Gráfico de series temporales para todas las ciudades
ggplot(ipc_long, aes(x = Fecha, y = IPC, color = Ciudad)) +
geom_line() +
scale_color_brewer(palette = "Set1") +
labs(title = "Evolución del IPC en ciudades colombianas (1979-2025)",
x = "Año",
y = "IPC") +
theme_minimal() +
scale_x_date(date_breaks = "5 years", date_labels = "%Y") +
theme(legend.position = "bottom")
El gráfico muestra que el IPC aumentó en las siete ciudades de una forma similar, con un crecimiento notable a inicios de los 90 y otra subida abrupta para 2021.
Ahora se hace un enfoque en la más reciente década.
# Calcular la fecha de hace 10 años desde la última fecha en el dataset
ultima_fecha <- max(ipc_long$Fecha)
fecha_inicio <- ultima_fecha - years(10)
# Filtrar los datos para los últimos 10 años
ipc_10_anos <- ipc_long %>%
filter(Fecha >= fecha_inicio)
# Crear el gráfico con los datos filtrados
ggplot(ipc_10_anos, aes(x = Fecha, y = IPC, color = Ciudad)) +
geom_line(linewidth=1) +
scale_color_brewer(palette = "Set1") +
labs(title = "Evolución del IPC en ciudades colombianas (últimos 10 años)",
x = "Año",
y = "IPC") +
theme_minimal() +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
theme(legend.position = "bottom")
De esta manera, se logra evidenciar que los distintos índices de las ciudades estaban más cercanos entre sí hace una década que ahora. Siendo (a enero de 2025) el de Barranquilla el más alto y el de Bogotá el más bajo.
Como se mencionó al inicio, el IPC es utilizado para medir la inflación en una región. Aquí su aplicación a estos datos.
# Cálculo de tasas de inflación anual
ipc_inflation <- ipc_long %>%
arrange(Ciudad, Fecha) %>%
group_by(Ciudad) %>%
mutate(
Inflacion_Anual = (IPC / lag(IPC, 12) - 1) * 100
) %>%
filter(!is.na(Inflacion_Anual))
# Gráfico de inflación anual
ggplot(ipc_inflation, aes(x = Fecha, y = Inflacion_Anual, color = Ciudad)) +
geom_line() +
scale_color_brewer(palette = "Set1") +
labs(title = "Inflación anual en ciudades colombianas (1980-2015)",
x = "Año",
y = "Tasa de inflación (%)") +
theme_minimal() +
scale_x_date(date_breaks = "5 years", date_labels = "%Y") +
theme(legend.position = "bottom")
Se observan altas tasas de inflación (tasa de cambio porcentual del IPC) durante gran parte de los años 80 y 90, lo que coincide con un crecimiento exponencial en el IPC. Luego hay una disminución gradual hasta estabilizarse en valores más bajos después de 2000. El repunte de inflación alrededor de 2022 (que llega a aproximadamente 15%) coincide con el aumento más pronunciado en la curva del IPC en ese mismo periodo. Los gráficos muestran que las ciudades colombianas presentan patrones similares tanto en IPC como en inflación.
Nuevamente, haciendo un enfoque en los últimos años.
# Filtrar los datos para los últimos 10 años
ipc_10_anos <- ipc_inflation %>%
filter(Fecha >= fecha_inicio)
# Crear el gráfico con los datos filtrados
ggplot(ipc_10_anos, aes(x = Fecha, y = Inflacion_Anual, color = Ciudad)) +
geom_line(linewidth=1) +
scale_color_brewer(palette = "Set1") +
labs(title = "Evolución de la inflación en ciudades colombianas (últimos 10 años)",
x = "Año",
y = "Inflación") +
theme_minimal() +
scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
theme(legend.position = "bottom")
Se aprecia, como con el IPC, que la inflación parte de niveles similares en 2015 para las siete ciudades, pero actualmente sus valores se han distanciado. Siendo Bucaramanga la ciudad con mayor inflación en la actualidad y Barranquilla la ciudad con el menor de estos valores.
A continuación, se comparan las distribuciones de los datos en cada ciudad mediante otro tipo de diagrama.
# Boxplots de inflación por ciudad
ggplot(ipc_inflation, aes(x = Ciudad, y = Inflacion_Anual, fill = Ciudad)) +
geom_boxplot() +
scale_color_brewer(palette = "Set1") +
labs(title = "Distribución de la inflación anual por ciudad (1980-2015)",
x = "Ciudad",
y = "Tasa de inflación (%)") +
theme_minimal() +
theme(legend.position = "none") +
coord_flip()
Con estos diagramas de caja se observa la ausencia de datos atípicos y se constata que las ciudades tienen distribuciones similares en lo que respecta a su inflación.