Colombina S.A. es una de las empresas más reconocidas en la industria de alimentos en Colombia y a nivel internacional. Fundada en 1927, ha consolidado su presencia en más de 80 países, ofreciendo una amplia gama de productos, incluyendo confitería, galletas, helados y alimentos procesados. Su crecimiento sostenido, estrategias de diversificación y solidez financiera la han convertido en un referente del sector.
El análisis financiero de Colombina es clave para evaluar su desempeño en el mercado, identificar tendencias y comprender los factores que impulsan su rentabilidad y estabilidad. En este documento, realizaremos un análisis exploratorio de algunas variables financieras clave de la empresa entre 2016 y 2024, utilizando R. Aplicaremos técnicas de estadística descriptiva y visualización de datos para detectar patrones, anomalías y relaciones entre variables, facilitando una mejor interpretación de su evolución financiera.
A través de este análisis, se busca proporcionar una visión más clara de la situación financiera de Colombina, lo cual puede ser útil para inversionistas, analistas financieros y académicos interesados en la industria de alimentos.
El análisis exploratorio de datos (EDA) es un paso clave para comprender la información financiera de Colombina S.A., identificar patrones y evaluar la distribución de las variables.
A través de estadísticas descriptivas y visualización de datos con R, identificaremos tendencias, relaciones entre variables y posibles anomalías, proporcionando una base sólida para interpretar el desempeño financiero de Colombina en el período 2016-2024.
PASO 1. Instalar y cargar librerias
# Cargar librerías necesarias
library(readxl)
library(dplyr)
library(ggplot2)
library(plotly)
library(knitr)
library(kableExtra)
library(tidyr)
library(tidyverse)
PASO 2: Cargar la base de datos
# Cargar datos desde el archivo Excel
datos_col <- read_excel("C:/Users/julie/OneDrive - PUJ Cali/Posgrado Finanzas/Maestria Finanzas/Módulo I/Practica/Colombina.xlsx",
col_types = c("date", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric",
"numeric", "numeric", "numeric"))
# Ver las primeras filas de los datos
class(datos_col)
## [1] "tbl_df" "tbl" "data.frame"
colnames(datos_col)
## [1] "FECHA" "INGRESOS" "UTILIDADOPER" "ACTIVOS" "PASIVOS"
## [6] "EBITDA" "QUICKRATIO" "MEBITDA" "MBRUTO" "MOPERACIONAL"
## [11] "ROA" "ROE"
head(datos_col)
| FECHA | INGRESOS | UTILIDADOPER | ACTIVOS | PASIVOS | EBITDA | QUICKRATIO | MEBITDA | MBRUTO | MOPERACIONAL | ROA | ROE |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2016-01-01 | 400871238 | 134228489 | 1394448794 | 1195743931 | 47789382 | 0.46 | 11.92 | 33.48 | 7.66 | 3.75 | 22.90 |
| 2016-04-01 | 398002762 | 132113511 | 1383049000 | 1192835000 | 36523618 | 0.61 | 9.18 | 33.19 | 4.88 | 3.77 | 23.15 |
| 2016-07-01 | 480807000 | 163638000 | 1401579000 | 1204776000 | 55165000 | 0.59 | 11.47 | 34.03 | 8.05 | 3.79 | 23.40 |
| 2016-10-01 | 469500000 | 158209000 | 1416316000 | 1179764000 | 78004000 | 0.50 | 16.61 | 33.70 | 13.71 | 4.18 | 23.50 |
| 2017-01-01 | 397086000 | 138297000 | 1427549000 | 1240232000 | 49863000 | 0.54 | 12.56 | 34.83 | 8.74 | 3.57 | 26.64 |
| 2017-04-01 | 398514000 | 136094000 | 1460785000 | 1268580000 | 43652000 | 0.56 | 10.95 | 34.15 | 6.29 | 3.36 | 25.92 |
Indicadores de centralidad y dispersión
# Resumen estadístico de las variables financieras
resumen <- datos_col %>%
select(INGRESOS, UTILIDADOPER, ACTIVOS, PASIVOS, EBITDA) %>%
summary()
resumen
## INGRESOS UTILIDADOPER ACTIVOS
## Min. :397086000 Min. :117049000 Min. :1.383e+09
## 1st Qu.:457554500 1st Qu.:153991500 1st Qu.:1.465e+09
## Median :498207000 Median :174979000 Median :1.678e+09
## Mean :570795229 Mean :195623514 Mean :1.780e+09
## 3rd Qu.:709237000 3rd Qu.:240252000 3rd Qu.:2.124e+09
## Max. :871052000 Max. :318313000 Max. :2.571e+09
## PASIVOS EBITDA
## Min. :1.180e+09 Min. : 19556000
## 1st Qu.:1.279e+09 1st Qu.: 50363000
## Median :1.465e+09 Median : 61485000
## Mean :1.556e+09 Mean : 68257714
## 3rd Qu.:1.827e+09 3rd Qu.: 79529500
## Max. :2.273e+09 Max. :125447000
Gráfico de barras
# Crear el gráfico de barras interactivo
grafico_barras_ingresos <- datos_col %>%
plot_ly(x = ~FECHA, y = ~INGRESOS, type = 'bar',
marker = list(color = 'skyblue')) %>%
layout(title = "Figura 1. Ingresos de Colombina por Periodo",
xaxis = list(title = "Periodo"),
yaxis = list(title = "Ingreso (Miles de pesos)"),
hovermode = "x")
# Mostrar el gráfico
grafico_barras_ingresos
Gráfico de líneas-Crecimiento anual%)
# Ordenar por fecha
datos_col <- datos_col %>% arrange(FECHA)
# Calcular la tasa de crecimiento anual de los ingresos comparando con el mismo trimestre del año anterior
datos_col <- datos_col %>%
mutate(CRECIMIENTO_INGRESOS = (INGRESOS / lag(INGRESOS, 4) - 1) * 100)
# Crear el gráfico interactivo con Plotly
grafico_crecimiento <- datos_col %>%
filter(!is.na(CRECIMIENTO_INGRESOS)) %>% # Filtrar valores NA que aparecen en los primeros 4 trimestres
plot_ly(x = ~FECHA, y = ~CRECIMIENTO_INGRESOS, type = 'scatter', mode = 'lines+markers',
line = list(color = 'lightblue', width = 3),
marker = list(color = 'grey', size = 6)) %>%
layout(title = "Figura 2. Tasa de Crecimiento Anual de Ingresos (1T2017 - 3T2024)",
xaxis = list(title = "Periodo"),
yaxis = list(title = "Crecimiento (%)", tickformat = ".1f"),
hovermode = "x unified",
plot_bgcolor = "rgba(245, 245, 245, 0.9)")
# Mostrar el gráfico
grafico_crecimiento
Gráfico de líneas-niveles
grafico_ingresos <- datos_col %>%
plot_ly(x = ~FECHA, y = ~INGRESOS, type = 'scatter', mode = 'lines+markers',
line = list(color = 'lightblue', width = 3),
marker = list(color = 'black', size = 5)) %>%
layout(title = "Figura 2.1 Evolución de Ingresos totales (1T2016-3T2024",
xaxis = list(title = "Periodo"),
yaxis = list(title = "Ingreso (Miles de pesos)"),
hovermode = "x")
# Mostrar el gráfico
grafico_ingresos
Boxplot Ingresos
La figura 3, muestra que:
📊 La mediana está más cerca de Q1 que de Q3 → Indica una distribución sesgada hacia la derecha, es decir, hay algunos ingresos excepcionalmente altos que elevan la media.
🔼 Amplio rango intercuartil (IQR = Q3 - Q1 = 273,802,750) → Indica una variabilidad significativa en los ingresos.
🚀 No se observan valores atípicos (fuera de los bigotes), lo que sugiere que los ingresos no han tenido fluctuaciones extremas fuera de lo esperado.
📉 El mínimo y máximo muestran un rango amplio (397M - 871M) → La empresa ha tenido variaciones importantes en sus ingresos a lo largo del tiempo.
Los ingresos de la empresa han mostrado una tendencia general al alza con variabilidad en su comportamiento.
# Crear y mostrar el boxplot interactivo
ggplotly(
ggplot(datos_col, aes(y=INGRESOS)) +
geom_boxplot(fill="lightblue", color="black", outlier.colour="red", outlier.shape=16, outlier.size=3) +
labs(title="Figura 3. Boxplot de los ingresos totales",
y="Precio") +
theme_minimal()
)
Gráfico de barras
# Crear el gráfico de barras interactivo
grafico_barras_ingresos <- datos_col %>%
plot_ly(x = ~FECHA, y = ~INGRESOS, type = 'bar',
marker = list(color = 'skyblue')) %>%
layout(title = "Ingresos de Colombina por Periodo",
xaxis = list(title = "Periodo"),
yaxis = list(title = "Figura 4. Ingreso (Miles de pesos)"),
hovermode = "x")
# Mostrar el gráfico
grafico_barras_ingresos
Correlación-Dispersión
En la Figura 5. se observa una fuerte correlación positiva entre los ingresos y la utilidad operacional, con un coeficiente de correlación de 0.99.
Esto indica que a medida que los ingresos aumentan, la utilidad operacional también crece en casi la misma proporción.
# Crear gráfico interactivo con correlación
ggplotly(
ggplot(datos_col, aes(x = INGRESOS, y = UTILIDADOPER)) +
geom_point(color = "lightblue", alpha = 0.9, size = 2) + # Puntos con color y transparencia
geom_smooth(method = "lm", color = "grey", se = TRUE) + # Línea de tendencia lineal
labs(
title = paste("Figura 5. Relación entre ingresos y utilidad operacional\nCoef. de correlación: ",
round(cor(datos_col$UTILIDADOPER, datos_col$INGRESOS, use = "complete.obs"), 2)),
x = "Ingresos(miles de pesos)",
y = "Utilidad operacional (Miles de pesos)",
caption = "Fuente: Datos financieros"
) +
theme_minimal() +
theme(
plot.title = element_text(size = 14, face = "bold", hjust = 0.5),
axis.title = element_text(size = 12),
axis.text = element_text(size = 10)
)
)
# Crear gráfico de líneas interactivo comparando Activos y Pasivos
grafico_lineas_activos_pasivos <- plot_ly(datos_col, x = ~FECHA) %>%
add_lines(y = ~ACTIVOS, name = "Activos", line = list(color = 'green')) %>%
add_lines(y = ~PASIVOS, name = "Pasivos", line = list(color = 'purple')) %>%
layout(title = "Figura 6. Comparación de Activos y Pasivos de Colombina S.A",
xaxis = list(title = "Periodo"),
yaxis = list(title = "Valor en Miles de pesos"),
hovermode = "x")
# Mostrar el gráfico
grafico_lineas_activos_pasivos
# Crear gráfico de líneas interactivo comparando Ingresos y EBITDA
grafico_lineas_ingresos_ebitda <- plot_ly(datos_col, x = ~FECHA) %>%
add_lines(y = ~INGRESOS, name = "Ingresos", line = list(color = 'green')) %>%
add_lines(y = ~EBITDA, name = "EBITDA", line = list(color = 'purple')) %>%
layout(title = "fIGURA 7. Comparación de Ingresos y EBITDA de Colombina",
xaxis = list(title = "Periodo"),
yaxis = list(title = "Valor en Miles de pesos"),
hovermode = "x")
# Mostrar el gráfico
grafico_lineas_ingresos_ebitda