INTRODUCCIÓN

SECTOR ECONÓMICO ELEGIDO:

                                  *Agricultura - CAFE*

EMPRESA DENTRO DEL SECTOR: Juan Valdez

Es una empresa colombiana de cafeterías y productos de café creada por la Federación Nacional de Cafeteros de Colombia. Actualmente cuenta con cientos de tiendas en Colombia y en varios países, y es una de las marcas más reconocidas del café colombiano en el mundo. Su objetivo es promover y comercializar el café 100 % colombiano producido por miles de familias caficultoras del país.

SELECCIÓN Y JUSTIFICACIÓN DE VARIABLES:

Se seleccionaron cinco variables que permiten analizar la dinámica del sector desde las dimensiones de oferta, precios, comercio internacional y demanda interna.

1. La Producción Nacional de Café (PNCAFE) representa la oferta agregada del sector y determina la disponibilidad del grano tanto para el mercado interno como para la exportación. Un aumento en la producción suele traducirse en una mayor capacidad exportadora y abastecimiento interno, lo que puede estimular el crecimiento del sector.

2. Precio Interno Base de Compra del Café (PICAFE): refleja el valor pagado a los productores en el mercado nacional y constituye un indicador clave de la rentabilidad del cultivo. También, muestra los costos de adquisición para las empresas que transforman o comercializan café.

3. Precio Externo del Café Colombiano (PECAFE): captura la cotización del café en los mercados internacionales. Debido a la fuerte integración del café colombiano al comercio global, las variaciones en este precio influyen directamente en los ingresos por exportaciones y en los incentivos para la producción.

4. Exportaciones de Café (XCAF): permiten evaluar el desempeño del sector en el comercio internacional y reflejan la demanda externa por el café colombiano. Esta variable está estrechamente vinculada tanto a la producción nacional como al comportamiento de los precios internacionales.

5. Índice de Confianza del Consumidor (ICC) mide las expectativas económicas de los hogares y su disposición a consumir. Aunque no pertenece directamente al sector agrícola, esta variable permite aproximar la dinámica de la demanda interna de café y productos derivados, particularmente en establecimientos de consumo como cafeterías.

METODOLOGÍA

Para analizar el comportamiento de las series temporales utilizadas en el estudio, se empleó la técnica de descomposición STL (Seasonal and Trend decomposition using Loess). Este método permite separar una serie temporal en tres componentes principales: tendencia, estacionalidad y residuo.

La tendencia refleja el comportamiento de largo plazo de la serie, mostrando la dirección general de la variable a lo largo del tiempo. La estacionalidad captura los patrones que se repiten de manera periódica en intervalos regulares, como variaciones mensuales o anuales. Finalmente, el componente residual o irregular recoge las fluctuaciones aleatorias o choques inesperados que no pueden ser explicados por la tendencia ni por la estacionalidad.

El método STL se basa en el procedimiento de suavizamiento, el cual permite estimar de manera flexible los componentes de la serie sin imponer supuestos estrictos sobre su forma funcional. Debido a esta flexibilidad, la descomposición STL es ampliamente utilizada en el análisis de series temporales económicas y agrícolas.

La aplicación de esta metodología permite identificar y separar los distintos patrones presentes en las series analizadas, lo que facilita su posterior interpretación y contribuye a mejorar los procesos de análisis y pronóstico en el estudio del mercado cafetero.

Instalar/Cargar librerias necesarias para el análisis

#Cargar librerías necesarias
library(readxl)  # Para leer archivos Excel
library(tseries)  # Para pruebas de estacionariedad
library(forecast)  # Para modelado ARIMA y pronósticos
library(ggplot2)  # Para visualización de datos
library(plotly)  # Para gráficos interactivos
library(timetk)   #timetk simplifica y acelera el análisis exploratorio, visualización, y preparación de datos temporales para modelado. Es ideal para quienes trabajan con series temporales en un flujo de trabajo "tidy" y buscan integrar análisis visuales, detección de patrones y forecasting en un solo paquete.

Cargar base de datos

library(readxl)

data_col <- read_excel(
  "C:/Users/HONOR/Downloads/9NO_INTER_CALI/Analisis Predictivo/Ejemplo Mensual/Base Caso2.xlsx",
  col_types = c("date", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric", "numeric", "numeric", "numeric", 
    "numeric"
  )
)

PASO INDISPENSABLE: Declarar la (s) variable (s) como serie (s) temporal (es):

Variable 1

# Convertir/declarar variable 1=PNCAFE en serie de tiempo mensual
variable1_ts <- ts(data_col$PNCAFE, start = c(2012, 1), frequency = 12)

Variable 2

# Convertir/declarar el PICAFE en serie de tiempo  mensual
variable2_ts <- ts(data_col$PICAFE, start = c(2012, 1), frequency = 12)

Variable 3

# Convertir/declarar el PECAFE en serie de tiempo mensual
variable3_ts <- ts(data_col$PECAFE, start = c(2012, 1), frequency = 12)

Variable 4

# Convertir/declarar el XCAF en serie de tiempo mensual
variable4_ts <- ts(data_col$XCAF, start = c(2012, 1), frequency = 12)

Variable 5

# Convertir/declarar el ICC en serie de tiempo mensual
variable5_ts <- ts(data_col$ICC, start = c(2012, 1), frequency = 12)

RESULTADOS

EXTRACCIÓN DE SEÑALES

Gráfico inicial de la variable 1 en niveles -Original

library(ggplot2)
library(plotly)

# Convertir la serie temporal a un vector numérico para lograr graficar con ggplot2
data_col$variable1 <- as.numeric(variable1_ts)

# Crear el gráfico
grafico_serie <- ggplot(data_col, aes(x = seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = nrow(data_col)), 
                                      y = variable1)) +
  geom_line(color = "grey", linewidth = 0.4) +  # Cambiado 'size' por 'linewidth'
  geom_point(color = "black", size = 0.1) +
  ggtitle("Variable 1: PNCAFE - Serie original") +
  xlab("Tiempo") +
  ylab("Unidad Variable 1") +
  theme_minimal()

ggplotly(grafico_serie)

Extracción señales variable 1

# Cargar librerías necesarias
library(ggplot2)
library(plotly)

# Descomposición de la serie temporal
stl_decomp_var1 <- stl(variable1_ts, s.window = "periodic")

# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var1 <- data.frame(
  Time = rep(time(variable1_ts), 4),  # Tiempo repetido para cada componente
  Value = c(stl_decomp_var1$time.series[, "seasonal"], 
            stl_decomp_var1$time.series[, "trend"], 
            stl_decomp_var1$time.series[, "remainder"], 
            variable1_ts),
  Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable1_ts))
)

# Obtener años para el eje X
start_year <- floor(min(time(variable1_ts)))
end_year <- ceiling(max(time(variable1_ts)))

# Crear gráfico con ggplot2
p <- ggplot(stl_df_var1, aes(x = Time, y = Value, color = Component)) +
  geom_line() +
  facet_wrap(~Component, scales = "free_y", ncol = 1) + 
  theme_minimal() +
  labs(title = "Descomposición temporal de la variable 1: PNCAFE",
       x = "Tiempo",
       y = "Valor") +
  scale_x_continuous(breaks = seq(start_year, end_year, by = 1))  # Mostrar cada año

# Convertir a gráfico interactivo con plotly
ggplotly(p)

Interpretación:

Estacionalidad: Cosecha principal entre sep-dic y cosecha secundaria en los primeros meses del año

Resididuo: Condiciones Climáticas extremas y problemas sociales (paro nacional en 2021)

Tendencia: Crecimiento (2012-2015); estabilidad (2016-2020); caída (2021-2022);y, recuperación reciente de la producción

Extracción señales variable 2

# Cargar librerías necesarias
library(ggplot2)
library(plotly)

# Descomposición de la serie temporal
stl_decomp_var2 <- stl(variable2_ts, s.window = "periodic")

# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var2 <- data.frame(
  Time = rep(time(variable2_ts), 4),  # Tiempo repetido para cada componente
  Value = c(stl_decomp_var2$time.series[, "seasonal"], 
            stl_decomp_var2$time.series[, "trend"], 
            stl_decomp_var2$time.series[, "remainder"], 
            variable2_ts),
  Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable2_ts))
)

# Obtener años para el eje X
start_year <- floor(min(time(variable2_ts)))
end_year <- ceiling(max(time(variable2_ts)))


# Crear gráfico con ggplot2
p <- ggplot(stl_df_var2, aes(x = Time, y = Value, color = Component)) +
  geom_line() +
  facet_wrap(~Component, scales = "free_y", ncol = 1) + 
  theme_minimal() +
  labs(title = "Descomposición temporal de la variable 2:PICAFE",
       x = "Tiempo",
       y = "Valor") +
  scale_x_continuous(breaks = seq(start_year, end_year, by = 1))  # Mostrar cada año

# Convertir a gráfico interactivo con plotly
ggplotly(p)

Interpretación:

Estacionalidad: Patrones regulares en el precio a lo largo del año, asociados a los periodos de cosecha y oferta del café.

Resididuo: Entre 2021 y 2023 se rompe con el comportamiento estable. Reducción de la oferta mundial por eventos climáticos extremos en Brasil, afectó el precio internacional y el interno.

Tendencia: Aumento fuerte en el PICAFE desde 2020, alcanzando niveles más altos entre 2022 y 2023.

Extracción señales variable 3

# Cargar librerías necesarias
library(ggplot2)
library(plotly)

# Descomposición de la serie temporal
stl_decomp_var3 <- stl(variable3_ts, s.window = "periodic")

# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var3 <- data.frame(
  Time = rep(time(variable3_ts), 4),  # Tiempo repetido para cada componente
  Value = c(stl_decomp_var3$time.series[, "seasonal"], 
            stl_decomp_var3$time.series[, "trend"], 
            stl_decomp_var3$time.series[, "remainder"], 
            variable3_ts),
  Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable3_ts))
)
# Obtener años para el eje X
start_year <- floor(min(time(variable3_ts)))
end_year <- ceiling(max(time(variable3_ts)))

# Crear gráfico con ggplot2
p <- ggplot(stl_df_var3, aes(x = Time, y = Value, color = Component)) +
  geom_line() +
  facet_wrap(~Component, scales = "free_y", ncol = 1) + 
  theme_minimal() +
  labs(title = "Descomposición temporal de la variable 3: PECAFE",
       x = "Tiempo",
       y = "Valor") +
  scale_x_continuous(breaks = seq(start_year, end_year, by = 1))  # Mostrar cada año

# Convertir a gráfico interactivo con plotly
ggplotly(p)

Interpretación:

Estacionalidad: patrones regulares y repetitivos de producción en todos los años

Resididuo:Heladas en Brasil en el 202 (baja producción internacional)

Tendencia: Crecimiento (2022), caída (2023-2024), recuperación (2025)

Extracción señales variable 4

# Cargar librerías necesarias
library(ggplot2)
library(plotly)

# Descomposición de la serie temporal
stl_decomp_var4 <- stl(variable4_ts, s.window = "periodic")

# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var4 <- data.frame(
  Time = rep(time(variable4_ts), 4),  # Tiempo repetido para cada componente
  Value = c(stl_decomp_var4$time.series[, "seasonal"], 
            stl_decomp_var4$time.series[, "trend"], 
            stl_decomp_var4$time.series[, "remainder"], 
            variable4_ts),
  Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable4_ts))
)

# Obtener años para el eje X
start_year <- floor(min(time(variable4_ts)))
end_year <- ceiling(max(time(variable4_ts)))

# Crear gráfico con ggplot2
p <- ggplot(stl_df_var4, aes(x = Time, y = Value, color = Component)) +
  geom_line() +
  facet_wrap(~Component, scales = "free_y", ncol = 1) + 
  theme_minimal() +
  labs(title = "Descomposición temporal de la variable 4: XCAF",
       x = "Tiempo",
       y = "Valor") +
  scale_x_continuous(breaks = seq(start_year, end_year, by = 1))  # Mostrar cada año

# Convertir a gráfico interactivo con plotly
ggplotly(p)

Interpretación:

Estacionalidad: Patrones recurrentes cada año (producción y venta)

Resididuo:Pandemia (2020) y Paro Nacional (2021) producción y distribución

Tendencia: Crecimiento (2022), caída (2023-2024), recuperación (2025)Crecimiento moderado en 2013 y 2016, seguido de una caída intermedia en los años posteriores. A partir de 2021 inicia una recuperación, que se mantiene con una tendencia positiva hacia 2025

Extracción señales variable 5

# Cargar librerías necesarias
library(ggplot2)
library(plotly)

# Descomposición de la serie temporal
stl_decomp_var5 <- stl(variable5_ts, s.window = "periodic")

# Convertir la descomposición a un data frame para graficar con ggplot2
stl_df_var5 <- data.frame(
  Time = rep(time(variable5_ts), 4),  # Tiempo repetido para cada componente
  Value = c(stl_decomp_var5$time.series[, "seasonal"], 
            stl_decomp_var5$time.series[, "trend"], 
            stl_decomp_var5$time.series[, "remainder"], 
            variable5_ts),
  Component = rep(c("Estacional", "Tendencia", "Residuo", "Serie Original"), each = length(variable5_ts))
)
# Obtener años para el eje X
start_year <- floor(min(time(variable5_ts)))
end_year <- ceiling(max(time(variable5_ts)))

# Crear gráfico con ggplot2
p <- ggplot(stl_df_var5, aes(x = Time, y = Value, color = Component)) +
  geom_line() +
  facet_wrap(~Component, scales = "free_y", ncol = 1) + 
  theme_minimal() +
  labs(title = "Descomposición temporal de la variable 5: ICC",
       x = "Tiempo",
       y = "Valor") +
  scale_x_continuous(breaks = seq(start_year, end_year, by = 1))  # Mostrar cada año

# Convertir a gráfico interactivo con plotly
ggplotly(p)

Interpretación:

Estacionalidad: Patrones cíclicos regulares, con fluctuaciones que reflejan variaciones en el ánimo de los hogares y dinámicas de consumo interno.

Resididuo:Cambio climático y pandemia 2020

Tendencia: Muestra una caída prolongada hasta 2021, seguida de una recuperación gradual desde 2023, proyectando un repunte sostenido hacia 2025, lo que indica resiliencia en el optimismo de los hogares colombianos.

Después de la descomposición temporal de cada variable, se extrae la variable ajustada por estacionalidad para graficarla junto con la serie original:

Se crea la variable1 ajustada por estacionalidad

# Extraer los componentes de la descomposición
variable1_sa <- variable1_ts - stl_decomp_var1$time.series[, "seasonal"]

Se crea la variable2 ajustada por estacionalidad

# Extraer los componentes de la descomposición
variable2_sa <- variable2_ts - stl_decomp_var2$time.series[, "seasonal"]

Se crea la variable3 ajustada por estacionalidad

# Extraer los componentes de la descomposición
variable3_sa <- variable3_ts - stl_decomp_var3$time.series[, "seasonal"]

Se crea la variable4 ajustada por estacionalidad

# Extraer los componentes de la descomposición
variable4_sa <- variable4_ts - stl_decomp_var4$time.series[, "seasonal"]

Se crea la variable5 ajustada por estacionalidad

variable5_sa <- variable5_ts - stl_decomp_var5$time.series[, "seasonal"]

SERIE ORIGINAL VS LA AJUSTADA POR ESTACIONALIDAD

Gráfico serie original VS ajustada Variable 1

# Crear vector de fechas correctamente alineado con la serie
fechas_var1 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable1_ts))

# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var1 <- ggplot() +
  geom_line(aes(x = fechas_var1, y = variable1_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
  geom_line(aes(x = fechas_var1, y = variable1_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
  ggtitle("Variable 1:PNCAFE - Serie Original vs Serie Ajustada por Estacionalidad") +
  xlab("Tiempo") +
  ylab("Unidad de medida variable 1") +
  theme_minimal() +
  scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización

# Convertir a gráfico interactivo
ggplotly(grafico_ajustada_var1)

Interpretación

El suavizamiento elimina las variaciones estacionales.Se observa la producción de café sin que el ciclo de cosecha altere o distorsione la interpretación.

Gráfico serie original VS ajustada Variable 2

# Crear vector de fechas correctamente alineado con la serie
fechas_var2 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable2_ts))

# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var2 <- ggplot() +
  geom_line(aes(x = fechas_var2, y = variable2_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
  geom_line(aes(x = fechas_var2, y = variable2_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
  ggtitle("Variable 2: PICAFE - Serie Original vs Serie Ajustada por Estacionalidad") +
  xlab("Tiempo") +
  ylab("Unidad de medida variable 2") +
  theme_minimal() +
   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización

# Convertir a gráfico interactivo
ggplotly(grafico_ajustada_var2)

Interpretación

Se observa la serie original y la serie ajustada tienen la misma trayectoría en el periodo de tiempo, por lo que no habría inconveniente al usar la serie original.

Gráfico serie original VS ajustada Variable 3

# Crear vector de fechas correctamente alineado con la serie
fechas_var3 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable3_ts))

# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var3 <- ggplot() +
  geom_line(aes(x = fechas_var3, y = variable3_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
  geom_line(aes(x = fechas_var3, y = variable3_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
  ggtitle("Variable 3: PECAFE - Serie Original vs Serie Ajustada por Estacionalidad") +
  xlab("Tiempo") +
  ylab("Unidad de medida variable 3") +
  theme_minimal() +
   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización

# Convertir a gráfico interactivo
ggplotly(grafico_ajustada_var3)

Interpretación

Se observa que al ajustar por estacionalidad, esos patrones se eliminan y que más allá de los altibajos, el precio tuvo una caída en 2018–2020 y una recuperación sostenida hacia 2024–2025.

Gráfico serie original VS ajustada Variable 4

# Crear vector de fechas correctamente alineado con la serie
fechas_var4 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable4_ts))

# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var4 <- ggplot() +
  geom_line(aes(x = fechas_var4, y = variable4_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
  geom_line(aes(x = fechas_var4, y = variable4_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
  ggtitle("Variable 4: XCAF - Serie Original vs Serie Ajustada por Estacionalidad") +
  xlab("Tiempo") +
  ylab("Unidad de medida variable 4") +
  theme_minimal() +
   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización

# Convertir a gráfico interactivo
ggplotly(grafico_ajustada_var4)

Interpretación

La serie ajustada corrige los picos, mostrando lo que realmente ocurre con el nivel de exportaciones en el largo plazo. Lo que revela que no fueron cambios estructurales, sino estacionales.

Gráfico serie original VS ajustada Variable 5

# Crear vector de fechas correctamente alineado con la serie
fechas_var5 <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable5_ts))

# Gráfico mejorado con fechas en el eje X
grafico_ajustada_var5 <- ggplot() +
  geom_line(aes(x = fechas_var5, y = variable5_ts), color = "grey", size = 0.5, linetype = "solid", name = "Serie Original") +
  geom_line(aes(x = fechas_var5, y = variable5_sa), color = "black", size = 0.6, linetype = "solid", name = "Serie Ajustada") +
  ggtitle("Variable 5: ICC - Serie Original vs Serie Ajustada por Estacionalidad") +
  xlab("Tiempo") +
  ylab("Unidad de medida variable 5") +
  theme_minimal() +
   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas para mejor visualización

# Convertir a gráfico interactivo
ggplotly(grafico_ajustada_var5)

Interpretación

La serie original tuvo una caída abrupta en 2020 por la pandemia, reflejando un fuerte choque en la confianza de los hogares. Al observar la serie ajustada por estacionalidad, se aprecia que más allá de esos eventos extraordinarios la confianza empieza a recuperarse. La tendencia confirma una recuperación estructural hacia 2025.

SERIE ORIGINAL VS TENDENCIA

Primero se debe obtener la tendencia de cada variable y luego graficarla

Tendencia Variable 1

library(ggplot2)
library(plotly)

# Convertir la serie a un vector numérico
variable1_vec <- as.numeric(variable1_ts)
tendencia_var1 <- as.numeric(stl_decomp_var1$time.series[, "trend"])

# Asegurar que 'fechas' tenga la misma longitud
fechas <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable1_ts))

# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia_var1 <- ggplot() +
  geom_line(aes(x = fechas, y = variable1_vec, color = "Serie Original"), size = 0.7, linetype = "solid") +
  geom_line(aes(x = fechas, y = tendencia_var1, color = "Tendencia"), size = 0.8, linetype = "solid") +
  scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
  ggtitle("Variable 1: PNCAFE - Serie Original vs Tendencia") +
  xlab("Tiempo") +
  ylab("Unidad de medida Variable 1") +
  theme_minimal() +
   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X

# Convertir a gráfico interactivo con plotly
ggplotly(grafico_tendencia_var1)

Interpretación

Refleja que el negocio cafetero en Colombia en realidad tuvo un periodo de crecimiento, pasando a uno de estabilidad, posteiormente decayendo, pero en 2023 su tendencia pasa a ser positiva.

Tendencia Variable 2

library(ggplot2)
library(plotly)

# Convertir la serie a un vector numérico
variable2_vec <- as.numeric(variable2_ts)
tendencia_var2 <- as.numeric(stl_decomp_var2$time.series[, "trend"])

# Asegurar que 'fechas' tenga la misma longitud
fechas <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable2_ts))

# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia_var2 <- ggplot() +
  geom_line(aes(x = fechas, y = variable2_vec, color = "Serie Original"), size = 0.7, linetype = "solid") +
  geom_line(aes(x = fechas, y = tendencia_var2, color = "Tendencia"), size = 0.8, linetype = "solid") +
  scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
  ggtitle("Variable 2: PICAFE - Serie Original vs Tendencia") +
  xlab("Tiempo") +
  ylab("Unidad de medida Variable 2") +
  theme_minimal() +
   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X

# Convertir a gráfico interactivo con plotly
ggplotly(grafico_tendencia_var2)

Interpretación

Generalmente se muestra una tendencia positiva hasta 2022, posteriormente una caída y luego continúa con una posible recuperación.

Tendencia Variable 3

library(ggplot2)
library(plotly)

# Convertir la serie a un vector numérico
variable3_vec <- as.numeric(variable3_ts)
tendencia_var3 <- as.numeric(stl_decomp_var3$time.series[, "trend"])

# Asegurar que 'fechas' tenga la misma longitud
fechas <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable3_ts))

# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia_var3 <- ggplot() +
  geom_line(aes(x = fechas, y = variable3_vec, color = "Serie Original"), size = 0.7, linetype = "solid") +
  geom_line(aes(x = fechas, y = tendencia_var3, color = "Tendencia"), size = 0.8, linetype = "solid") +
  scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
  ggtitle("Variable 3: PECAFE - Serie Original vs Tendencia") +
  xlab("Tiempo") +
  ylab("Unidad de medida Variable 3") +
  theme_minimal() +
   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X

# Convertir a gráfico interactivo con plotly
ggplotly(grafico_tendencia_var3)

Interpretación

La tendencia nos muestra la evolución real: una caída marcada en 2020–2021 y una recuperación sostenida hacia 2025. Esto confirma que el sector cafetero mantiene su potencial como motor de divisas y estabilidad económica para Colombia.

Tendencia Variable 4

library(ggplot2)
library(plotly)

# Convertir la serie a un vector numérico
variable4_vec <- as.numeric(variable4_ts)
tendencia_var4 <- as.numeric(stl_decomp_var4$time.series[, "trend"])

# Asegurar que 'fechas' tenga la misma longitud
fechas <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable4_ts))

# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia_var4 <- ggplot() +
  geom_line(aes(x = fechas, y = variable4_vec, color = "Serie Original"), size = 0.7, linetype = "solid") +
  geom_line(aes(x = fechas, y = tendencia_var4, color = "Tendencia"), size = 0.8, linetype = "solid") +
  scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
  ggtitle("Variable 4: XCAF - Serie Original vs Tendencia") +
  xlab("Tiempo") +
  ylab("Unidad de medida Variable 4") +
  theme_minimal() +
   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X

# Convertir a gráfico interactivo con plotly
ggplotly(grafico_tendencia_var4)

Interpretación

La tendencia revela que, tras una caída intermedia, el sector exportador inicia una recuperación sostenida desde 2020 y proyecta crecimiento hacia 2025. Esto confirma que, pese a la volatilidad, el café colombiano mantiene resiliencia y dinamismo estructural en el mediano plazo.

Tendencia Variable 5

library(ggplot2)
library(plotly)

# Convertir la serie a un vector numérico
variable5_vec <- as.numeric(variable5_ts)
tendencia_var5 <- as.numeric(stl_decomp_var5$time.series[, "trend"])

# Asegurar que 'fechas' tenga la misma longitud
fechas <- seq.Date(from = as.Date("2012-01-01"), by = "month", length.out = length(variable5_ts))

# Gráfico interactivo de la serie original vs tendencia
grafico_tendencia_var5 <- ggplot() +
  geom_line(aes(x = fechas, y = variable5_vec, color = "Serie Original"), size = 0.7, linetype = "solid") +
  geom_line(aes(x = fechas, y = tendencia_var5, color = "Tendencia"), size = 0.8, linetype = "solid") +
  scale_color_manual(values = c("Serie Original" = "grey", "Tendencia" = "black")) +
  ggtitle("Variable 5: ICC - Serie Original vs Tendencia") +
  xlab("Tiempo") +
  ylab("Unidad de medida Variable 5") +
  theme_minimal() +
   scale_x_date(date_breaks = "1 year", date_labels = "%Y") +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) # Rotar etiquetas del eje X

# Convertir a gráfico interactivo con plotly
ggplotly(grafico_tendencia_var5)

Interpretación

La tendencia suaviza esas variaciones y evidencia una recuperación gradual desde 2022, proyectando un aumento sostenido hacia 2025. Esto confirma que, pese a la volatilidad, la confianza del consumidor colombiano se está recuperando de manera estructural.

TASA DE CRECIMIENTO DE LA SERIE ORIGINAL VS TENDENCIA:

Tasa de crecimiento de la serie de tendencia y original para la variable 1

#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento_var1 <- (variable1_ts[(13:length(variable1_ts))] / variable1_ts[1:(length(variable1_ts) - 12)] - 1) * 100
tasa_tendencia_var1 <- (tendencia_var1[(13:length(tendencia_var1))] / tendencia_var1[1:(length(tendencia_var1) - 12)] - 1) * 100

# Crear vector de fechas corregido, es decir que inicie desde enero 2013
fechas_corregidas_var1 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var1))

# Verificar longitudes
print(length(fechas_corregidas_var1))
## [1] 144
print(length(tasa_crecimiento_var1))
## [1] 144
print(length(tasa_tendencia_var1))
## [1] 144

Gráfico variable original y tendencia variable 1: tasa de crecimiento anual

library(ggplot2)
library(plotly)

# Gráfico de la tasa de crecimiento anual variable 1
grafico_crecimiento_var1 <- ggplot() +
  geom_line(aes(x = fechas_corregidas_var1, y = tasa_crecimiento_var1), color = "grey", size = 0.7) +
  geom_line(aes(x = fechas_corregidas_var1, y = tasa_tendencia_var1), color = "black", size = 0.8, linetype = "dashed") +
  ggtitle("Variable1: PNCAFE - Tasa de crecimiento anual % de la serie Original y la tendencia") +
  xlab("Tiempo") +
  ylab("% de Crecimiento Anual") +
  theme_minimal() +
  scale_x_date(date_breaks = "1 year", date_labels = "%Y") 

# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento_var1)

Análisis:

Hallazgos: Tras una caída hacia 2021, en 2022 la tendencia se logra estabilizar. En 2023 la tendencia del crecimiento se vuelve positiva. La serie y la tendencia tienen convergencia hacia el final del periodo.

Pronóstico: Si la tendencia continúa, la producción de café podría seguir creciendo en los próximos años.

Sugerencia:Juan Valdez podría aprovechar la recuperación del sector para fortalacer su presencia en mercados internacionales. Incorporar estartegias de sostenibilidad y adaptación climática.

Otros sectores: El crecimiento de la PNCAFE contibuye a disminuir la tasa de desempleo.

Ahora calculamos la tasa de crecimiento de la serie original vs tendencia: variable 2

#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento_var2 <- (variable2_ts[(13:length(variable2_ts))] / variable2_ts[1:(length(variable2_ts) - 12)] - 1) * 100
tasa_tendencia_var2 <- (tendencia_var2[(13:length(tendencia_var2))] / tendencia_var2[1:(length(tendencia_var2) - 12)] - 1) * 100

# Crear vector de fechas corregido
fechas_corregidas_var2 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var2))

# Verificar longitudes
print(length(fechas_corregidas_var2))
## [1] 144
print(length(tasa_crecimiento_var2))
## [1] 144
print(length(tasa_tendencia_var2))
## [1] 144

Gráfico variable original y tendencia variable 2: tasa de crecimiento anual

# Gráfico de la tasa de crecimiento anual variable 2
grafico_crecimiento_var2 <- ggplot() +
  geom_line(aes(x = fechas_corregidas_var2, y = tasa_crecimiento_var2), color = "grey", size = 0.7) +
  geom_line(aes(x = fechas_corregidas_var2, y = tasa_tendencia_var2), color = "black", size = 0.8, linetype = "dashed") +
  ggtitle("Variable2: PICAFE - Tasa de crecimiento anual % de la serie Original y la Tendencia") +
  xlab("Tiempo") +
  ylab("% de Crecimiento Anual") +
  theme_minimal() +
  scale_x_date(date_breaks = "1 year", date_labels = "%Y") 

# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento_var2)

Análisis:

Hallazgos:El PICAFE presenta alta volatilidad, con picos importantes en 2015, 2022 y 2025. El fuerte crecimiento en 2021-2022. La serie y la tendencia tienen convergencia hacia el final del periodo.

Pronóstico: El precio interno del café podría mantenerse en niveles relativamente altos, aunque seguirá mostrando fluctuaciones según la oferta mundial y condiciones climáticas.

Sugerencia: Juan Valdez podría aprovechar los periodos de precios altos para fortalecer sus contratos nacionales e internacionales.

Otros sectores: Industria de alimentos y bebidas, especialmente empresas que utilizan café como insumo.

Ahora calculamos la tasa de crecimiento de la serie original vs tendencia: variable 3

#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento_var3 <- (variable3_ts[(13:length(variable3_ts))] / variable3_ts[1:(length(variable3_ts) - 12)] - 1) * 100
tasa_tendencia_var3 <- (tendencia_var3[(13:length(tendencia_var3))] / tendencia_var3[1:(length(tendencia_var3) - 12)] - 1) * 100

# Crear vector de fechas corregido
fechas_corregidas_var3 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var3))

# Verificar longitudes
print(length(fechas_corregidas_var3))
## [1] 144
print(length(tasa_crecimiento_var3))
## [1] 144
print(length(tasa_tendencia_var3))
## [1] 144

Gráfico variable original y tendencia variable 3: tasa de crecimiento anual

# Gráfico de la tasa de crecimiento anual variable 3
grafico_crecimiento_var3 <- ggplot() +
  geom_line(aes(x = fechas_corregidas_var3, y = tasa_crecimiento_var3), color = "grey", size = 0.7) +
  geom_line(aes(x = fechas_corregidas_var3, y = tasa_tendencia_var3), color = "black", size = 0.8, linetype = "dashed") +
  ggtitle("Variable3: PECAFE - Tasa de crecimiento anual % de la serie Original y la tendencia") +
  xlab("Tiempo") +
  ylab("% de Crecimiento Anual") +
    theme_minimal() +
  scale_x_date(date_breaks = "1 year", date_labels = "%Y") 

# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento_var3)

Análisis:

Hallazgos:

• Crecimiento positivo en 2013–2015, reflejando un buen momento para el mercado cafetero.

• Entre 2016–2018 hay un descenso prolongado, asociado a la caída de precios internacionales y exceso de oferta.

• En 2021 aparece una recuperación parcial, impulsada por choques externos como las heladas en Brasil que redujeron la oferta global.

• En 2023 se registra una nueva caída, reflejo de la volatilidad del mercado y ajustes en la demanda.

• Hacia 2025 se proyecta un crecimiento sostenido, lo que indica que el precio externo del café colombiano tiende a recuperarse estructuralmente en el mediano plazo.

Pronóstico:Si la tendencia continúa, el precio externo del café colombiano podría mantener un crecimiento positivo hacia 2025.

Sugerencia: Juan Valdez deberían fortalecer contratos internacionales en mercados estratégicos. Diversificar productos premium, Incorporar estrategias de sostenibilidad y adaptación climática, para reducir la vulnerabilidad frente a choques externos.

Otros sectores:La recuperación del precio externo del café puede impulsar las exportaciones y contribuir a la estabilidad del empleo rural, reforzando el papel del sector cafetero como motor económico y social en Colombia.

Ahora calculamos la tasa de crecimiento de la serie original vs tendencia: variable 4

#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento_var4 <- (variable4_ts[(13:length(variable4_ts))] / variable4_ts[1:(length(variable4_ts) - 12)] - 1) * 100
tasa_tendencia_var4 <- (tendencia_var4[(13:length(tendencia_var4))] / tendencia_var4[1:(length(tendencia_var4) - 12)] - 1) * 100

# Crear vector de fechas corregido
fechas_corregidas_var4 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var4))

# Verificar longitudes
print(length(fechas_corregidas_var4))
## [1] 144
print(length(tasa_crecimiento_var4))
## [1] 144
print(length(tasa_tendencia_var4))
## [1] 144

Gráfico variable original y tendencia variable 4: tasa de crecimiento anual

# Gráfico de la tasa de crecimiento anual variable 4
grafico_crecimiento_var4 <- ggplot() +
  geom_line(aes(x = fechas_corregidas_var4, y = tasa_crecimiento_var4), color = "grey", size = 0.7) +
  geom_line(aes(x = fechas_corregidas_var4, y = tasa_tendencia_var4), color = "black", size = 0.8, linetype = "dashed") +
  ggtitle("Variable4: XCAF - Tasa de crecimiento anual % de la serie Original y la tendencia") +
  xlab("Tiempo") +
  ylab("% de Crecimiento Anual") +
    theme_minimal() +
  scale_x_date(date_breaks = "1 year", date_labels = "%Y") 

# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento_var4)

Análisis:

Hallazgos:

• Crecimiento positivo en los primeros años (2013–2017), reflejando dinamismo en el sector exportador.

• Entre 2018–2021 hay una caída prolongada, marcada por la pandemia y el paro nacional, que afectaron la producción y la logística.

• En 2022 se registra un crecimiento fuerte, impulsado por la recuperación de la demanda internacional y mejores precios.

• En 2023 aparece una caída nuevamente (efecto rebote), mostrando la fragilidad del sector frente a choques externos.

• Finalmente, hacia 2025 se proyecta una recuperación sostenida, lo que indica que el sector exportador está retomando dinamismo estructural.

Pronóstico:Si la tendencia continúa, las exportaciones de café colombiano podrían mantener un crecimiento positivo hacia 2025, porque la tendencia está converge al comportamiento de la serie original.

Sugerencia:Diversificar destinos de exportación, reduciendo la dependencia de pocos compradores.

Otros sectores:Contribuye a generar divisas para Colombia, fortaleciendo la balanza comercial. Impulsar el consumo interno, ya que la confianza en el sector cafetero se traduce en mayor inversión y estabilidad.

Ahora calculamos la tasa de crecimiento de la serie original vs tendencia: variable 5

#Cálculo de la tasa de crecimiento anual correctamente alineada
tasa_crecimiento_var5 <- (variable5_ts[(13:length(variable5_ts))] / variable5_ts[1:(length(variable5_ts) - 12)] - 1) * 100
tasa_tendencia_var5 <- (tendencia_var5[(13:length(tendencia_var5))] / tendencia_var5[1:(length(tendencia_var5) - 12)] - 1) * 100

# Crear vector de fechas corregido
fechas_corregidas_var5 <- seq(from = as.Date("2013-01-01"), by = "month", length.out = length(tasa_crecimiento_var5))

# Verificar longitudes
print(length(fechas_corregidas_var5))
## [1] 144
print(length(tasa_crecimiento_var5))
## [1] 144
print(length(tasa_tendencia_var5))
## [1] 144

*Gráfico variable original y tendencia variable 5: tasa de crecimiento anual**

# Gráfico de la tasa de crecimiento anual variable 5
grafico_crecimiento_var5 <- ggplot() +
  geom_line(aes(x = fechas_corregidas_var5, y = tasa_crecimiento_var5), color = "grey", size = 0.7) +
  geom_line(aes(x = fechas_corregidas_var5, y = tasa_tendencia_var5), color = "black", size = 0.8, linetype = "dashed") +
  ggtitle("Variable5: ICC - Tasa de crecimiento anual % de la serie Original y la tendencia") +
  xlab("Tiempo") +
  ylab("% de Crecimiento Anual") +
    theme_minimal() +
  scale_x_date(date_breaks = "1 year", date_labels = "%Y") 

# Convertir a gráfico interactivo
ggplotly(grafico_crecimiento_var5)

Análisis:

Hallazgos:

• La serie original muestra muy pocas fluctuaciones, con picos positivos en algunos años y caídas negativas en otros.

• Se observa una caída extrema en 2019–2020, reflejo de la pandemia y choques extraordinarios que desplomaron la confianza de los hogares.

• A partir de 2021–2022, la tendencia se mantiene en niveles bajos, pero comienza una recuperación gradual desde 2023.

• Esto indica la confianza del consumidor colombiano está en proceso de recuperación estructural.

Pronóstico:Si la tendencia continúa, converge a la serie original que está manteniendo un comportamiento constante hacia el 2025, la confianza de los hogares colombianos se continuaría manteniendo estable.

Sugerencia: Impulsar campañas de consumo interno, aprovechando el mayor optimismo de los hogares. Fortalecer la inversión en puntos de venta y experiencias de marca, ya que la recuperación de la confianza favorece el gasto en productos premium. Alinear estrategias de marketing con la percepción positiva de los consumidores, reforzando la identidad del café colombiano.

Otros sectores: Mayor dinamismo en el comercio minorista y servicios, impulsando la economía interna. Estabilidad en la inversión privada, ya que el optimismo de los hogares se traduce en mayor demanda.

RECOMENDACIONES ESTRATÉGICAS

Las empresas del sector cafetero, como Juan Valdez, deberían aprovechar la recuperación del sector para fortalecer su presencia en mercados internacionales, consolidando contratos de largo plazo y diversificando destinos de exportación.

Al mismo tiempo, es clave incorporar estrategias de sostenibilidad y adaptación climática, que reduzcan la vulnerabilidad frente a choques externos y refuercen la identidad del café colombiano como producto premium responsable. Estas decisiones se conectan con otros sectores porque dinamizan el comercio minorista mediante mayor consumo interno, fortalecen la logística y transporte con el aumento exportador, generan empleo rural y estimulan la inversión privada, creando un círculo virtuoso que integra producción, exportación y consumo en beneficio de la economía nacional.