Este programa compara medias muestrales entre grupos utilizando eltest ANOVA.

Queremos evaluar si la dosis de alcohol tiene un efecto apreciable en el tiempo (segundos) que se tarda en hacer operaciones matemáticas sencillas.

Se eligen 20 voluntarios que cumplen ciertos criterios de admisión en el estudio.

Se dividen aleatoriamente en cuatro grupos, recibiendo cada grupo distintas dosis de alcohol.

tiempo<-c(42,39,48,43,44,45,46,45,39,43,64,61,50,55,58,56,55,62,59,60)

dosis<-c(rep(1,5),rep(2,5),rep(3,5),rep(4,5))

Armamos el dataframe indicando cual es la variable factor

datos<-data.frame(dosis = factor(dosis,labels=
                                c('Sin Alcohol','Dosis Baja','Dosis Media','Dosis Alta')),tiempo)

head(datos)
##         dosis tiempo
## 1 Sin Alcohol     42
## 2 Sin Alcohol     39
## 3 Sin Alcohol     48
## 4 Sin Alcohol     43
## 5 Sin Alcohol     44
## 6  Dosis Baja     45
plot(datos, col = "violet")

Aplicamos el Test de anova. Es muy importante indicar el orden en que se dan los argumentos. El primer argumento es siempre la variable dependiente.

res<-aov(tiempo ~ dosis,data=datos)

summary(res)
##             Df Sum Sq Mean Sq F value   Pr(>F)    
## dosis        3 1067.8   355.9   25.38 2.54e-06 ***
## Residuals   16  224.4    14.0                     
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

calculamos el tiempo medio de respuesta para cada dosis

tapply(datos$tiempo,datos$dosis,mean)
## Sin Alcohol  Dosis Baja Dosis Media  Dosis Alta 
##        43.2        43.6        57.6        58.4

validación para medir independencia y para ver si cumplen la hipótesis de normalidad

plot(res$residuals, col = "blue")

dfr <- data.frame(Residuos = res$residuals)

ggplot(dfr, aes(x = Residuos)) + 
  geom_histogram(aes(y =..density..),
                 breaks = seq(-10, 10, by = 1), 
                 colour = "blue", 
                 fill = "white") +  geom_density(size= 1.2,colour = "green") +
  stat_function(fun = dnorm,  args = list(mean = mean(res$residuals),
                                          sd = sd(res$residuals)),colour = "magenta", size = 1.2)

para ver si todos tienen la misma varianza, max / min tendría que dar 1

desviaciones <- tapply(res$residuals, dosis, sd)

desviaciones
##        1        2        3        4 
## 3.271085 2.792848 5.412947 2.880972
max(desviaciones)/min(desviaciones) 
## [1] 1.938146

Gráfico de tiempo en función de la dosis

plotmeans(tiempo~dosis, col = "violet")

Test de Tukey

print(TukeyHSD(res))
##   Tukey multiple comparisons of means
##     95% family-wise confidence level
## 
## Fit: aov(formula = tiempo ~ dosis, data = datos)
## 
## $dosis
##                         diff       lwr       upr     p adj
## Dosis Baja-Sin Alcohol   0.4 -6.376451  7.176451 0.9982132
## Dosis Media-Sin Alcohol 14.4  7.623549 21.176451 0.0000854
## Dosis Alta-Sin Alcohol  15.2  8.423549 21.976451 0.0000459
## Dosis Media-Dosis Baja  14.0  7.223549 20.776451 0.0001171
## Dosis Alta-Dosis Baja   14.8  8.023549 21.576451 0.0000625
## Dosis Alta-Dosis Media   0.8 -5.976451  7.576451 0.9862341
plot(TukeyHSD(res))