Se usa cuando alguno de los tratamientos no salió bien y tuvo que eliminarse. Para poder ejemplificar dicho diseño, se utiliza como variables a estudiar diferentes niveles de un ácido que se aplicaran a unas semillas y como, dependiendo del valor del primero, se afecta dicho porcentaje
# Creación de resultados aleatorios para el porcentaje de germinación
set.seed(123)
porc_germ<-c(
rnorm(40,60,6),
rnorm(40,70,7),
rnorm(40,80,8)
)
# Factor ácido
acido<-gl(3,40,120,c('C0','C1','C2'))
# Tabla datos que incluye los diferentes niveles del factor y sus respectivos resultados
datos<-data.frame(acido,porc_germ)
# Visualización de los datos iniciales de la tabla
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
# Vamos a desbalancear el diseño; pordriamos decir que se dañaron tres bandejas de germinación
datos_des<-datos[-c(50,111,120), ]
table(datos_des$acido)
##
## C0 C1 C2
## 40 39 38
Primero hacemos el ejercicio de análisis de varianza con los datos completos. Cabe resaltar que como solo estamos tratando con un factor, es pertinente usar el análisis de varianza para un solo factor, es decir ANOVA, el cual tiene como objetivo conocer si hay diferencias significativas entre los tratamientos en cuestión.
## ANOVA balanceado
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
Con base en un nivel de significancia del 5%, al revisar el p-valor de la variable grupal, es posible observar que esta es menor a dicho 5%, lo que rechazaría la hipótesis nula y por tanto, se podría considerar que el porcentaje de germinación si fue diferente significativamente entre los tres tratamientos
Para visualizar el comportamiento de los datos se realiza un boxplot
boxplot(datos$porc_germ~datos$acido)
Se observa que en términos de variabilidad todos los tratamientos presentan comportamientos similares, a excepción del tratamiento dos que tiene un dato atípico. Por otro lado, se observa claramente una tendencia de mejores porcentajes de germinación para el tratamiento tres por cuanto presenta los valores más altos.
Ahora bien, con el fin de comparar el uso del mismo tipo de modelo de análisis balanceado, para datos que si estan completos con los que están desbalanceados, se aplica AOV con los datos desbalanceados creados en la primera parte de este cuaderno
#¿Qué pasaría si corro AOV con datos desbalanceados?
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
Si bien el resultado obtenido concuerda con lo que se obtuvo con los datos balanceados, los diseños desbalanceados requieren un tratamiento especial, por tanto no se puede utilizar AOV En este caso utilizamos el siguiente modelo
# Haciendo el análisis correspondiente para datos desbalanceados
mod3<-lm(porc_germ~acido,datos_des)
#Libreria que nos permite correr datos desbalanceados
library(car)
## Warning: package 'car' was built under R version 4.2.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.2.3
Anova(mod3,type='II')
## 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
Aparentemente al utilizar tanto el tipo de análisis para datos completos como el de datos desbalanceados, se obtienen los mismos resultados, pero ¿Porqué?, por que solamente tiene un factor, cuando se empieza a trabajar con más de un factor la historia podría ser diferente
set.seed(123)
porc_germ<-c(
rnorm(40,60,6),
rnorm(40,70,7),
rnorm(40,80,8)
)
# Bloqueo
bloques<-gl(3, 40, 120, c('B0','B1','B2'))
# Factor
acido<-gl(4, 10, 120, c('C0','C1','C2','C3'))
datos<-data.frame(acido,bloques,porc_germ)
# Vamos a desbalancear el diseño; podriamos decir que se dañaron tres bandejas de germinación
#datos_des<-datos[-c(50,111,120),]
datos_des<-datos[-sample(120, 5),]
datos_des
## acido bloques 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$bloques,datos_des$acido)
##
## C0 C1 C2 C3
## B0 10 8 10 9
## B1 10 10 10 10
## B2 9 10 10 9
Primero hacemos un análisis de varianza AOV con los datos desbalanceados
mod1<-aov(porc_germ~bloques*acido,datos_des)
summary(mod1)
## Df Sum Sq Mean Sq F value Pr(>F)
## bloques 2 7478 3739 97.858 <2e-16 ***
## acido 3 238 79 2.073 0.108
## bloques:acido 6 276 46 1.203 0.311
## Residuals 103 3936 38
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
En este caso en particular se observa un p-value mayor al 5%, indicando que no hay diferencias significativas entre tratamientos (no se rechazó la H0)
Ahora toma lugar el análisis de varianza correspondiente a los datos desbalanceados
mod2<-lm(porc_germ ~ bloques*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)
## bloques 7399.0 2 96.8208 <2e-16 ***
## acido 237.7 3 2.0734 0.1083
## bloques:acido 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Finalmente se obtiene un p-value también mayor al 5%, es decir, no hay diferencias significativas entre los tratamientos; no se rechaza la H0
mod3<-lm(porc_germ~bloques+acido+bloques:acido,datos_des)
Anova(mod3,type = 'II')
## Anova Table (Type II tests)
##
## Response: porc_germ
## Sum Sq Df F value Pr(>F)
## bloques 7399.0 2 96.8208 <2e-16 ***
## acido 237.7 3 2.0734 0.1083
## bloques:acido 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod3<-lm(porc_germ~acido+bloques+bloques: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
## bloques 7399.0 2 96.8208 <2e-16 ***
## acido:bloques 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod3<-lm(porc_germ~bloques:acido+acido+bloques,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
## bloques 7399.0 2 96.8208 <2e-16 ***
## bloques:acido 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod3<-lm(porc_germ~bloques:acido+bloques+acido,datos_des)
Anova(mod3,type = 'II')
## Anova Table (Type II tests)
##
## Response: porc_germ
## Sum Sq Df F value Pr(>F)
## bloques 7399.0 2 96.8208 <2e-16 ***
## acido 237.7 3 2.0734 0.1083
## bloques:acido 275.8 6 1.2030 0.3108
## Residuals 3935.6 103
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
No cambian los resultados porque se deja fija la suma de cuadrados del tipo II. Langsrud, Ø. ANOVA for unbalanced data: Use Type II instead of Type III sums of squares. Statistics and Computing 13, 163–167 (2003). https://doi.org/10.1023/A:1023260610025
set.seed(123)
porc_germ<-c(
rnorm(40,60,6),
rnorm(40,70,7),
rnorm(40,80,8)
)
#Covariable. Cabe recordar que para sacar el diametro medio de algo que no es circular se deben tomar varias medidas y se debe obtener el promedio geométrico, el cual es la raiz n(siendo n el número de medidas tomadas) de las multiplicaciones de las medidas
diam_med<-sort(rnorm(120,12,1.3))
# Bloqueo
bloques<-gl(3,40,120,c('B0','B1','B2'))
# Factor
acido<-gl(4,10,120,c('C0','C1','C2','C3'))
datos<-data.frame(acido,bloques,porc_germ,diam_med)
# Vamos a desbalancear el diseño; podriamos decir que se dañaron dos bandejas de germinación
datos_des<-datos[-sample(120,5),]
datos_des
## acido bloques porc_germ diam_med
## 1 C0 B0 56.63715 9.330779
## 2 C0 B0 58.61894 9.918003
## 3 C0 B0 69.35225 9.956213
## 4 C0 B0 60.42305 10.030932
## 5 C0 B0 60.77573 10.099718
## 6 C0 B0 70.29039 10.101168
## 7 C0 B0 62.76550 10.122939
## 8 C0 B0 52.40963 10.287879
## 9 C0 B0 55.87888 10.295958
## 10 C0 B0 57.32603 10.326860
## 11 C1 B0 67.34449 10.329870
## 12 C1 B0 62.15888 10.361798
## 13 C1 B0 62.40463 10.373347
## 14 C1 B0 60.66410 10.392845
## 15 C1 B0 56.66495 10.458876
## 17 C1 B0 62.98710 10.617676
## 18 C1 B0 48.20030 10.636070
## 19 C1 B0 64.20814 10.679730
## 20 C1 B0 57.16325 10.689110
## 21 C2 B0 53.59306 10.709741
## 23 C2 B0 53.84397 10.768283
## 24 C2 B0 55.62665 10.836028
## 25 C2 B0 56.24976 10.874833
## 26 C2 B0 49.87984 10.974816
## 27 C2 B0 65.02672 10.984003
## 28 C2 B0 60.92024 11.036263
## 29 C2 B0 53.17118 11.039914
## 30 C2 B0 67.52289 11.060014
## 31 C3 B0 62.55879 11.067616
## 32 C3 B0 58.22957 11.084025
## 33 C3 B0 65.37075 11.152465
## 34 C3 B0 65.26880 11.205484
## 35 C3 B0 64.92949 11.226998
## 36 C3 B0 64.13184 11.253295
## 37 C3 B0 63.32351 11.253834
## 38 C3 B0 59.62853 11.309822
## 39 C3 B0 58.16422 11.329117
## 40 C3 B0 57.71717 11.350920
## 41 C0 B1 65.13705 11.362275
## 42 C0 B1 68.54458 11.371085
## 43 C0 B1 61.14223 11.380879
## 44 C0 B1 85.18269 11.404125
## 45 C0 B1 78.45573 11.426488
## 46 C0 B1 62.13824 11.450754
## 47 C0 B1 67.17981 11.458085
## 48 C0 B1 66.73341 11.461358
## 49 C0 B1 75.45976 11.513045
## 50 C0 B1 69.41642 11.515830
## 51 C1 B1 71.77323 11.527246
## 52 C1 B1 69.80017 11.545454
## 53 C1 B1 69.69991 11.577908
## 54 C1 B1 79.58022 11.635486
## 55 C1 B1 68.41960 11.655311
## 56 C1 B1 80.61529 11.659143
## 57 C1 B1 59.15873 11.667080
## 58 C1 B1 74.09230 11.692837
## 59 C1 B1 70.86698 11.720005
## 60 C1 B1 71.51159 11.743671
## 61 C2 B1 72.65748 11.762197
## 62 C2 B1 66.48374 11.844712
## 63 C2 B1 67.66755 11.882585
## 64 C2 B1 62.86997 11.907299
## 65 C2 B1 62.49746 11.929763
## 66 C2 B1 72.12470 11.955713
## 67 C2 B1 73.13747 12.049125
## 68 C2 B1 70.37103 12.053603
## 70 C2 B1 84.35059 12.084881
## 71 C3 B1 66.56278 12.101349
## 72 C3 B1 53.83582 12.110158
## 73 C3 B1 77.04017 12.122959
## 75 C3 B1 65.18394 12.155019
## 76 C3 B1 77.17900 12.278779
## 77 C3 B1 68.00659 12.278900
## 78 C3 B1 61.45498 12.306003
## 79 C3 B1 71.26912 12.316794
## 80 C3 B1 69.02776 12.387696
## 81 C0 B2 80.04611 12.403625
## 82 C0 B2 83.08224 12.421596
## 83 C0 B2 77.03472 12.431863
## 84 C0 B2 85.15501 12.479654
## 85 C0 B2 78.23611 12.544677
## 86 C0 B2 82.65426 12.567481
## 87 C0 B2 88.77471 12.586955
## 88 C0 B2 83.48145 12.671921
## 89 C0 B2 77.39255 12.706152
## 90 C0 B2 89.19046 12.731886
## 91 C1 B2 87.94803 12.780921
## 92 C1 B2 84.38718 12.803382
## 93 C1 B2 81.90985 12.827541
## 95 C1 B2 90.88522 12.912320
## 96 C1 B2 75.19792 12.919865
## 97 C1 B2 97.49866 12.961932
## 98 C1 B2 92.26089 12.980270
## 99 C1 B2 78.11440 12.999755
## 100 C1 B2 71.78863 13.024061
## 101 C2 B2 74.31675 13.150046
## 102 C2 B2 82.05507 13.270065
## 103 C2 B2 78.02646 13.368525
## 104 C2 B2 77.21966 13.442803
## 105 C2 B2 72.38705 13.442896
## 106 C2 B2 79.63978 13.470738
## 107 C2 B2 73.72076 13.602219
## 108 C2 B2 66.65646 13.642141
## 109 C2 B2 76.95819 13.706137
## 110 C2 B2 87.35197 13.877916
## 111 C3 B2 75.39722 14.146180
## 112 C3 B2 84.86371 14.178406
## 113 C3 B2 67.05694 14.397021
## 114 C3 B2 79.55550 14.481835
## 115 C3 B2 84.15526 14.541882
## 116 C3 B2 82.40923 14.596377
## 117 C3 B2 80.84541 14.730142
## 118 C3 B2 74.87435 14.766987
## 119 C3 B2 73.20237 14.858453
## 120 C3 B2 71.80697 16.213352
table(datos_des$bloques, datos_des$acido)
##
## C0 C1 C2 C3
## B0 10 9 9 10
## B1 10 10 9 9
## B2 10 9 10 10
mod1<-lm(porc_germ ~ diam_med + bloques + acido +
bloques: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
## bloques 1069.4 2 14.0706 4.013e-06 ***
## acido 151.8 3 1.3315 0.2683
## bloques:acido 235.4 6 1.0325 0.4087
## Residuals 3876.1 102
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
mod4<-lm(porc_germ ~ acido + diam_med,datos_des)
summary(mod4)
##
## Call:
## lm(formula = porc_germ ~ acido + diam_med, data = datos_des)
##
## Residuals:
## Min 1Q Median 3Q Max
## -20.1993 -3.9414 -0.5862 4.8609 17.0401
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -3.7614 6.3136 -0.596 0.553
## acidoC1 -1.1529 1.8128 -0.636 0.526
## acidoC2 -7.9475 1.8584 -4.276 4.06e-05 ***
## acidoC3 -11.0204 1.9405 -5.679 1.12e-07 ***
## diam_med 6.5864 0.5454 12.076 < 2e-16 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 6.863 on 110 degrees of freedom
## Multiple R-squared: 0.5783, Adjusted R-squared: 0.5629
## F-statistic: 37.71 on 4 and 110 DF, p-value: < 2.2e-16
Puesto que se obtienen valores negativos para el concepto de ESTIMADO, se dice entonces que hay un decrecimiento para el porcentaje de germinación, el cual está relacionada con la covariable diámetro medio de la semilla. Es decir, esta última tiene un efecto negativo en el porcentaje de germinación.
Respecto al resultado del análisis ANCOVA es posible mencionar lo siguiente:
Intercepto: Es el valor medio de porcentaje de germinación cuando el valor del diámetro medio de la semilla es igual a cero, en este caso, el valor es negativo (-3.7614), lo cual tiene sentido, puesto que si el diámetro de la semilla es igual a Cero, no habría germinación de la misma
Respecto al tratamiento C1, se tuvo un coeficiente de -1.1529, lo cual indica que en promedio este grupo tuvo un porcentaje de germinación de 1.2 unidades menos que el tratamiento C0, cuando el diametro de la semilla se mantiene constante. El valor p es mayor al 5%, indicando que no hay diferencias significativas entre el tratamiento C0 y C1
Respecto al tratamiento C2, se tuvo un coeficiente de -7.9475, lo cual indica que en promedio este grupo tuvo un porcentaje de germinación de 8 unidades menos que el tratamiento C0, cuando el diametro de la semilla se mantiene constante. El valor p es menor al 5%, indicando que hay diferencias significativas entre el tratamiento C0 y C2
Respecto al tratamiento C3, se tuvo un coeficiente de -11.0204, lo cual indica que en promedio este grupo tuvo un porcentaje de germinación de 11 unidades menos que el tratamiento C0, cuando el diametro de la semilla se mantiene constante. El valor p es menor al 5%, indicando que hay diferencias significativas entre el tratamiento C0 y C3
El coeficiente para el diametro medio de la semilla fue de 6.5864, esto quiere decir que en promedio, por cada unidad de crecimiento del diametro (por ejemplo si la medida está dada en mm) el porcentaje de germinación incrementa 6.6 unidades si se mantiene la dosis del ácido en cada tratamiento. El p-valor por su parte es menor al 5%, por tanto si hay diferencias significativas dadas por el ácido
# ¿Cómo correr análisis de varianza con faltantes cuando los mismo se indican con NA, es decir, cuando en lugar de no haber datos es NA?
datos_des[sample(120,5),'porc_germ']=NA
#¿Cómo resolver el no poder sacar medias con NA en R?
tapply(datos_des$porc_germ,
datos_des$acido,
mean)
## C0 C1 C2 C3
## NA NA NA NA
# De este modo, con 'na.rm', en donde se remueven los NA que me impiden sacar los promedios
tapply(datos_des$porc_germ,
datos_des$acido,
mean,na.rm=TRUE)
## C0 C1 C2 C3
## 70.47448 72.12980 68.47421 69.57377
table(datos_des$bloques,datos_des$acido)
##
## C0 C1 C2 C3
## B0 10 9 9 10
## B1 10 10 9 9
## B2 10 9 10 10