La base de datos ChickWeight contiene 578 registros transversales y 4 variables de un experimento sobre el efecto de la dieta en el crecimiento de pollos.
ChickWeight <- datasets::ChickWeight
glimpse(ChickWeight)
## Rows: 578
## Columns: 4
## $ weight <dbl> 42, 51, 59, 64, 76, 93, 106, 125, 149, 171, 199, 205, 40, 49...
## $ Time <dbl> 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20, 21, 0, 2, 4, 6, 8, 10...
## $ Chick <ord> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, ...
## $ Diet <fct> 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, ...
Se requiere analizar la relación del peso de los pollos a través del tiempo. Para dicho propósito, se realiza un diagrama de dispersión.
ggplot(ChickWeight, aes(Time, weight)) + geom_point(size=.8, alpha=.5) +
theme_bw() +
theme(axis.text = element_text(size=5, colour = "black"),
axis.title.x = element_text(size=6, colour = "black"),
axis.title.y = element_text(size=6, colour = "black")) +
ggExtra::removeGridX() +
ggExtra::removeGridY() +
xlab("\nTiempo") +
ylab("Peso\n") +
scale_y_continuous(breaks = seq(0,400,50))
Como se puede observar en el diagrama de dispersión, las variables parecen relacionarse positivamente con una tendencia lineal.
Para analizar la correlación, se calcula el coeficiente lineal de Pearson que mide la tendencia lineal entre dos variables numéricas.
Se debe verificar que:
cor(ChickWeight$Time, ChickWeight$weight, method = "pearson")
## [1] 0.8371017
Vemos que las variables están altamente correlacionadas con un coeficente de 0.8371. Sin embargo, a medida que pasa el tiempo, la variación de peso entre los pollos se hace más amplia.
En esta situación, se analiza el efecto que tiene el tipo de dieta en la alimentación de cada pollo.
ggplot(ChickWeight, aes(Time, weight, colour=Diet)) +
geom_point(size=.5, alpha=.5) +
facet_wrap(~Diet) +
theme_bw() +
theme(axis.text = element_text(size=5, colour = "black"),
axis.title.x = element_text(size=6, colour = "black"),
axis.title.y = element_text(size=6, colour = "black"),
strip.text.x = element_text(size = 6, colour = "black"),
strip.background = element_rect(color="black", fill="white"),
legend.position = "none") +
ggExtra::removeGridX() +
ggExtra::removeGridY() +
xlab("\nTiempo") +
ylab("Peso\n") +
scale_y_continuous(breaks = seq(0,400,50))
Como se muestra en la gráfica, la dieta 4 parece ser la que presenta menor variabilidad con respecto a su media. Por otro lado, la dieta 3 parece presentar la mayor variabilidad.
A continuación, se realiza un modelo de regresión incluyendo las variables antes mencionadas.
mod1 <- lm(weight ~ Time + Diet,data = ChickWeight)
summary(mod1)
##
## Call:
## lm(formula = weight ~ Time + Diet, data = ChickWeight)
##
## Residuals:
## Min 1Q Median 3Q Max
## -136.851 -17.151 -2.595 15.033 141.816
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 10.9244 3.3607 3.251 0.00122 **
## Time 8.7505 0.2218 39.451 < 2e-16 ***
## Diet2 16.1661 4.0858 3.957 8.56e-05 ***
## Diet3 36.4994 4.0858 8.933 < 2e-16 ***
## Diet4 30.2335 4.1075 7.361 6.39e-13 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 35.99 on 573 degrees of freedom
## Multiple R-squared: 0.7453, Adjusted R-squared: 0.7435
## F-statistic: 419.2 on 4 and 573 DF, p-value: < 2.2e-16
par(mfrow=c(2,2))
plot(mod1)
Nota: Análisis sin finalizar.