Introducción

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

Análisis exploratorio

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