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.
yo comiendo bombombun
literal yo
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("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, MEBITDA, ROE, ROA) %>%
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 MEBITDA ROE
## Min. :1.180e+09 Min. : 19556000 Min. : 4.85 Min. :13.98
## 1st Qu.:1.279e+09 1st Qu.: 50363000 1st Qu.:10.88 1st Qu.:23.02
## Median :1.465e+09 Median : 61485000 Median :11.92 Median :25.92
## Mean :1.556e+09 Mean : 68257714 Mean :11.75 Mean :28.36
## 3rd Qu.:1.827e+09 3rd Qu.: 79529500 3rd Qu.:13.05 3rd Qu.:32.52
## Max. :2.273e+09 Max. :125447000 Max. :16.61 Max. :51.97
## ROA
## Min. :1.830
## 1st Qu.:2.785
## Median :3.570
## Mean :3.629
## 3rd Qu.:4.315
## Max. :5.770
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 = 'darkblue')) %>%
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 = 'lightpink', width = 3),
marker = list(color = 'darkred', 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)
)
)
coeficiente_prueba <- cor(datos_col$UTILIDADOPER, datos_col$INGRESOS)
coeficiente_prueba
## [1] 0.9901535
# 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
coeficiente_cor_ebvsing <- cor(datos_col$INGRESOS, datos_col$EBITDA)
coeficiente_cor_ebvsing
## [1] 0.9230257