En este informe, se realizará la extracción de señales o descomposición de series temporales aplicadas a las utilidades trimestrales de la empresa Colombina S.A. durante el período comprendido entre el primer trimestre de 2019 (1T2019) y el tercer trimestre de 2024 (3T2024).
El análisis de series temporales permite identificar patrones subyacentes en los datos, como tendencias, estacionalidad y componentes irregulares, lo que facilita una mejor comprensión del comportamiento de las utilidades de la empresa. Para ello, se emplearán técnicas estadísticas y métodos de descomposición, con el fin de extraer información clave que pueda contribuir a la toma de decisiones estratégicas.
A lo largo del informe, se presentarán los resultados obtenidos y se discutirán sus implicaciones en el contexto financiero de Colombina S.A.
En este análisis, se realizará un estudio exploratorio de la variable Utilidad de la empresa Colombina. Para ello, se calcularán estadísticas descriptivas que nos permitirán conocer mejor la distribución y principales características de la variable en estudio.
Además, se complementará el análisis con la visualización de gráficos, los cuales facilitarán la identificación de patrones, tendencias y posibles valores atípicos en los datos.
El objetivo de este análisis es obtener una comprensión inicial de la información disponible y generar insights que puedan ser utilizados en estudios posteriores más avanzados.
A continuación, se presenta el desarrollo del análisis.
library(readxl) # Para leer archivos Excel
## Warning: package 'readxl' was built under R version 4.4.3
library(dplyr) # Para manipulación de datos
## Warning: package 'dplyr' was built under R version 4.4.3
##
## Adjuntando el paquete: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
library(ggplot2) # Para visualización
## Warning: package 'ggplot2' was built under R version 4.4.3
library(plotly) # Para gráficos interactivos
## Warning: package 'plotly' was built under R version 4.4.3
##
## 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
library(tseries) # Para análisis de series temporales
## Warning: package 'tseries' was built under R version 4.4.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(forecast) # Para descomposición
## Warning: package 'forecast' was built under R version 4.4.3
library(timetk) # Para análisis y visualización de series temporales
## Warning: package 'timetk' was built under R version 4.4.3
# Cargar datos desde el archivo Excel
data <- read_excel("C:/Users/luisi/Downloads/Colombina EXTRA.xlsx")
# Ver las primeras filas de los datos
class(data)
## [1] "tbl_df" "tbl" "data.frame"
colnames(data)
## [1] "Date" "ING" "UTILIDAD" "ACTIVOS" "PASIVOS"
head(data)
## # A tibble: 6 × 5
## Date ING UTILIDAD ACTIVOS PASIVOS
## <dttm> <dbl> <dbl> <dbl> <dbl>
## 1 2019-03-01 00:00:00 433580000 35320000 1565128000 1391576000
## 2 2019-06-01 00:00:00 462186000 32407000 1571254000 1387456000
## 3 2019-09-01 00:00:00 517285000 44634000 1625282000 1418499000
## 4 2019-12-01 00:00:00 528268000 44063000 1690409000 1457298000
## 5 2020-03-01 00:00:00 498207000 47612000 1816189000 1604851000
## 6 2020-06-01 00:00:00 402864000 -2194000 1727606000 1532106000
ts_data <- ts(data$UTILIDAD, start = c(2019, 1), frequency = 4)
Las estadísticas exploratorias de las utilidades trimestrales de Colombina S.A. indican lo siguiente:
Mínimo (Min = -2.194.000 COP)
La utilidad trimestral más baja registrada en el periodo analizado es de aproximadamente -2.1 millones de COP. Máximo (Max = 105.801.000 COP)
La utilidad trimestral más alta registrada alcanza los 105.801.000 de COP.
Media (Media = 54.522.478 COP)
En promedio, las utilidades trimestrales son 54.5 millones de COP.
Mediana (Mediana = 50.231.000 COP)
El valor central de las utilidades es 50.2 millones de COP, lo que sugiere que hay cierta simetría en la distribución de las utilidades, aunque la media es ligeramente mayor, lo que puede indicar la presencia de valores altos que elevan el promedio.
Desviación estándar (DesviacionEstandar = 27.259.333 COP)
La variabilidad de las utilidades trimestrales es de 27.2 millones de COP, lo que indica una fluctuación considerable entre periodos.
Coeficiente de variación (CoefVar = 0.499965)
Este valor indica que la variabilidad de las utilidades representa un 49,9% con respecto a la media. Como regla general, si el coeficiente de variación es menor a 0.30 (30%), la variabilidad no es excesiva, lo que indica que las utilidades de Colombina S.A. no tienen una estabilidad relativa, es decir, los datos están muy dispersos con respecto a la media. Conclusiones:
Las utilidades trimestrales de Colombina S.A. no muestran estabilidad, con un coeficiente de variación bastante alto. Existen diferencias notables entre los valores mínimos y máximos, lo que puede deberse a factores económicos externos, como por ejemplo, una disminución en los ingresos por baja demanda de los productos, competencia agresiva que reduzca las ventas, etc; o por factores internos, como costos operativos elevados por motivo de aumento del precio de las materias primas, o invremento en el salario de los trabajadores, etc.
La diferencia entre la media y la mediana no es muy grande, lo que sugiere que la distribución no está muy sesgada.
descriptive_stats <- data.frame(
Min = min(ts_data),
Max = max(ts_data),
Media = mean(ts_data),
Mediana = median(ts_data),
DesviacionEstandar = sd(ts_data),
CoefVar = sd(ts_data) / mean(ts_data)
)
print(descriptive_stats)
## Min Max Media Mediana DesviacionEstandar CoefVar
## 1 -2194000 105801000 54522478 50231000 27259333 0.499965
# Gráfico interactivo de la serie original
grafico_serie <- ggplot(data, aes(x = seq.Date(from = as.Date("2019-01-01"), by = "quarter", length.out = nrow(data)), y = UTILIDAD)) +
geom_line(color = "#457B9D", size = 1) +
geom_point(color = "#E56399") +
ggtitle("Figura 1.Utilidades Trimestrales de Colombina S.A.") +
xlab("Tiempo") +
ylab("Miles de Pesos Colombianos") +
theme_minimal()
## 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.
ggplotly(grafico_serie)
La gráfica muestra las utilidades trimestrales de Colombina S.A. a lo largo del tiempo (2019 - 2024), expresadas en miles de pesos colombianos.
Se observa una tendencia creciente en las utilidades desde 2020 en adelante. Aunque hay fluctuaciones, la empresa parece haber aumentado su rentabilidad en los últimos años.
Sin embargo, se puede notar una caída abrupta en el segundo trimestre del 2020, la cual puede deberse al impacto de la pandemia COVID-19, en donde se pudo dar una disminución bastante pronunciada de la demanda de los productos producidos por esta empresa (dulces), ya que como se sabe, no ofrece alimentos o productos de primera necesidad. Todo esto, llevó a una disminución en las ventas de la compañía, y por tanto, también de las utilidades.
# Descomposición de la serie temporal
stl_decomp <- stl(ts_data, s.window = "periodic")
plot(stl_decomp)
De la gráfica anterior se puede observar una clara tendencia positiva. A
pesar de altibajos, la empresa ha aumentado sus utilidades en los
últimos años. También se aprecia una fuerte estacionalidad, en donde los
patrones cíclicos son claros, y pueden estar relacionados con la
naturaleza del negocio, en donde temporadas como las navideñas o de
halloween pueden impulsar las ventas y por consiguiente, aumentar las
utilidades. Por otro lado, se ven residuos moderados, es decir, a pesar
de que hayan ocurrido eventos inesperados, no parecen afectar demasiado
la estructura general de la serie.
# Extraer los componentes de la descomposición
serie_ajustada <- ts_data - stl_decomp$time.series[, "seasonal"]
library(ggplot2)
library(plotly)
library(scales)
# Comparación de la serie original con la ajustada por estacionalidad
grafico_ajustada <- ggplot() +
geom_line(aes(x = seq_along(ts_data), y = ts_data), color = "aquamarine3", size = 1, linetype = "solid") +
geom_line(aes(x = seq_along(serie_ajustada), y = serie_ajustada), color = "#E56399", size = 1, linetype = "dashed") +
ggtitle("Figura 2.Serie Original vs Serie Ajustada por Estacionalidad") +
xlab("Tiempo") +
ylab("Miles de Pesos Colombianos") +
theme_minimal()
ggplotly(grafico_ajustada)
## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.
La serie ajustada por estacionalidad muestra una tendencia creciente, lo que significa que el negocio está mejorando más allá de las fluctuaciones estacionales.
# Comparación de la serie original con la tendencia
tendencia <- stl_decomp$time.series[, "trend"]
grafico_tendencia <- ggplot() +
geom_line(aes(x = seq_along(ts_data), y = ts_data), color = "#E56399", size = 1) +
geom_line(aes(x = seq_along(tendencia), y = tendencia), color = "purple", size = 1, linetype = "dashed") +
ggtitle("Figura 3. Serie Original vs Tendencia") +
xlab("Tiempo") +
ylab("Miles de Pesos Colombianos") +
theme_minimal()
ggplotly(grafico_tendencia)
## Don't know how to automatically pick scale for object of type <ts>. Defaulting
## to continuous.
La gráfica anterior permite evidenciar la tendencia de las utilidades por cada trimestre. Se puede observar que en los primeros 6 trimestres estudiados, la tendencia es bajista, sin embargo, desde aproximadamente el 7mo trimestre, se observa una senda de recuperación en las utilidades de la compañía.
# Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento <- (ts_data[(5:length(ts_data))] / ts_data[1:(length(ts_data) - 4)] - 1) * 100
tasa_tendencia <- (tendencia[(5:length(tendencia))] / tendencia[1:(length(tendencia) - 4)] - 1) * 100
# Crear vector de fechas corregido
fechas_corregidas <- seq(from = as.Date("2020-01-01"), by = "quarter", length.out = length(tasa_crecimiento))
# Verificar longitudes
print(length(fechas_corregidas))
## [1] 19
print(length(tasa_crecimiento))
## [1] 19
print(length(tasa_tendencia))
## [1] 19
# Gráfico de la tasa de crecimiento anual
grafico_crecimiento <- ggplot() +
geom_line(aes(x = fechas_corregidas, y = tasa_crecimiento), color = "#A8DADC", size = 1) +
geom_line(aes(x = fechas_corregidas, y = tasa_tendencia), color = "#B39BC8", size = 1, linetype = "dashed") +
ggtitle("Figura 4. Tasa de Crecimiento Anual: Serie Original vs Tendencia") +
xlab("Tiempo") +
ylab("% de Crecimiento Anual") +
theme_minimal()
# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento)
De la gráfica anterior se puede observar que a pesar de que haya habido una caída abrupta en la tasa de crecimiento de las utilidades de la compañía en el año 2021, realmente la tendencia suavizada evidencia que el crecimiento ha sido estable con el pasar de los años; y que a medida que nos acercamos a 2024, la tasa de crecimiento parece converger hacia valores cercanos a 0%, lo que sugiere una estabilización de la empresa o sector.