En esta clase se va a explicar como se haria el analisis de los resultados de un diseño experimental, si dado el caso hubieran datos faltantes, a esto se le conoce como diseño desbalanceado.
set.seed(123)
porc_germ = c(
rnorm(40,60,6),
rnorm(40,70,7),
rnorm(40,80,8)
)
acido= gl(3, 40, 120, c("c0", "c1", "c2"))
datos = data.frame(acido,porc_germ)
head(datos)
## acido porc_germ
## 1 c0 56.63715
## 2 c0 58.61894
## 3 c0 69.35225
## 4 c0 60.42305
## 5 c0 60.77573
## 6 c0 70.29039
table(datos$acido)
##
## c0 c1 c2
## 40 40 40
datos_des = datos[-c(50,111,120),]
table(datos_des$acido)
##
## c0 c1 c2
## 40 39 38
#Hipotesis del modelo todas las medias de los tratamietos son iguales \[H_0:\mu_{co}=\mu_{c1}=\mu_{c2}\] #Analisis de varianza baleanceado
mod1 = aov(porc_germ~acido, datos)
summary(mod1)
## Df Sum Sq Mean Sq F value Pr(>F)
## acido 2 7835 3918 98.15 <2e-16 ***
## Residuals 117 4670 40
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Conclusion: con un nivel de significiencia del 0.05, hay evidencia estadistica para rechazar la hipotesis nula, lo que significa que por lo menos una de las medias de los acidos empleados en el experimentos es diferente, por lo tanto hay diferencia en el porcentanje de germinacion.
mu=mean(datos$porc_germ)
boxplot(datos$porc_germ ~datos$acido)
abline(h=mu, lty=2, col="purple")
Interpretacion: Se observa que en c1 hay un dato atipico, ademas de que
se obseva que usando el acido c2 se obtiene un mayor porcentaje de
germinacion, y se observa que las medias son diferentes.
mod2 = aov(porc_germ~acido, datos_des)
summary(mod2)
## Df Sum Sq Mean Sq F value Pr(>F)
## acido 2 7898 3949 98.39 <2e-16 ***
## Residuals 114 4576 40
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Se observa que la media del acido incremento, al tener que estimar nuevos datos en esta tambien se rechaza la hipotesis nula.
mod3 = lm(porc_germ ~ acido, datos_des)
library(car)
## Loading required package: carData
library(carData)
mod3_res = Anova(mod3, type = 'II')
mod3_res
## Anova Table (Type II tests)
##
## Response: porc_germ
## Sum Sq Df F value Pr(>F)
## acido 7898.3 2 98.392 < 2.2e-16 ***
## Residuals 4575.6 114
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Conclusion Con un nivel de significiencia del 0.05, hay evidencia estadistica para rechazar la hipotesis nula, lo que significa que por lo menos una de las medias de los acidos empleados en el experimentos es diferente, por lo tanto hay diferencia en el porcentanje de germinacion. Nota: Se usa test tipo II(metodo de yates) para ordenar los datos para realizar el analisis de varianza, en cuanto a los bloques y los tratamientos, no afectara los resltados del ANOVA La veracidad de los 2 metodos anteriores, y con ello se concluye que al tener un solo factor, los metodos son utiles sin importar si son balanceados o desbalanceados; al añadir mas variables (bloques, etc) es necesario otro metodo de analisis.
#Ahora se va a aplicar bloques completos y generalizados, al mismo diseño desbalanceado.
set.seed(123)
porc_germ = c(
rnorm(40, 60, 6),
rnorm(40, 70, 7),
rnorm(40, 80, 8)
)
bloq = gl(3, 40, 120, c('B0','B1','B2'))
acido = gl(4, 10, 120, c('C0','C1','C2','C3'))
datos = data.frame(acido, bloq, porc_germ)
# datos_des = datos[-c(50, 111, 120), ]
datos_des = datos [-sample(120, 5), ]
datos_des
## acido bloq porc_germ
## 1 C0 B0 56.63715
## 2 C0 B0 58.61894
## 3 C0 B0 69.35225
## 4 C0 B0 60.42305
## 5 C0 B0 60.77573
## 6 C0 B0 70.29039
## 7 C0 B0 62.76550
## 8 C0 B0 52.40963
## 9 C0 B0 55.87888
## 10 C0 B0 57.32603
## 11 C1 B0 67.34449
## 12 C1 B0 62.15888
## 13 C1 B0 62.40463
## 15 C1 B0 56.66495
## 17 C1 B0 62.98710
## 18 C1 B0 48.20030
## 19 C1 B0 64.20814
## 20 C1 B0 57.16325
## 21 C2 B0 53.59306
## 22 C2 B0 58.69215
## 23 C2 B0 53.84397
## 24 C2 B0 55.62665
## 25 C2 B0 56.24976
## 26 C2 B0 49.87984
## 27 C2 B0 65.02672
## 28 C2 B0 60.92024
## 29 C2 B0 53.17118
## 30 C2 B0 67.52289
## 31 C3 B0 62.55879
## 32 C3 B0 58.22957
## 34 C3 B0 65.26880
## 35 C3 B0 64.92949
## 36 C3 B0 64.13184
## 37 C3 B0 63.32351
## 38 C3 B0 59.62853
## 39 C3 B0 58.16422
## 40 C3 B0 57.71717
## 41 C0 B1 65.13705
## 42 C0 B1 68.54458
## 43 C0 B1 61.14223
## 44 C0 B1 85.18269
## 45 C0 B1 78.45573
## 46 C0 B1 62.13824
## 47 C0 B1 67.17981
## 48 C0 B1 66.73341
## 49 C0 B1 75.45976
## 50 C0 B1 69.41642
## 51 C1 B1 71.77323
## 52 C1 B1 69.80017
## 53 C1 B1 69.69991
## 54 C1 B1 79.58022
## 55 C1 B1 68.41960
## 56 C1 B1 80.61529
## 57 C1 B1 59.15873
## 58 C1 B1 74.09230
## 59 C1 B1 70.86698
## 60 C1 B1 71.51159
## 61 C2 B1 72.65748
## 62 C2 B1 66.48374
## 63 C2 B1 67.66755
## 64 C2 B1 62.86997
## 65 C2 B1 62.49746
## 66 C2 B1 72.12470
## 67 C2 B1 73.13747
## 68 C2 B1 70.37103
## 69 C2 B1 76.45587
## 70 C2 B1 84.35059
## 71 C3 B1 66.56278
## 72 C3 B1 53.83582
## 73 C3 B1 77.04017
## 74 C3 B1 65.03559
## 75 C3 B1 65.18394
## 76 C3 B1 77.17900
## 77 C3 B1 68.00659
## 78 C3 B1 61.45498
## 79 C3 B1 71.26912
## 80 C3 B1 69.02776
## 81 C0 B2 80.04611
## 82 C0 B2 83.08224
## 83 C0 B2 77.03472
## 84 C0 B2 85.15501
## 85 C0 B2 78.23611
## 86 C0 B2 82.65426
## 88 C0 B2 83.48145
## 89 C0 B2 77.39255
## 90 C0 B2 89.19046
## 91 C1 B2 87.94803
## 92 C1 B2 84.38718
## 93 C1 B2 81.90985
## 94 C1 B2 74.97675
## 95 C1 B2 90.88522
## 96 C1 B2 75.19792
## 97 C1 B2 97.49866
## 98 C1 B2 92.26089
## 99 C1 B2 78.11440
## 100 C1 B2 71.78863
## 101 C2 B2 74.31675
## 102 C2 B2 82.05507
## 103 C2 B2 78.02646
## 104 C2 B2 77.21966
## 105 C2 B2 72.38705
## 106 C2 B2 79.63978
## 107 C2 B2 73.72076
## 108 C2 B2 66.65646
## 109 C2 B2 76.95819
## 110 C2 B2 87.35197
## 111 C3 B2 75.39722
## 112 C3 B2 84.86371
## 113 C3 B2 67.05694
## 114 C3 B2 79.55550
## 115 C3 B2 84.15526
## 116 C3 B2 82.40923
## 118 C3 B2 74.87435
## 119 C3 B2 73.20237
## 120 C3 B2 71.80697
table(datos_des$bloq, datos_des$acido)
##
## C0 C1 C2 C3
## B0 10 8 10 9
## B1 10 10 10 10
## B2 9 10 10 9
Diseño usando aov con diferencias en la salida de datos ya que si se encuentra los cuadrados medios
mod1 = aov(porc_germ ~ bloq * acido,
datos_des)
summary(mod1)
## Df Sum Sq Mean Sq F value Pr(>F)
## bloq 2 7478 3739 97.858 <2e-16 ***
## acido 3 238 79 2.073 0.108
## bloq:acido 6 276 46 1.203 0.311
## Residuals 103 3936 38
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Diseño usando lm con diferencias en la salida de datos ya que no se encuentra los cuadrados medios
mod2 = lm(porc_germ ~ bloq * acido,
datos_des)
mod2_res = Anova(mod2, type='II')
mod2_res
## Anova Table (Type II tests)
##
## Response: porc_germ
## Sum Sq Df F value Pr(>F)
## bloq 7399.0 2 96.8208 <2e-16 ***
## acido 237.7 3 2.0734 0.1083
## bloq:acido 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Para este caso no se presentan diferencias notorias, se debe hacer la aclaracion de que para este tipo de modelos con varios factores, un analisis de varianzas convencional (aov), NO es viable, y se debe emplear el metodo especifico dada la falta de datos. En este caso el modelo lineal.
Se modifico el orden de las variables para evaluar si habian diferencias. se sigue aplicando el tipo II
###1
mod3 = lm(porc_germ ~ bloq + acido+ bloq:acido, datos_des)
Anova(mod3, type='II')
## Anova Table (Type II tests)
##
## Response: porc_germ
## Sum Sq Df F value Pr(>F)
## bloq 7399.0 2 96.8208 <2e-16 ***
## acido 237.7 3 2.0734 0.1083
## bloq:acido 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
###2
mod3 = lm(porc_germ ~ acido + bloq + bloq:acido, datos_des)
Anova(mod3, type='II')
## Anova Table (Type II tests)
##
## Response: porc_germ
## Sum Sq Df F value Pr(>F)
## acido 237.7 3 2.0734 0.1083
## bloq 7399.0 2 96.8208 <2e-16 ***
## acido:bloq 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
###3
mod3 = lm(porc_germ ~ bloq:acido + acido + bloq, datos_des)
Anova(mod3, type='II')
## Anova Table (Type II tests)
##
## Response: porc_germ
## Sum Sq Df F value Pr(>F)
## acido 237.7 3 2.0734 0.1083
## bloq 7399.0 2 96.8208 <2e-16 ***
## bloq:acido 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
###4
mod3 = lm(porc_germ ~ bloq:acido + bloq + acido, datos_des)
Anova(mod3, type='II')
## Anova Table (Type II tests)
##
## Response: porc_germ
## Sum Sq Df F value Pr(>F)
## bloq 7399.0 2 96.8208 <2e-16 ***
## acido 237.7 3 2.0734 0.1083
## bloq:acido 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
tipo II para organizar los datos cuando el diseño es desbalanceado, referenciar el articulo de porque se usa este tipo de analisis Conclusion: Con esto se puede intuir que la organizacion de los datos no es relevante SIEMPRE Y CUANDO se realice la correcta seleccion del tipo de analisis. se tienen en total 3 metodos de analisis en diseños desbalanceados, de los cuales unicamente el 3ro. se emplea de forma generalizada como un ANOVA desbalanceado mediante sumas de cuadrados. el tipo II ofrece 1) apropiado para la construcción de modelosANOVA.(2) más potente cuando no hay interacción (3) invariante al orden en que se introducen los efectos en el modelo ANOVA tambbien se menciona que si no hay un efecto de interacción significativo, entonces el tipo II es más potente en este caso la interaccion entre bloques y acido no es sinificativa.
Diseño factorial simple en bloques completos generalizados y al azar, desbalanceado (FSBCGA-D)
diametro medio de la semilla como covariable media geometrica
set.seed(123)
porc_germ = c(
rnorm(40, 60, 6),
rnorm(40, 70, 7),
rnorm(40, 80, 8)
)
diam_med = sort(rnorm(120, 12, 1.3))
bloq = gl(3, 40, 120, c('B0','B1','B2'))
acido = gl(4, 10, 120, c('C0','C1','C2','C3'))
datos = data.frame(acido, bloq,
porc_germ, diam_med)
datos_des = datos
datos_des[sample(120, 5), 'porc_germ'] = NA
table(datos_des$bloq, datos_des$acido)
##
## C0 C1 C2 C3
## B0 10 10 10 10
## B1 10 10 10 10
## B2 10 10 10 10
#Analisis de covarianza
mod1 = lm(porc_germ ~ diam_med + bloq+ acido+ bloq:acido, datos_des)
Anova(mod1, type='II')
## Anova Table (Type II tests)
##
## Response: porc_germ
## Sum Sq Df F value Pr(>F)
## diam_med 6.0 1 0.1574 0.6924
## bloq 1069.4 2 14.0706 4.013e-06 ***
## acido 151.8 3 1.3315 0.2683
## bloq:acido 235.4 6 1.0325 0.4087
## Residuals 3876.1 102
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
-Para este caso la interaccion entre bloque y acido no es significativa para el experimento
#Para tener la media del experimento cuando hay datos faltantes en este caso se van a ignorar los datos faltantes en este caso cuando se teien na
tapply(datos_des$porc_germ,
datos_des$acido,
mean)
## C0 C1 C2 C3
## 70.96384 NA NA NA
y esta seria la correcion usando la media, imputando los datos
tapply(datos_des$porc_germ,
datos_des$acido,
mean, na.rm=TRUE)
## C0 C1 C2 C3
## 70.96384 72.04659 68.44023 69.07068
###Referencias
-Langsrud, Øyvind. 2003. ANOVA for unbalanced data: Use type II instead of type III sums of squares. Statistics and Computing. volume 13. pages 163-167. doi = 10.1023/A:1023260610025