DISEÑO DESBALANCEADO

Tiene diferente cantidad de repeticiones

DISEÑO FACTORIAL SIMPLE

La variable respuesta es la germinación y factor es la concentracion de acido

set.seed(123)
#Creamos los datos utilizando como factor procedencia de la semilla.
porc_germ = c(
  rnorm(40,60,6),
  rnorm(40,70,7),
  rnorm(40,80,8)
)

acido = gl(3,40,120, c('CO','C1','C2'))

datos = data.frame(acido, porc_germ)
head(datos)
##   acido porc_germ
## 1    CO  56.63715
## 2    CO  58.61894
## 3    CO  69.35225
## 4    CO  60.42305
## 5    CO  60.77573
## 6    CO  70.29039
table(datos$acido)
## 
## CO C1 C2 
## 40 40 40
#Hasta acá tenemos los datos balanceados ya que tenemos la misma cantidad de repeticiones para cada tratamiento, en este caso 40

#Desbalanceamos los datos eliminando las filas 50, 111 y 120. 
datos_des = datos [-c(50,111, 120), ]
table(datos_des$acido)
## 
## CO C1 C2 
## 40 39 38

Analisis descriptivo

boxplot(datos$porc_germ ~ datos$acido)

Se observa mejor germinación con la el acido C2

Analisis de varianza balanceado usando datos desbalanceados

Primero se intenta correr de la forma original, con los datos balanceados

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 los 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

Concluimos que: p-valor <0.05, es decir,la germinacion no fue igual utilizando todos los ácidos

No existe diferencia en los resultados utilizando datos balanceados y desvalanceados, el pvalor es el mismo, Aov no está diseñada para datos desbalanceados pero este funciona ya que solo tenemos un factor.

Analisis de varianza desbalanceado usando datos desbalanceados

Cuando tenemos mas de un factor, usmaos la libreria CAR, la función lm y añadir tipo II para hacer el ajuste de los datos desbalanceados.

mod3 = lm(porc_germ ~ acido, datos_des)

#Instalamos la libraria car, usamos la función Anova 
library(car)
## Loading required package: 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

Este diseño como es de un solo factor funciona con las dos funciones.

DISEÑO FACTORIAL SIMPLE CON BLOQUES COMPLETOS GENERALIZADOS Y AL AZAR DESBALANCEADO

Primero vamos a crear los datos:

set.seed(123)
porc_germ = c(
  rnorm(40,60,6),
  rnorm(40,70,7),
  rnorm(40,80,8)
)


#Añadimos el factor de bloqueo, primero colocamos los bloques luego los factores o el factor 

bloq = gl(3, 40, 120, c('BO','B1','B2'))
acido = gl(3,10,120, c('CO','C1','C2', "C3"))


datos = data.frame(acido,bloq, porc_germ)

#Vamos a crear los datos desbalanceados eliminando las filas 120 y 5 
datos_des = datos[-sample(120, 5), ]
datos_des
##     acido bloq porc_germ
## 1      CO   BO  56.63715
## 2      CO   BO  58.61894
## 3      CO   BO  69.35225
## 4      CO   BO  60.42305
## 5      CO   BO  60.77573
## 6      CO   BO  70.29039
## 7      CO   BO  62.76550
## 8      CO   BO  52.40963
## 9      CO   BO  55.87888
## 10     CO   BO  57.32603
## 11     C1   BO  67.34449
## 12     C1   BO  62.15888
## 13     C1   BO  62.40463
## 15     C1   BO  56.66495
## 17     C1   BO  62.98710
## 18     C1   BO  48.20030
## 19     C1   BO  64.20814
## 20     C1   BO  57.16325
## 21     C2   BO  53.59306
## 22     C2   BO  58.69215
## 23     C2   BO  53.84397
## 24     C2   BO  55.62665
## 25     C2   BO  56.24976
## 26     C2   BO  49.87984
## 27     C2   BO  65.02672
## 28     C2   BO  60.92024
## 29     C2   BO  53.17118
## 30     C2   BO  67.52289
## 31     CO   BO  62.55879
## 32     CO   BO  58.22957
## 34     CO   BO  65.26880
## 35     CO   BO  64.92949
## 36     CO   BO  64.13184
## 37     CO   BO  63.32351
## 38     CO   BO  59.62853
## 39     CO   BO  58.16422
## 40     CO   BO  57.71717
## 41     C1   B1  65.13705
## 42     C1   B1  68.54458
## 43     C1   B1  61.14223
## 44     C1   B1  85.18269
## 45     C1   B1  78.45573
## 46     C1   B1  62.13824
## 47     C1   B1  67.17981
## 48     C1   B1  66.73341
## 49     C1   B1  75.45976
## 50     C1   B1  69.41642
## 51     C2   B1  71.77323
## 52     C2   B1  69.80017
## 53     C2   B1  69.69991
## 54     C2   B1  79.58022
## 55     C2   B1  68.41960
## 56     C2   B1  80.61529
## 57     C2   B1  59.15873
## 58     C2   B1  74.09230
## 59     C2   B1  70.86698
## 60     C2   B1  71.51159
## 61     CO   B1  72.65748
## 62     CO   B1  66.48374
## 63     CO   B1  67.66755
## 64     CO   B1  62.86997
## 65     CO   B1  62.49746
## 66     CO   B1  72.12470
## 67     CO   B1  73.13747
## 68     CO   B1  70.37103
## 69     CO   B1  76.45587
## 70     CO   B1  84.35059
## 71     C1   B1  66.56278
## 72     C1   B1  53.83582
## 73     C1   B1  77.04017
## 74     C1   B1  65.03559
## 75     C1   B1  65.18394
## 76     C1   B1  77.17900
## 77     C1   B1  68.00659
## 78     C1   B1  61.45498
## 79     C1   B1  71.26912
## 80     C1   B1  69.02776
## 81     C2   B2  80.04611
## 82     C2   B2  83.08224
## 83     C2   B2  77.03472
## 84     C2   B2  85.15501
## 85     C2   B2  78.23611
## 86     C2   B2  82.65426
## 88     C2   B2  83.48145
## 89     C2   B2  77.39255
## 90     C2   B2  89.19046
## 91     CO   B2  87.94803
## 92     CO   B2  84.38718
## 93     CO   B2  81.90985
## 94     CO   B2  74.97675
## 95     CO   B2  90.88522
## 96     CO   B2  75.19792
## 97     CO   B2  97.49866
## 98     CO   B2  92.26089
## 99     CO   B2  78.11440
## 100    CO   B2  71.78863
## 101    C1   B2  74.31675
## 102    C1   B2  82.05507
## 103    C1   B2  78.02646
## 104    C1   B2  77.21966
## 105    C1   B2  72.38705
## 106    C1   B2  79.63978
## 107    C1   B2  73.72076
## 108    C1   B2  66.65646
## 109    C1   B2  76.95819
## 110    C1   B2  87.35197
## 111    C2   B2  75.39722
## 112    C2   B2  84.86371
## 113    C2   B2  67.05694
## 114    C2   B2  79.55550
## 115    C2   B2  84.15526
## 116    C2   B2  82.40923
## 118    C2   B2  74.87435
## 119    C2   B2  73.20237
## 120    C2   B2  71.80697
table(datos_des$bloq, datos_des$acido)
##     
##      CO C1 C2 C3
##   BO 19  8 10  0
##   B1 10 20 10  0
##   B2 10 10 18  0

Analisis de varianza con AOV

mod1 = aov(porc_germ ~ bloq* acido, datos_des)
mod1
## Call:
##    aov(formula = porc_germ ~ bloq * acido, data = datos_des)
## 
## Terms:
##                     bloq    acido bloq:acido Residuals
## Sum of Squares  7478.283  209.889    164.590  4074.602
## Deg. of Freedom        2        2          4       106
## 
## Residual standard error: 6.199971
## Estimated effects may be unbalanced

Analisis de varianza con lm

library(car)
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       7539.5   2 98.0699 <2e-16 ***
## acido       209.9   2  2.7301 0.0698 .  
## bloq:acido  164.6   4  1.0704 0.3749    
## Residuals  4074.6 106                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Ya que tenemos dos factores NO se recomienda usar la función AOV Se observa que no hay interacción entre el bloque y el acido,

Ajustando el desabalanceado con diferentes ordenes

Queremos observar la diferencia cuando utilizamos un orden distinto

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       7539.5   2 98.0699 <2e-16 ***
## acido       209.9   2  2.7301 0.0698 .  
## bloq:acido  164.6   4  1.0704 0.3749    
## Residuals  4074.6 106                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
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       209.9   2  2.7301 0.0698 .  
## bloq       7539.5   2 98.0699 <2e-16 ***
## acido:bloq  164.6   4  1.0704 0.3749    
## Residuals  4074.6 106                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
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       209.9   2  2.7301 0.0698 .  
## bloq       7539.5   2 98.0699 <2e-16 ***
## bloq:acido  164.6   4  1.0704 0.3749    
## Residuals  4074.6 106                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 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       7539.5   2 98.0699 <2e-16 ***
## acido       209.9   2  2.7301 0.0698 .  
## bloq:acido  164.6   4  1.0704 0.3749    
## Residuals  4074.6 106                   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Nota = Los resultados son identicos porque ponemos la suma de cuadrados tipo II para que no hayan diferencias en el orden. Este ajuste se da con la función ANOVA

AGREGAMOS UNA COVARIABLE

#covariable: diametro medio de la semilla, el diametro en campo se calcula con promedio geométrico

set.seed(123)
porc_germ = c(
  rnorm(40,60,6),
  rnorm(40,70,7),
  rnorm(40,80,8)
)

diam_geom =sort(rnorm(120, 12, 1.3))


#Añadimos el factor de bloqueo, primero colocamos los bloques luego los factores

bloq = gl(3, 40, 120, c('BO','B1','B2'))
acido = gl(3,10,120, c('CO','C1','C2', "C3"))


datos = data.frame(acido,bloq, porc_germ, diam_geom)
datos_des = datos
datos_des [sample(120, 5), "porc_germ" ] = NA
#Eliminamos algunos datos especificos en lugar de filas 


table(datos_des$bloq, datos_des$acido)
##     
##      CO C1 C2 C3
##   BO 20 10 10  0
##   B1 10 20 10  0
##   B2 10 10 20  0

Analisis usando lm

mod1 = lm(porc_germ ~ diam_geom + 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_geom    93.5   1  2.4833    0.1181    
## bloq       3044.3   2 40.4390 9.505e-14 ***
## acido       168.0   2  2.2318    0.1124    
## bloq:acido  143.1   4  0.9504    0.4381    
## Residuals  3952.2 105                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
#Seguimos utilizando type II

Para reemplazar los datos que no tenemos vamos a sacar las media:

tapply(datos_des$porc_germ,
       datos_des$acido,
       mean, na.rm = TRUE)
##       CO       C1       C2       C3 
## 68.84082 68.92311 72.57864       NA

Referencias:

Langsrud, Ø. (2003). ANOVA for unbalanced data: use type II instead of type III sumsof squares. Statistics and Computing, 13(2), 163. https://doi.org/10.1023/a:1023260610025

Notas de clase

Para el martes a las 2, quiz sobre covariable

Para el segundo parcial, como corre R los faltantes en un diseño desbalanceado cuando se identifican con NA