Primera Parte

Para el desarrollo de este diseño experimental, se tomo como base una situacion con homogeneidad de datos en un experimento de germinacion y uso en diferentes dosis de un acido.

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

Para despues incluir el mismo planteamiento en un diseño experimental con algunos datos faltantes, y a partir de ahi desglosar las diferentes generalidades que poseen los diseños de este tipo.

datos_des = datos[-c(50,111,120),]
                  table(datos_des$acido)
## 
## C0 C1 C2 
## 40 39 38

En primera instancia, ambos analisis de varianzas convergen en el rechazo a la hipotesis nula, que indica:

\[H_0: \mu_0 = \mu_1 = \mu_2\] Analisis de Varianza 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

Analisis de Varianza empleando la misma metodologia del Analisis Balanceado, aun con datos faltantes:

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

Para ambos casos no se evidencia cambio significativo respecto a la conclusion, aunque los valores de las medias si presentan cierta variacion. - Se procede a plantear el analisis con la metodologia recomendada:

mod3= lm(porc_germ ~ acido, datos_des)
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
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

Nuevamente se confirma 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.

Segunda Parte

  • Para mostrar mas a profundidad las diferencias entre diseños y la importancia de NO aplicar de forma indiscriminada el metodo convencional, se proceden a generar bloqueos 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[-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

Asi pues, se efectuan nuevamente los analisis de varianza (con el metodo de un diseño balanceado, y desbalanceado) con el fin de verificar la disparidad en la informacion.

  • Diseño “Balanceado”
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 Desbalanceado
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
  • A pesar de que 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.

Tercera Parte

Ajustando el diseño desbalanceado con diferente orden: Importancia de la Suma de Cuadrados “Tipo 2”.

Hacia la ultima parte de la sesion, se realizo la prueba del analisis modificando la organizacion de las variables, con el fin de comprobar si existian diferencias y dar consecuentemente unos lineamientos generales.

#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 + 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)    
## 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

#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

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. Asi pues, 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. (Lo cual, segun la literatura referenciada indica una falencia, ya que este metodo se basa en modelos irreales - en los cuales existe una interaccion, sin los correspondientes efectos principales -.

~ Finalmente, se concluye que la suma de cuadrados SIEMPRE debe ser “type=II” para que siempre se realice el ajuste y no existan problemas con las diferencias y el ingreso de los datos.

Cuarta Parte

Ingreso de una Covariable

Para la seccion final, se añadio la covariable “Diametro Geometrico”, mejor conocida como “Media Geometrica”, con la cual se espera ver las ultimas generalidades de este tipo de diseños con un solo factor.

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

Posteriormente, se tiene el analisis de varianza de dichas interacciones, y las posibilidades de manejo frente a los datos faltantes.

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 se tiene que la unica interaccion existente recae en los bloqueos.

  • Por ultimo, se tiene la posibilidad de registrar los datos como desaparecidos “NA”, y en consecuencia, el programa imposibilita el analisis al considerar los datos como no existentes, sin obviarlos.

tapply(datos_des$porc_germ,
       datos_des$acido,
       mean)
##       C0       C1       C2       C3 
## 70.96384       NA       NA       NA
Sin embargo, en este tipo de situaciones existen 2 alternativas, consistentes en:

Imputar empleando en cada caso la media de los datos, convirtiendolo asi en un modelo balanceado.

IGNORAR los datos faltantes, esto implica ignorar las filas con alguno de los datos inexistentes.

tapply(datos_des$porc_germ,
       datos_des$acido,
       mean, na.rm=TRUE)
##       C0       C1       C2       C3 
## 70.96384 72.04659 68.44023 69.07068