Diseño factorial simple completamente al azar desbalanceado.

En esta actividad se explicará probablemente cómo trabajar con datos desbalanceados

Variable respuesta (porcentaje de germinación)

evaluar el porcentaje de germinación. El factor principal será la escarificación de la semilla, con tres tratamientos que consisten en concentraciones diferentes de ácido. No se utilizarán bloques en este diseño.

set.seed(123)

germ = c(
  
  rnorm(40, 60, 6),
  rnorm(40, 70 ,7),
  rnorm(40, 80, 8)) 
acido = gl(3, 40, 120, c('c0','c1', 'c2' )) #Factor

datos = data.frame(acido,germ)
head(datos)
##   acido     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

se crea el data.frame en el cual hay 40 repeticiones por cada tratamiento

table(datos$acido)
## 
## c0 c1 c2 
## 40 40 40

Inicialmente, se generarán datos balanceados que representan los diferentes tratamientos y se realizarán las evaluaciones correspondientes del porcentaje de germinación. Posteriormente, se eliminarán algunos datos de manera intencional para crear un diseño desbalanceado.

Analisis con el diseño balanceado

mod1 = aov(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

La hipótesis nula es rechazada debido a que el valor p obtenido, que es menor a 0.05, indica que existe evidencia estadística significativa para concluir que el porcentaje de germinación no fue igual en todas las concentraciones evaluadas.

boxplot(datos$germ ~ datos$acido)

El gráfico evidencia que la germinación fue más favorable a medida que se aumentó la dosis del ácido. Se observa que la germinación fue mejor en comparación con el tratamiento de control, donde no se aplicó ácido y ademas observamos un dato atipico en en C1

datos_des = datos[-c(50, 111, 120),]
table(datos_des$acido)
## 
## c0 c1 c2 
## 40 39 38

Se desbalancean los datos y se procede hacer su analisis.

ANALISIS DE VARIANZA BALANCEADO CON LOS DATOS DESBALANCEADOS

mod2 = aov(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

aov no sirve para modelos desbalanceados con más de dos factores en ese caso hacer prueba con lm.

ANALISIS CORRECTO PARA DATOS DESBALANCEADOS

mod3 = lm(germ ~ acido, datos_des)
library(car)
## Loading required package: carData
mod3_res = Anova(mod3, type = 'II')
mod3_res
## Anova Table (Type II tests)
## 
## Response: 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

Mientras la prueba tenga un solo factor se puede utilizar aov o lm, se sigue rechazando la hipotesis nula.

AHORA (CON BLOQUES)

Factorial simple en bloques al azar desbalanceado.

Primero se crean los datos balanceados con bloques y luego se hace el desdalanceado.

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), ]

Para el ejercicio se eliminan las filas 50, 111 y 120 datos_des (Datos desbalanceados)

table(datos_des$bloq, datos_des$acido)
##     
##      C0 C1 C2 C3
##   B0 10 10 10 10
##   B1  9 10 10 10
##   B2 10 10 10  8

La tabla refleja que se eliminaron datos de la muestra, C0 un dato, c1 dos datos y c3 dos datos, se realizan los mismos analisis de varianza para observar las diferencias entre el modelo balanceado y desbalanceado.

mod1 = aov(porc_germ ~ bloq * acido,
           datos_des)
summary(mod1)
##              Df Sum Sq Mean Sq F value Pr(>F)    
## bloq          2   7898    3949 102.076 <2e-16 ***
## acido         3    248      83   2.133  0.100    
## bloq:acido    6    266      44   1.145  0.342    
## Residuals   105   4062      39                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
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       7850.6   2 101.4603 <2e-16 ***
## acido       247.6   3   2.1333 0.1004    
## bloq:acido  265.7   6   1.1447 0.3418    
## Residuals  4062.3 105                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Las tablas revelan que no existe interacción entre el bloque y el ácido, y tampoco se observa un efecto significativo del ácido en los resultado, es importante destacar que el análisis de varianza (ANOVA) no debe ser utilizado en diseños con más de un factor y datos desbalanceados.

AJUSTANDO EL DESBALANCEADO CON DIFERENTES ORDENES

se realizó una prueba de analisis en la que se utilizaron diferentes ordenes,Se utiliza para analizar si se puede presentar alguna diferencia en los resultados al poner los datos en diferente orden

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       7850.6   2 101.4603 <2e-16 ***
## acido       247.6   3   2.1333 0.1004    
## bloq:acido  265.7   6   1.1447 0.3418    
## Residuals  4062.3 105                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

2

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       247.6   3   2.1333 0.1004    
## bloq       7850.6   2 101.4603 <2e-16 ***
## bloq:acido  265.7   6   1.1447 0.3418    
## Residuals  4062.3 105                    
## ---
## 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       247.6   3   2.1333 0.1004    
## bloq       7850.6   2 101.4603 <2e-16 ***
## bloq:acido  265.7   6   1.1447 0.3418    
## Residuals  4062.3 105                    
## ---
## 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       7850.6   2 101.4603 <2e-16 ***
## acido       247.6   3   2.1333 0.1004    
## bloq:acido  265.7   6   1.1447 0.3418    
## Residuals  4062.3 105                    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Al utilizar la suma de cuadrados tipo II, se puede observar que no hay diferencia en los resultados al ajustar las variables en diferentes órdenes. Esto se debe a que la suma de cuadrados tipo II es una medida adecuada para construir modelos ANOVA y, al mismo tiempo, es invariante al orden en el que se introducen los efectos en el modelo.

ANALISIS DE COVARIANZA

FSBCGA (Diseño factorial simple en bloques completos generalizado al azar)

desbalanceado y con la tecnica de analisis de covarianza,se agrega la COVARIABLE= diametro medio

set.seed(123)

porc_ger = 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_ger, diam_med)

datos_des = datos[-sample(120, 5), ]

datos_des
##     acido bloq porc_ger  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$bloq, datos_des$acido)
##     
##      c0 c1 c2 c3
##   B0 10  9  9 10
##   B1 10 10  9  9
##   B2 10  9 10 10

se evidencia el desbalanceo. se realiza Analisis de varianza de las interacciones

mod1 = lm(porc_ger ~ diam_med + bloq + acido + bloq:acido, datos_des)
Anova(mod1, type = 'II')
## Anova Table (Type II tests)
## 
## Response: porc_ger
##            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

No existe interaccion entre bloque y acido debido a que el p valor > 5%

Por ultimo, ¿como se pueden registrar los datos que aparecen como NA (desaparecidos)?. El programa imposibilite el analisis al considerar los datos como no existentes.

set.seed(123)

porc_ger = 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_ger, diam_med)

datos_des = datos
datos_des[sample(120, 5), 'porc_ger'] = NA
datos_des
##     acido bloq porc_ger  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
## 16     c1   B0       NA 10.575205
## 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
## 22     c2   B0       NA 10.749586
## 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
## 69     c2   B1       NA 12.077675
## 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
## 74     c3   B1       NA 12.152941
## 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
## 94     c1   B2       NA 12.894292
## 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$bloq, datos_des$acido)
##     
##      c0 c1 c2 c3
##   B0 10 10 10 10
##   B1 10 10 10 10
##   B2 10 10 10 10
tapply(datos_des$porc_ger,
       datos_des$acido,
       mean)
##       c0       c1       c2       c3 
## 70.96384       NA       NA       NA

Una posible solucion es la imputacion de los datos que aparacen como NA

tapply(datos_des$porc_ger, 
       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