Data ChickWeight

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.

Variables

Exploración de los datos

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, ...

Análisis

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.