Precio pagado al productor con bonificación y volumen de leche cruda en el departamento del Cesar

Descripción de los datos

Se analizan datos del departamento del Cesar, en Colombia, con datos mensuales sobre la leche cruda que se le paga a los productores con una bonificación. Los datos cubren desde enero de 2007 hasta mayo del 2025.

Cada registro en el archivo es un mes y tiene el nombre del departamento, la fecha, el precio promedio por litro de leche en pesos colombianos, cuánto cambió ese precio comparado con el mes anterior, cuántos litros se vendieron y cómo cambió ese volumen comparado con el mes anterior. Con esto, se logra ver cómo cambian los precios y cómo va la producción de leche en el Cesar.

Al principio, en enero de 2007, la leche costaba alrededor de 672 pesos por litro. Los precios varian muy poco de mes a mes, casi siempre como un ±2 %, lo que indica que los precios se mantienen más o menos estables. Pero la cantidad de leche producida cambia mucho. Hay meses donde se producen más de 18 millones de litros y otros donde no llegan ni a 7 millones. Los cambios en la cantidad de leche vendida a veces son muy grandes, incluso más del 100 %. Esto quiere decir que la producción es muy variable y que podría depender de la época del año o del clima.

Cabe aclarar que las variables propuestas a analizar son el precio y volumen de litros a lo largo de los meses desde el 2007 hasta el 2025 en el Cesar.

En resumen, los datos dejan ver cómo ha cambiado el mercado de la leche en el Cesar a lo largo de los años, analizar cómo van los precios y la producción, y ver si hay alguna relación entre estas dos cosas, lo que podría reflejar cómo funciona la oferta y la demanda en la región.

Analisis descriptivo

## # A tibble: 6 × 6
##   Departamento fecha           Precio `Variacion Precio (%)` `Volumen (Litros)`
##   <chr>        <chr>            <dbl>                  <dbl>              <dbl>
## 1 Cesar        Enero de 2007     672                   0               18248224
## 2 Cesar        Febrero de 2007   679.                  1.04             9686344
## 3 Cesar        Marzo de 2007     688.                  1.36             9447136
## 4 Cesar        Abril de 2007     676.                 -1.79             6945503
## 5 Cesar        Mayo de 2007      690.                  2.14            16050558
## 6 Cesar        Junio de 2007     686.                 -0.604           18248224
## # ℹ 1 more variable: `Variacion Volumen (%)` <dbl>

Como se puede observar, se tiene una base de datos con 210 observaciones y 6 variables.

##  Departamento          fecha               Precio       Variacion Precio (%)
##  Length:210         Length:210         Min.   : 672.0   Min.   :-7.3115     
##  Class :character   Class :character   1st Qu.: 840.6   1st Qu.:-0.9475     
##  Mode  :character   Mode  :character   Median : 968.0   Median : 0.4529     
##                                        Mean   :1148.9   Mean   : 0.5600     
##                                        3rd Qu.:1285.5   3rd Qu.: 1.7954     
##                                        Max.   :2418.5   Max.   :10.2124     
##  Volumen (Litros)   Variacion Volumen (%)
##  Min.   : 6715049   Min.   :-46.919      
##  1st Qu.:10182867   1st Qu.: -9.785      
##  Median :12644178   Median : -1.920      
##  Mean   :13383666   Mean   :  1.106      
##  3rd Qu.:16241197   3rd Qu.:  8.651      
##  Max.   :26978872   Max.   :131.093

Aquí se logra apreciar un resumen descriptivo de las variables de interés; el precio más bajo al que se ha pagado el litro de leche es de 672 pesos por litro, siendo esa cifra la correspondiente al primer mes del año 2007, además se tiene una mediana de 968 pesos y una media de 1148 pesos por litro aproximadamente, también se aprecia un valor máximo de 2418 pesos por litro como pago a los productores.

Ahora, correspondiendo a la producción de leche, se tiene una mayor variabilidad de los datos, con una media y mediana distantes alrededor de 70000 litros.

Precio de leche cruda pagada al productor con bonificación en el Cesar

## Varianza: 199112.9
## Desviación estándar: 446.22
## Coeficiente de variación: 38.84 %

El precio de la leche tiene una desviación estándar de 446.22 COP, lo que quiere decir que, en general, los precios individuales varían de la media en unos $446 COP. Esta es una variabilidad entre moderada y alta si pensamos que el precio promedio (que está entre 1000 y 1200 COP) no es muy alto. El coeficiente de variación, que es del 38.84 %, confirma esto,lo que significa que el precio de la leche ha subido y bajado bastante durante el tiempo analizado.

Los datos muestran que muchos precios están en los niveles más bajos. Esto podría significar que el mercado suele tener precios estables cerca de un promedio, aunque a veces hay precios altos, tal vez por eventos especiales o productos caros.

precio<- primeraparte$Precio
# Asegurar que 'precio' sea numérico y sin NA
precio <- as.numeric(precio)
precio <- precio[!is.na(precio) & precio > 0]

# Ajustar distribuciones
ajuste_norm <- fitdist(precio, "norm")
ajuste_lognorm <- fitdist(precio, "lnorm")
ajuste_gamma <- fitdist(precio, "gamma")

# Crear tabla comparativa de AIC y BIC
comparacion <- data.frame(
  Distribucion = c("Normal", "Log-normal", "Gamma"),
  AIC = c(ajuste_norm$aic, ajuste_lognorm$aic, ajuste_gamma$aic),
  BIC = c(
    AIC(ajuste_norm, k = log(length(precio))),
    AIC(ajuste_lognorm, k = log(length(precio))),
    AIC(ajuste_gamma, k = log(length(precio)))
  )
)

# Mostrar tabla ordenada por AIC
comparacion <- comparacion[order(comparacion$AIC), ]
print(comparacion)
##   Distribucion      AIC      BIC
## 2   Log-normal 3084.709 3091.403
## 3        Gamma 3104.932 3111.626
## 1       Normal 3161.294 3167.988

La distribución Log-normal es la que mejor se ajusta al precio de la leche cruda en el Cesar. Este resultado es coherente con el comportamiento del mercado, donde factores como calidad, transporte o intermediación generan una dispersión leve pero asimétrica en los precios.

# --- COMPARACIÓN DE DENSIDAD Y CDF PARA PRECIO ---
par(mfrow = c(1,2))

# Comparación de curvas de densidad
denscomp(
  list(ajuste_lognorm, ajuste_gamma, ajuste_norm),
  legendtext = c("Log-normal", "Gamma", "Normal"),
  main = "Comparación de Densidad - Precio",
  xlab = "Precio (COP)",
  ylab = "Densidad"
)

# Comparación de curvas de distribución acumulada (CDF)
cdfcomp(
  list(ajuste_lognorm, ajuste_gamma, ajuste_norm),
  legendtext = c("Log-normal", "Gamma", "Normal"),
  main = "Comparación de CDF - Precio",
  xlab = "Precio (COP)",
  ylab = "Probabilidad acumulada"
)

Los precios tienden a amontonarse en el extremo inferior, con solo unos pocos precios muy altos. La distribución normal no refleja bien esto porque es demasiado centrada y simétrica, las distribuciones log-normal y gamma se adaptan mejor a esta tendencia.

De estas dos, la log-normal (línea roja) se parece más al histograma, sobre todo al principio y en el punto máximo.

Según la comparación de las densidades de las distribuciones candidatas con la distribución de los datos, la distribución log-normal describe mejor cómo se distribuyen los precios, lo cual concuerda con los criterios AIC/BIC.

Los puntos negros muestran cómo se distribuyen realmente los datos (CDF observada), las líneas representan las CDF teóricas ajustadas.

La línea roja log-normal) es la que más se parece a los puntos negros en casi todo el gráfico, la línea azul (normal) no coincide bien con los puntos negros en los extremos; es decir, no predice bien los valores muy bajos o muy altos y la línea verde (gamma) es más o menos correcta, pero no tan buena como la verde.

El gráfico muestra que muchos de los precios están cerca de los 1000 pesos colombianos (COP), algo que se ve en la mediana (la línea dentro de la caja). El rango intercuartílico (la altura de la caja) es relativamente estrecha, indicando que la mayor parte de los precios presentan poca variabilidad dentro de ese rango central, sin embargo, hay algunos precios muy altos a la derecha (outliers).

En general, el precio de la leche cruda en el Cesar ha subido bastante, de menos de 800 pesos por litro en 2007 a más de 2000 pesos en 2024.

Esto quiere decir que la leche ha ido valiendo más con el tiempo, tal vez por lo que cuesta producirla, llevarla de un lado a otro, la inflación y las decisiones que toma el gobierno sobre el campo de producción.

ggplot(primeraparte, aes(x = Precio, y = Mes)) +
  geom_boxplot(fill = "lightblue", color = "darkblue", alpha = 0.6) +
  labs(
    title = "Distribución del Precio por mes",
    x = "Precio (COP por litro)",
    y = "Mes"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    panel.grid.minor = element_blank()
  )

En todos los meses, los precios presentan una distribución bastante similar, con medianas que rondan entre 900 y 1200 COP/litro. Sin embargo, se observan valores atípicos (puntos azules) que alcanzan hasta 2400 COP/litro, indicando meses con precios excepcionalmente altos. Los precios varían más o menos igual, aunque en algunos meses (como abril, mayo y junio) variaron un poco más.

Abril, mayo y junio suelen tener valores medios un poco más altos, lo que indica que las cosas podrían subir en el primer semestre del año. Esto podría estar asociado con mayor demanda o menor oferta en ese periodo (por ejemplo, condiciones climáticas o de producción).

Agosto, septiembre y octubre tienen cajas más pequeñas, lo que quiere decir que los precios se mantienen más estables. En esos meses, los precios tienden a concentrarse más alrededor de su mediana.

En casi todos los meses hay outliers hacia arriba, lo que sugiere picos de precio en ciertos momentos. Esto podría reflejar eventos puntuales (escasez, costos de transporte, variaciones de mercado internacional, etc.).

Entre 2007 y 2015, los precios se mantienen relativamente estables con ligeras fluctuaciones, evidenciando una tendencia creciente moderada.

Desde 2016, los precios empiezan a subir más rápido, con momentos de subidas grandes que indican que los precios subieron por un tiempo, quizás asociados a costos de insumos, variaciones climáticas o ajustes en políticas de compra.

Entre 2020 y 2023, los precios se dispararon, llegando a su punto más alto alrededor de 2023, casi a 2,400 COP. Esto podría tener que ver con la inflación, los costos de transporte o problemas para producir. Después, los precios bajaron bastante, lo que hace pensar que el mercado se está acomodando o que hay más productos disponibles.

En 2024–2025, los precios vuelven a subir, lo que podría indicar que están empezando a crecer otra vez o que se van a quedar en un nivel más alto.

La evolución del precio refleja una tendencia general creciente a largo plazo, aunque con fases cíclicas y alta volatilidad en los últimos años.

Volumen de litros de leche cruda comercializada en el Cesar

## Varianza: 1.547348e+13
## Desviación estándar: 3933635
## Coeficiente de variación: 29.39 %

El comportamiento del volumen de la leche producida en el Cesar refleja una tendencia creciente pero con alta volatilidad. Esta variación del 29.39 % quiere decir que la producción no es estable.

El volumen se inclina hacia la derecha, con la mayoría estando entre 8 y 15 millones de litros, pero con algunos picos altos. Esto quiere decir que hay algunos datos atípicos que hacen que la muestra varíe más.

##   Distribución      AIC      BIC
## 1   Log-normal 1153.846 1164.540
## 2        Gamma 1155.752 1166.446
## 3      Weibull 1178.497 1189.191

La distribución log-normal tiene los valores más bajos de AIC y BIC, así que parece la mejor opción para entender el volumen de producción.

La distribución gamma también se ajusta bastante bien, casi como la log-normal, lo que quiere decir que ambas sirven para describir cómo cambia el volumen.

La distribución de Weibull, aunque útil para ver cuánto duran las cosas o cuándo fallan, no es tan buena para estos datos comparada con las otras dos.

# --- COMPARACIÓN DE DENSIDAD Y CDF PARA VOLUMEN ---
par(mfrow = c(1,2))

# Comparación de curvas de densidad
denscomp(
  list(ajuste_lognorm, ajuste_gamma, ajuste_weibull),
  legendtext = c("Log-normal", "Gamma", "Weibull"),
  main = "Comparación de Densidad - Volumen",
  xlab = "Volumen (Millones de litros)",
  ylab = "Densidad",
)

# Comparación de curvas de distribución acumulada (CDF)
cdfcomp(
  list(ajuste_lognorm, ajuste_gamma, ajuste_weibull),
  legendtext = c("Log-normal", "Gamma", "Weibull"),
  main = "Comparación de CDF - Volumen",
  xlab = "Volumen (Millones de litros)",
  ylab = "Probabilidad acumulada",
)

Visualmente, la Log-normal es la que mejor sigue la forma del histograma:

Captura bien la asimetría positiva (cola hacia la derecha).

Reproduce con mayor precisión el pico principal (moda) cerca de los 12–14 millones de litros.

Mantiene una forma más natural en la cola derecha, donde las observaciones son menos frecuentes pero significativas.

La Gamma también tiene un buen ajuste, aunque su cola decae más ráoido.

La Weibull se desvía un poco más, sobre todo en la parte inicial y en la cola.

En el gráfico de CDF la log-normal (roja) se pega más a la curva de probabilidad acumulada real (los puntos negros), la gamma se mantiene cerca, pero con pequeñas diferencias en los extremos (en los valores más bajos y más altos) y la Weibull tiene una diferencia más notable en los valores bajos (no refleja bien la probabilidad acumulada al inicio).

En resumen, tanto la forma de la curva como el CDF confirman que la log-normal es la que mejor se ajusta a los datos, tanto visual como estadísticamente.

El boxplot muestra que en el Cesar, el volumen de leche producida suele estar entre 10 y 16 millones de litros, aunque con picos que superan los 25 millones, estos picos son datos atípicos.

Estos aumentos podrían deberse a temporadas de mucha producción, buen clima o buenos incentivos para vender.

A lo largo del periodo analizado se observa una disminución progresiva en el volumen total de leche comercializada.

En los primeros años (2007–2012), los volúmenes medianos se situaban alrededor de 15 a 20 millones de litros, con una alta dispersión.

Desde 2015 en adelante, se aprecia una tendencia a la baja, con medianas entre 10 y 13 millones de litros, lo que indica una reducción sostenida en la producción o comercialización del producto.

Desde 2020, las ventas se han mantenido más estables, aunque en cantidades menores.

En 2007 y alrededor de 2019, hubo algunos años en los que se vendió mucha más leche de lo normal.

Esto podría ser porque hubo momentos puntuales de mucha producción, quizás por buen tiempo o por ayudas para producir más leche.

# Gráfico boxplot horizontal
ggplot(primeraparte, aes(x = `Volumen (Litros)`, y = Mes)) +
  geom_boxplot(fill = "lightgreen", color = "darkgreen", alpha = 0.6) +
  scale_x_continuous(labels = function(x) x / 1e6) +
  labs(
    title = "Distribución del Volumen por mes",
    x = "Volumen (millones de L)",
    y = "Mes"
  ) +
  theme_minimal(base_size = 13) +
  theme(
    plot.title = element_text(hjust = 0.5, face = "bold"),
    panel.grid.minor = element_blank()
  )

El patrón de las cajas (medias, medianas y rangos) no es uniforme a lo largo del año. Los volúmenes son consistentemente más altos en ciertos meses y más bajos en otros, lo que sugiere la estacionalidad en la producción. Agosto, Septiembre, Octubre, Noviembre, Julio y Junio normalmente tienen las cajas a la derecha (con los valores más altos), y las medianas siempre están por encima de los 15 millones de litros. Esto indica que la segunda mitad del año, sobre todo de Junio a Noviembre, es cuando más se produce. Marzo, abril, enero y febrero son los meses con los valores más bajos, tienen las cajas más a la izquierda y promedian entre 10 y 13 millones de litros. Esto muestra que el inicio y la segunda parte del año son cuando menos se produce.Por último, el largo de las cajas (el rango entre el primer y tercer cuartil) cambia. Por ejemplo, marzo tiene una caja muy estrecha, lo que quiere decir que el volumen se mantuvo bastante estable y bajo durante los años. En cambio, junio y septiembre tienen rangos más grandes, lo que indica que varían más de un año a otro.

Entre 2007 y 2025, la cantidad de leche cruda comercializada en el Cesar ha cambiado bastante, con subidas y bajadas. Aunque ha variado, en general se ha visto que la cantidad ha ido bajando estos últimos años. Los cambios según la época del año nos podrían decir que la producción depende mucho del clima y de cómo se manejan los puntos de producción. Los momentos en que se produce más leche podrían estar relacionados con abundancia de ganado o con la existencia de ayudas al sector.

Correlación entre variables

## [1] -0.5565864

Esto sugiere que hay una relación moderada negativa entre cuánta leche se produce y su precio.

Si se produce más leche (hay más oferta), el precio normalmente baja.

Por el contrario, si se produce menos, el precio tiende a subir.

Descomposición STL

El método STL (Seasonal-Trend decomposition based on Loess) se utilizó en este análisis debido a su capacidad para descomponer una serie temporal en sus componentes de tendencia, estacionalidad y variación aleatoria, permitiendo una interpretación más clara del comportamiento subyacente de las variables de precio y volumen de leche.

A diferencia de los métodos clásicos de descomposición, el STL ofrece una estructura flexible y robusta, ya que permite que la estacionalidad cambie con el tiempo y maneja eficazmente la presencia de valores atípicos mediante técnicas de suavizamiento local (LOESS).

Cleveland et al. (1990) mencionan que este método da una forma fuerte y flexible de separar una serie temporal en tendencia, estacionalidad y residuo, permitiendo que la estacionalidad cambie con el tiempo y controlando bien los valores raros mediante regresión local ponderada (p. 1).

# Crear series temporales mensuales
ts_precio <- ts(primeraparte$Precio, start = c(year(min(primeraparte$Fecha)), month(min(primeraparte$Fecha))), frequency = 12)
ts_volumen <- ts(primeraparte$`Volumen (Litros)`, start = c(year(min(primeraparte$Fecha)), month(min(primeraparte$Fecha))), frequency = 12)

# Descomposición STL del Precio
plot(stl(ts_precio, s.window = "periodic"))
title(main = "Descomposición STL del Precio", outer = TRUE, line = -1)

# Descomposición STL del Volumen
plot(stl(ts_volumen, s.window = "periodic"))
title(main = "Descomposición STL del Volumen", outer = TRUE, line = -1)

Por lo que se logra apreciar en la descomposición del precio, la serie no es completamente estacionaria. La estacionalidad muestra un patrón anual claramente recurrente, lo cual indica que el precio de la leche sigue un comportamiento cíclico dentro de cada año. La tendencia revela una etapa de estabilidad hasta 2017, posteriormente se aprecia un crecimiento entre 2018 y 2022, pero últimamente ha bajado un poco.

Con respecto al volumen de leche, a lo largo de la serie, se ven cambios notorios, con subidas importantes antes de 2010 y, luego, se moderó un poco en los años recientes. Muestra un patrón estacional claro que se repite año tras año, como un ciclo. Se ve que al principio, aproximadamente hasta 2010, la tendencia subió, pero después empezó a bajar y se mantuvo estable a partir de 2015.

Prueba de estacionariedad

El contraste KPSS

Kwiatkowski et al. (1992) proponen el test KPSS con el fin de evaluar la hipótesis de estacionariedad de una serie temporal. Este enfoque considera que una serie \(y_t\) puede expresarse como la suma de un componente de tendencia estocástica y un componente estacionario, de acuerdo con el siguiente modelo:

\[ y_t = \mu_t + \varepsilon_t \] \[ \mu_t = \mu_{t-1} + u_t \]

En este modelo, los errores \(\varepsilon_t\) y \(u_t\) son procesos independientes e idénticamente distribuidos con media cero y varianzas \(\sigma^2_\varepsilon\) y \(\sigma^2_u\), respectivamente. Además, \(\mu_0\) representa una constante inicial desconocida.

El contraste se formula como:

\[ H_0: \sigma^2_u = 0 \quad \text{(la serie es estacionaria)} \] \[ H_1: \sigma^2_u > 0 \quad \text{(la serie presenta una raíz unitaria)} \]

Bajo la hipótesis nula, el proceso es estacionario, ya que no existe un componente de tendencia estocástica. En cambio, si se rechaza \(H_0\), se concluye que la serie presenta no estacionariedad debida a la presencia de una raíz unitaria. Este test es especialmente útil por su consistencia frente a distintos tipos de procesos no estacionarios, incluyendo los integrados fraccionalmente.

Según López (2002), este tipo de contrastes resulta particularmente relevante en contextos donde las series pueden experimentar cambios estructurales en la media, lo que podría afectar la validez de las pruebas tradicionales de estacionariedad.

kpss.test(ts_precio)
## 
##  KPSS Test for Level Stationarity
## 
## data:  ts_precio
## KPSS Level = 3.4363, Truncation lag parameter = 4, p-value = 0.01

Un valor p de 0.01 sugiere que podemos descartar la idea de que la serie es estacionaria (H₀).

Esto quiere decir que la serie temporal del precio no es estacionaria tal cual, y se requiere diferenciarla antes de construir un modelo a partir de ella.

diff_precio <- diff(ts_precio)
kpss.test(diff_precio)
## 
##  KPSS Test for Level Stationarity
## 
## data:  diff_precio
## KPSS Level = 0.12521, Truncation lag parameter = 4, p-value = 0.1

Como se puede ver a partir de una diferenciación la serie es estacionaria. Esto confirma que la diferenciación eliminó la tendencia o raíz unitaria que tenía la serie original.

kpss.test(ts_volumen)
## 
##  KPSS Test for Level Stationarity
## 
## data:  ts_volumen
## KPSS Level = 2.3644, Truncation lag parameter = 4, p-value = 0.01

Se logra apreciar que la serie de volumen presenta un p-valor de 0.01 lo que indica que se rechaza la hipotesis nula de que la serie es estacionaria. Entonces se procede a hacer una diferencia de la serie.

diff_volumen <- diff(ts_volumen)
kpss.test(diff_volumen)
## 
##  KPSS Test for Level Stationarity
## 
## data:  diff_volumen
## KPSS Level = 0.0095464, Truncation lag parameter = 4, p-value = 0.1

Ya la serie diferencia cuenta con un p-valor de 0.1 > 0.05, entonces no se rechaza la hipotesis nula que propone que la serie es estacionaria.

ndiffs(ts_precio)
## [1] 1
ndiffs(ts_volumen)
## [1] 1

Por último, según la prueba estadística ndiffs(), ambas series necesitan una diferenciación no estacional (d=1) para que un posible modelo ARIMA funcione bien, lo que concuerda con la prueba kpss aplicada a las series del estudio.

ACF Y ACFP

Ahora se procede a graficar los correlogramas de las series presentadas.

# Configurar dos gráficos lado a lado
par(mfrow = c(1, 2))

Acf(ts_precio,10)
Pacf(ts_precio, 10)

Tomando de referencia el correlograma ACF vemos que el gráfico tiene un comportamiento en el que decae de manera lenta, mientras que en el PAFC se ve un corte a partir del desfase 1, después de que la serie se vuelve estacionaria al diferenciarla, se puede probar con un proceso AR(1) si la PACF conserva su forma. Pero aquí, la PACF confirma que la serie original no es estacionaria.

par(mfrow = c(1, 2))

Acf(ts_volumen,10)
Pacf(ts_volumen, 10)

Para la serie de volumen en el correlograma ACF, se aprecia un decaimiento rápido con picos en 1, 3 y 10, así mismo, se ve una misma decaída en el PACF con picos más altos en 1, 3 y 10, sin embargo, a partir del desfase 1 en el PACF hay un corte, lo que podría adelantar un posible modelo AR(1).

par(mfrow = c(1, 2))

Acf(diff_precio,10)
Pacf(diff_precio, 10)

Ya para la serie de precio diferenciada se ve en el correlograma ACF un corte abrupto a partir del lag 2 y en el FACP hay un decaimiento despues del lag 2, por lo que un posible modelo podría ser un ARIMA(2,1,2).

par(mfrow = c(1, 2))

Acf(diff_volumen,10)
Pacf(diff_volumen, 10)

La serie diferenciada de volumen es estacionaria, pero los gráficos indican una estructura compleja de ARIMA y fuertes efectos de rezagos altos (6, 8, 9), sin embargo, es complejo poder diagnosticar un posible modelo a partir de la interpretación de los correlogramas.

Ajuste de modelos ARIMA

auto_fit <- auto.arima(
  ts_precio,
  d = 1,             # ya forzamos una diferencia
  D = 0,            # sin parte estacional
  seasonal = FALSE,  # modelo ARIMA, no SARIMA
  stepwise = FALSE,  # búsqueda exhaustiva (más lenta)
  approximation = FALSE,
)

auto_fit
## Series: ts_precio 
## ARIMA(1,1,2) 
## 
## Coefficients:
##          ar1      ma1     ma2
##       0.6040  -0.4959  0.3907
## s.e.  0.0922   0.0953  0.0704
## 
## sigma^2 = 1109:  log likelihood = -1028.05
## AIC=2064.11   AICc=2064.3   BIC=2077.48

El proceso ha identificado que la serie precio es mejor modelada utilizando un proceso ARIMA (1,1,2), este modelo toma en cuenta los precios anteriores AR(1) y los errores que hemos tenido en el pasado MA(2) sobre la serie diferenciada para lograr la estacionariedad.

Dado que \(d=1\), el modelo se aplica a la primera diferencia, \(Y_t = X_t - X_{t-1}\). Esto es equivalente a un proceso \(\text{ARMA}(1, 2)\):

\[ Y_t = \phi_1 Y_{t-1} + \varepsilon_t + \theta_1 \varepsilon_{t-1} + \theta_2 \varepsilon_{t-2} \]

Sustituyendo los coeficientes estimados:

\[ Y_t = 0.6040 Y_{t-1} + \varepsilon_t - 0.4959 \varepsilon_{t-1} + 0.3907 \varepsilon_{t-2} \]

Donde \(\varepsilon_t\) representa el ruido blanco del proceso.

# 1) Auto ARIMA para ts_volumen (serie estacionaria -> d = 1)
auto_vol <- auto.arima(ts_volumen,
                       d = 1,    
                       D = 0,# la serie ya es estacionaria
                       seasonal = FALSE,     # sin componente estacional
                       stepwise = FALSE,     # búsqueda exhaustiva (más lenta)
                       approximation = FALSE,
                       )         

auto_vol
## Series: ts_volumen 
## ARIMA(4,1,1) 
## 
## Coefficients:
##          ar1     ar2      ar3      ar4      ma1
##       0.8113  0.0514  -0.1689  -0.1901  -0.9051
## s.e.  0.0760  0.0902   0.0902   0.0760   0.0391
## 
## sigma^2 = 3.357e+12:  log likelihood = -3308.9
## AIC=6629.79   AICc=6630.21   BIC=6649.85

La función auto.arima encontró el modelo que mejor se ajustaba con d = 1 y sin estacionalidad: el ARIMA(4, 1, 1).

El modelo \(\text{ARIMA}(4, 1, 1)\) es un proceso \(\text{ARMA}(4, 1)\) aplicado a la serie diferenciada \(Y_t = X_t - X_{t-1}\).

\[ Y_t = \phi_1 Y_{t-1} + \phi_2 Y_{t-2} + \phi_3 Y_{t-3} + \phi_4 Y_{t-4} + \varepsilon_t + \theta_1 \varepsilon_{t-1} \]

Sustituyendo los coeficientes estimados:

\[ Y_t = 0.8113 Y_{t-1} + 0.0514 Y_{t-2} - 0.1689 Y_{t-3} - 0.1901 Y_{t-4} + \varepsilon_t - 0.9051 \varepsilon_{t-1} \]

Conclusiones

Este proyecto examinó la dinámica del mercado de leche cruda en el Cesar desde enero de 2007 hasta mayo de 2025. Para ello, revisamos las series de tiempo del precio pagado a los productores (incluyendo bonificaciones) y el volumen de ventas. A largo plazo, el precio tiende a subir, aunque ha tenido sus altas y bajas entre 2020 y 2023. Por otro lado, el volumen ha ido bajando constantemente desde el inicio de su análisis. Las dos series cambian bastante, con un coeficiente de variación que ronda el 30-38%. Hay una correlación más o menos inversa (r = -0.55) entre el precio y la cantidad, lo cual va con la idea básica de la oferta y la demanda en economía.

Para la serie de tiempo del precio, sea que analicemos la gráfica de la ACF (que baja poco a poco), como si hacemos los test KPSS y ndiffs(), vemos que la series no es estacionaria. Por eso, necesitamos aplicarle una diferenciación no estacional (d=1) antes de crear el modelo. En la serie de volúmen, la ACF visual (correlograma) daba la impresión de que disminuía muy rápido (lo que indicaría d=0), pero las pruebas KPSS y ndiffs() indicaron que también necesitaba una diferenciación no estacional (d=1) para volverse formalmente estacionaria.

Por último, el precio, básicamente, es un proceso no estacionario que, una vez diferenciado, puede modelarse bien con un ARIMA(1, 1, 2). Ahora, el volúmen es una serie un poco más complicada. Necesita diferenciación (d=1) y tiene estacionalidad (con un período de S=10). El siguiente posible paso necesario para una futura entrega sería ajustar un modelo SARIMA (ARIMA Estacional) que incorpore el período S=10 para modelar de mejor manera el volumen de leche en el Cesar.

Referencias