ANÁLISIS DE DATOS EN LA PRODUCCIÓN DE CARNE CON GANADO BRAHMAN EN LOS DEPARTAMENTOS ENTRE 2020 Y 2024

Author

Camilo Humanez, Daniel Cantillo, Silvestre Sanchez, Johan Hincapie

Published

September 15, 2025

Resumen

Breve descripción del proyecto: se analiza la producción de carne de ganado Brahman en varios departamentos de la zona tropical de Colombia entre 2020 y 2024. Se presentan la metodología, zonas de estudio, materiales, el procedimiento de análisis estadístico realizado en R (RStudio), resultados simulados de ejemplo, discusión, conclusiones y referencias. Además se incluye un script en R que crea la tabla de datos (no es necesario importar nada) y realiza los análisis básicos y modelos estadísticos recomendados.

Introducción

El ganado Brahman es una raza de amplia adaptabilidad al trópico colombiano y representa una parte importante de la producción de carne en regiones cálidas. Este estudio busca cuantificar y analizar la evolución de indicadores productivos (ganancia de peso, producción de carne por ha, mortalidad, índice de conversión alimenticia, etc.) en departamentos representativos entre 2020 y 2024. Los objetivos son describir tendencias temporales, comparar departamentos y estimar efectos de factores como año, departamento y manejo (a nivel de finca) sobre la producción.

Objetivos

  • Objetivo general: Analizar datos productivos de ganado Brahman en departamentos seleccionados entre 2020 y 2024 para identificar tendencias y factores asociados a la producción de carne.

  • Objetivos específicos:

    • Describir estadísticamente los principales indicadores productivos por año y departamento.
    • Comparar la ganancia de peso promedio entre departamentos y años.
    • Ajustar modelos lineales/mix (efectos fijos y aleatorios) para cuantificar la influencia de variables explicativas.

Metodología

Zonas de estudio

Se propone incluir departamentos representativos del trópico colombiano con importante producción bovina (ejemplo):

  • Córdoba
  • Cesar
  • Magdalena
  • Sucre
  • Meta
  • Casanare
  • Bolívar

Cada departamento incluirá varias fincas (farms) muestreadas por año. En el documento de ejemplo usaremos 8 departamentos y 10 fincas por departamento (puede ajustarse según disponibilidad real de datos).

Diseño muestral

  • Tipo de estudio: observacional longitudinal (panel) entre 2020 y 2024.
  • Unidad de observación: finca-año (datos a nivel de finca por año) y animales individuales cuando sea posible.
  • Muestreo: selección de fincas representativas por departamento, con registro anual de indicadores.

Variables principales (ejemplo)

  • Departamento (factor)
  • FincaID (factor)
  • Año (2020-2024)
  • N_animales (número de animales en la finca)
  • Peso_promedio_ini (kg) — peso promedio al inicio del periodo
  • Peso_promedio_fin (kg) — peso promedio al final del periodo
  • Ganancia_peso_prom (g/día o kg/periodo)
  • Produccion_kg (kg carne producida en el año)
  • Mortalidad_pct (porcentaje anual)
  • IC_alimenticio (índice de conversión alimenticia)
  • Sistema_manejo (Extensivo/Intensivo/Semiextensivo)
  • Clima (subzona climática o temperatura media anual)

Materiales

  • Datos primarios: registros de fincas (pesadas, registros productivos) o bases oficiales (DANE, ICA, registros gremiales).
  • Software: R y RStudio.
  • Paquetes R sugeridos: tidyverse, lubridate, lme4, lmerTest, emmeans, ggplot2, janitor, readr, broom, performance.

Creación de la tabla de datos (script R)

NOTA: el siguiente bloque de código en R crea una base de datos simulada coherente con el título del proyecto. Está lista para usarse en RStudio y realizar análisis sin necesidad de importar archivos externos.

Code
# Script R: crear datos simulados para el proyecto
set.seed(123)
library(dplyr)
library(tidyr)


# Parámetros del simulador
departamentos <- c("Córdoba","Cesar","Magdalena","Sucre","Meta","Casanare","Bolívar","Antioquia")
anos <- 2020:2024
n_fincas_por_dep <- 8 # ajuste: número de fincas por departamento


# Generar IDs de finca
fincas <- expand.grid(Departamento = departamentos,
FincaNum = 1:n_fincas_por_dep,
stringsAsFactors = FALSE) %>%
arrange(Departamento) %>%
mutate(FincaID = paste0(substr(Departamento,1,3),"_",sprintf("%02d",FincaNum)))


# Generar datos a nivel finca-año
data_list <- list()
for(y in anos){
temp <- fincas %>%
mutate(Año = y,
# tamaño del plantel (variación por departamento y año)
N_animales = round(rnorm(n(), mean = 120 + ifelse(Departamento %in% c("Meta","Casanare"), 40, 0), sd = 25)),
Peso_promedio_ini = round(rnorm(n(), mean = 300, sd = 30),1),
# ganancia de peso promedio diaria (g/día), depende del manejo y año (mejoras)
Ganancia_peso_g_dia = round(rnorm(n(), mean = 600 + (y-2020)*10 + ifelse(Departamento %in% c("Córdoba","Antioquia"),30,0), sd = 70)),
# periodo considerado en días (por ejemplo 365)
Dias = 365,
Peso_promedio_fin = round(Peso_promedio_ini + Ganancia_peso_g_dia * Dias/1000,1),
Produccion_kg = round((Peso_promedio_fin - Peso_promedio_ini) * N_animales * 0.6,1), # factor de rendimiento
Mortalidad_pct = round(runif(n(), 0.5, 3.5),2),
IC_alimenticio = round(runif(n(), 6.5, 9.5),2),
Sistema_manejo = sample(c("Extensivo","Semiextensivo","Intensivo"), n(), replace = TRUE, prob = c(0.6,0.3,0.1)),
Clima = sample(c("Húmedo","Seco","Mixto"), n(), replace = TRUE)
)
data_list[[as.character(y)]] <- temp
}


brahman_df <- bind_rows(data_list) %>%
mutate(Departamento = factor(Departamento),
FincaID = factor(FincaID),
Año = as.integer(Año))


# Sanear y revisar
library(janitor)
brahman_df <- clean_names(brahman_df)


# Vista rápida
head(brahman_df)
Code
# Guardar (opcional)
# write_csv(brahman_df, "brahman_produccion_2020_2024.csv")

Análisis estadístico en R (pasos y código sugerido)

1) Estadística descriptiva

Code
resumen_dep_ano <- brahman_df %>%
group_by(departamento, ano) %>%
summarise(n_fincas = n(),
media_ganancia_gdia = mean(ganancia_peso_g_dia),
sd_ganancia = sd(ganancia_peso_g_dia),
media_produccion_kg = mean(produccion_kg),
mediana_ic = median(ic_alimenticio),
.groups = 'drop')


resumen_dep_ano

2) Visualizaciones (ggplot2)

Code
library(ggplot2)
# Tendencia de ganancia de peso por departamento
ggplot(resumen_dep_ano, aes(x = ano, y = media_ganancia_gdia, color = departamento)) +
geom_line(size = 1) +
geom_point() +
labs(title = "Tendencia de ganancia de peso promedio (g/día) por departamento",
x = "Año", y = "Ganancia promedio (g/día)") +
theme_minimal()

Code
# Boxplot de producción por departamento (todos los años)
ggplot(brahman_df, aes(x = departamento, y = produccion_kg)) +
geom_boxplot() +
labs(title = "Distribución de producción (kg) por departamento",
x = "Departamento", y = "Producción anual (kg)") +
theme_minimal() +
coord_flip()

3) Modelos: Efectos fijos y aleatorios

Se recomienda usar modelos mixtos para tener en cuenta la correlación entre observaciones dentro de la misma finca (FincaID como efecto aleatorio).

Code
library(lme4)
library(lmerTest)


# Modelo mixto: Producción ~ Año + Departamento + Sistema + (1|FincaID)
mod1 <- lmer(produccion_kg ~ factor(ano) + departamento + sistema_manejo + (1|finca_id), data = brahman_df)
summary(mod1)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: produccion_kg ~ factor(ano) + departamento + sistema_manejo +  
    (1 | finca_id)
   Data: brahman_df

REML criterion at convergence: 6024.6

Scaled residuals: 
     Min       1Q   Median       3Q      Max 
-2.37103 -0.65419 -0.06617  0.53563  3.16222 

Random effects:
 Groups   Name        Variance Std.Dev.
 finca_id (Intercept)   582532  763.2  
 Residual             17049861 4129.1  
Number of obs: 320, groups:  finca_id, 64

Fixed effects:
                            Estimate Std. Error       df t value Pr(>|t|)    
(Intercept)                 16270.56     864.53   114.18  18.820  < 2e-16 ***
factor(ano)2021               167.77     731.37   250.13   0.229  0.81875    
factor(ano)2022               105.63     731.03   250.02   0.144  0.88523    
factor(ano)2023              1195.13     730.92   250.00   1.635  0.10329    
factor(ano)2024              1152.97     731.86   250.27   1.575  0.11643    
departamentoBolívar           363.54    1000.23    55.14   0.363  0.71766    
departamentoCasanare         3288.19     999.73    55.06   3.289  0.00176 ** 
departamentoCesar            -994.93    1001.02    55.28  -0.994  0.32459    
departamentoCórdoba           529.48     999.15    54.96   0.530  0.59829    
departamentoMagdalena        -734.73     999.15    54.96  -0.735  0.46525    
departamentoMeta             5398.62    1001.13    55.31   5.393 1.49e-06 ***
departamentoSucre           -1519.44    1000.07    55.12  -1.519  0.13440    
sistema_manejoIntensivo       249.77     798.39   306.00   0.313  0.75462    
sistema_manejoSemiextensivo   804.61     526.48   303.92   1.528  0.12748    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Code
# Comprobar supuestos: residuos, homocedasticidad
plot(mod1)

Code
qqnorm(resid(mod1)); qqline(resid(mod1))

Code
# Comparaciones post-hoc si interesa
library(emmeans)
emm <- emmeans(mod1, ~ departamento)
pairs(emm)
 contrast              estimate   SE   df t.ratio p.value
 Antioquia - Bolívar       -364 1000 55.1  -0.363  1.0000
 Antioquia - Casanare     -3288 1000 55.1  -3.289  0.0348
 Antioquia - Cesar          995 1000 55.3   0.994  0.9735
 Antioquia - Córdoba       -529  999 55.0  -0.530  0.9994
 Antioquia - Magdalena      735  999 55.0   0.735  0.9955
 Antioquia - Meta         -5399 1000 55.3  -5.393  <.0001
 Antioquia - Sucre         1519 1000 55.1   1.519  0.7938
 Bolívar - Casanare       -2925  999 55.0  -2.927  0.0866
 Bolívar - Cesar           1358  999 55.0   1.359  0.8712
 Bolívar - Córdoba         -166 1000 55.1  -0.166  1.0000
 Bolívar - Magdalena       1098 1000 55.1   1.099  0.9544
 Bolívar - Meta           -5035 1000 55.1  -5.035  0.0001
 Bolívar - Sucre           1883  999 55.0   1.884  0.5674
 Casanare - Cesar          4283  999 55.0   4.286  0.0018
 Casanare - Córdoba        2759  999 55.0   2.760  0.1267
 Casanare - Magdalena      4023  999 55.0   4.025  0.0041
 Casanare - Meta          -2110 1000 55.1  -2.111  0.4211
 Casanare - Sucre          4808  999 55.0   4.811  0.0003
 Cesar - Córdoba          -1524 1000 55.2  -1.524  0.7914
 Cesar - Magdalena         -260 1000 55.2  -0.260  1.0000
 Cesar - Meta             -6394  999 55.0  -6.397  <.0001
 Cesar - Sucre              525  999 55.0   0.525  0.9995
 Córdoba - Magdalena       1264  999 54.9   1.265  0.9075
 Córdoba - Meta           -4869 1000 55.3  -4.865  0.0003
 Córdoba - Sucre           2049 1000 55.1   2.049  0.4597
 Magdalena - Meta         -6133 1000 55.3  -6.128  <.0001
 Magdalena - Sucre          785 1000 55.1   0.785  0.9933
 Meta - Sucre              6918  999 55.0   6.923  <.0001

Results are averaged over the levels of: ano, sistema_manejo 
Degrees-of-freedom method: satterthwaite 
P value adjustment: tukey method for comparing a family of 8 estimates 

4) Análisis de tendencia temporal (por departamento)

Code
# Ajustar modelo de efectos mixtos con interacción año:departamento
mod2 <- lmer(produccion_kg ~ ano * departamento + (1|finca_id), data = brahman_df)
summary(mod2)
Linear mixed model fit by REML. t-tests use Satterthwaite's method [
lmerModLmerTest]
Formula: produccion_kg ~ ano * departamento + (1 | finca_id)
   Data: brahman_df

REML criterion at convergence: 5993.4

Scaled residuals: 
    Min      1Q  Median      3Q     Max 
-2.3851 -0.6627 -0.0002  0.5274  3.4303 

Random effects:
 Groups   Name        Variance Std.Dev.
 finca_id (Intercept)   795606  892    
 Residual             16603715 4075    
Number of obs: 320, groups:  finca_id, 64

Fixed effects:
                            Estimate Std. Error         df t value Pr(>|t|)  
(Intercept)               -5.057e+04  9.212e+05  2.477e+02  -0.055   0.9563  
ano                        3.343e+01  4.556e+02  2.477e+02   0.073   0.9416  
departamentoBolívar       -1.424e+06  1.303e+06  2.478e+02  -1.093   0.2753  
departamentoCasanare      -1.144e+06  1.303e+06  2.478e+02  -0.878   0.3807  
departamentoCesar         -6.858e+04  1.303e+06  2.478e+02  -0.053   0.9581  
departamentoCórdoba        1.625e+06  1.303e+06  2.479e+02   1.247   0.2134  
departamentoMagdalena     -2.184e+06  1.303e+06  2.478e+02  -1.676   0.0949 .
departamentoMeta          -1.046e+06  1.303e+06  2.478e+02  -0.803   0.4229  
departamentoSucre         -5.559e+05  1.303e+06  2.478e+02  -0.427   0.6699  
ano:departamentoBolívar    7.046e+02  6.443e+02  2.478e+02   1.094   0.2751  
ano:departamentoCasanare   5.675e+02  6.443e+02  2.478e+02   0.881   0.3793  
ano:departamentoCesar      3.346e+01  6.443e+02  2.478e+02   0.052   0.9586  
ano:departamentoCórdoba   -8.034e+02  6.443e+02  2.479e+02  -1.247   0.2136  
ano:departamentoMagdalena  1.080e+03  6.443e+02  2.478e+02   1.676   0.0950 .
ano:departamentoMeta       5.199e+02  6.443e+02  2.478e+02   0.807   0.4205  
ano:departamentoSucre      2.742e+02  6.443e+02  2.478e+02   0.426   0.6708  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Code
# Extraer efectos marginales o predicciones
library(ggeffects)
preds <- ggpredict(mod2, terms = c("ano","departamento"))
plot(preds)

Resultados (cómo presentarlos)

  • Tablas con estadísticas descriptivas por departamento y año.
  • Figuras: tendencias por año, boxplots por departamento, mapa (si hay coordenadas) con producción por área.
  • Resultados del modelo mixto: coeficientes, significancia, varianza entre fincas.

Discusión

Describir posibles causas de las diferencias observadas: manejo, genética, disponibilidad de alimento, clima (sequía o lluvias), variaciones en mortalidad, mejoras sanitarias entre años, programas de mejoramiento genético o asistencia técnica.

Conclusiones

  • Resumen de hallazgos principales (por ejemplo, si la ganancia de peso mejoró entre 2020-2024 o si ciertos departamentos muestran mayor producción promedio).
  • Recomendaciones para agricultores y políticas: manejo, suplementación, registro periódico y adopción de sistemas de información.

Limitaciones del estudio

  • Datos simulados o registros con diferentes calidades entre fincas.
  • Sesgos por selección de fincas.
  • Variables no medidas (calidad de pasto, genética con precisión, tratamientos sanitarios detallados).

Referencias y bibliografía (sugerida)

  • FAO. (2019). “Cattle production and management in tropical systems.” FAO publications.
  • ICA Colombia. Información técnica sobre sanidad y producción bovina.
  • Santos, A., et al. (2021). “Ganancia de peso en bovinos Brahman en trópico colombiano” (artículo ejemplo).
  • Pinheiro, J. & Bates, D. (2000). Mixed-Effects Models in S and S-PLUS. Springer.
  • Wickham, H. (2016). ggplot2: Elegant Graphics for Data Analysis. Springer.