08/05, 2019

Objetivos del práctico

  • Entender los distintos tipos de errores cuadrados
    • Tipo I
    • Tipo II
    • Tipo III
  • Cuando usar cada tipo de medida de error cuadrado
    • Tipo I (Diseños anidados)
    • Tipo II (Diseños factoriales sin interacción)
    • Tipo III (Diseños factoriales con interacción)
  • Como implementarlo en R
  • Solo importa en ANOVAS de dos o mas factores

Antes de empezar

  • Función Anova: Nos permite medir diferencias entre dos modelos lineales o ANOVAS
anova(aov(mpg ~ am, data =mtcars), aov(mpg ~ am + cyl, data =mtcars))
## Analysis of Variance Table
## 
## Model 1: mpg ~ am
## Model 2: mpg ~ am + cyl
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1     30 720.90                                  
## 2     29 271.36  1    449.53 48.041 1.285e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Usaremos esta función para explicar los tipos de errores cuadrados

Error tipo I (Error por defecto de R)

  • Cuando usarlo: Modelos anidados, anovas de una vía
  • Cuando no usarlo: Modelos factoriales (El orden de los factores importa)
aov(mpg ~ am*cyl, data = mtcars)
aov(mpg ~ cyl*am, data = mtcars)
am primero
cyl primero
term df sumsq p.value term1 df1 sumsq1 p.value1
am 1 405.15059 0.0000002 cyl 1 817.71295 0.0000000
cyl 1 449.53448 0.0000001 am 1 36.97211 0.0479300
am:cyl 1 29.43939 0.0755069 cyl:am 1 29.43939 0.0755069
Residuals 28 241.92273 NA Residuals 28 241.92273 NA

¿Por que cambian los valores?

Errores cuadrados secuenciales y ~ A + B + *A:B esto se desglosa así:

  • Primero como explica A los datos (y ~ A)
  • Luego como explica B los datos después de que A explico los datos (y ~ B|A)
  • Finalmente como explica la interacción dado lo que ya explican ambas variables en conjunto (y ~ A:B| A + B)
  • Por eso es bueno para sistemas anidados

Anotemos los cuadrados del ANOVA

broom::tidy(aov(uptake ~ Treatment*Type, data = CO2))
term df sumsq meansq statistic p.value
Treatment 1 988.1144 988.11440 15.41641 0.0001817
Type 1 3365.5344 3365.53440 52.50856 0.0000000
Treatment:Type 1 225.7296 225.72964 3.52180 0.0642128
Residuals 80 5127.5971 64.09496 NA NA

Cuanto explica Treatment

Treatment

anova(aov(uptake ~ 1, data = CO2), aov(uptake ~ Treatment, data = CO2))
## Analysis of Variance Table
## 
## Model 1: uptake ~ 1
## Model 2: uptake ~ Treatment
##   Res.Df    RSS Df Sum of Sq      F   Pr(>F)   
## 1     83 9707.0                                
## 2     82 8718.9  1    988.11 9.2931 0.003096 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cuanto explica Treatment

Cuanto explica Type dado Treatment

anova(aov(uptake ~ Treatment, data = CO2), aov(uptake ~ Treatment + Type, data = CO2))
## Analysis of Variance Table
## 
## Model 1: uptake ~ Treatment
## Model 2: uptake ~ Treatment + Type
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1     82 8718.9                                  
## 2     81 5353.3  1    3365.5 50.923 3.679e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cuanto explica Type dado Treatment

Cuanto explica la interaccion dadas ambas variables

anova(aov(uptake ~ Treatment + Type, data = CO2), aov(uptake ~ 
    Treatment + Type + Treatment:Type, data = CO2))
## Analysis of Variance Table
## 
## Model 1: uptake ~ Treatment + Type
## Model 2: uptake ~ Treatment + Type + Treatment:Type
##   Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
## 1     81 5353.3                              
## 2     80 5127.6  1    225.73 3.5218 0.06421 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cuanto explica la interaccion dadas ambas variables

Error tipo II

  • Cuando usarlo: Cuando no hay interacciones (el más poderoso), anovas de una vía (orden no importa)
  • Cuando no usarlo: Modelos factoriales interacciones fuertes
library(car)
Anova(aov(mpg ~ am*cyl, data = mtcars), type = 2)
## Anova Table (Type II tests)
## 
## Response: mpg
##           Sum Sq Df F value    Pr(>F)    
## am         36.97  1  4.2791   0.04793 *  
## cyl       449.53  1 52.0289 7.503e-08 ***
## am:cyl     29.44  1  3.4073   0.07551 .  
## Residuals 241.92 28                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Anova(aov(mpg ~ cyl*am, data = mtcars), type = 2)
## Anova Table (Type II tests)
## 
## Response: mpg
##           Sum Sq Df F value    Pr(>F)    
## cyl       449.53  1 52.0289 7.503e-08 ***
## am         36.97  1  4.2791   0.04793 *  
## cyl:am     29.44  1  3.4073   0.07551 .  
## Residuals 241.92 28                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

¿Cual es la diferencia con el tipo 1?

tipo 2
tipo 1
term sumsq df p.value df1 sumsq1 p.value1
am 36.97211 1 0.0479300 1 817.71295 0.0000000
cyl 449.53448 1 0.0000001 1 36.97211 0.0479300
am:cyl 29.43939 1 0.0755069 1 29.43939 0.0755069
Residuals 241.92273 28 NA 28 241.92273 NA

Orden de los errores

Errores cuadrados de y ~ A + B + *A:B se desglosan así:

  • Primero como explica A los datos despues de que B explico los datos (y ~ A|B)
  • Luego como explica B los datos después de que A explico los datos (y ~ B|A)
  • Finalmente como explica la interacción dado lo que ya explican ambas variables en conjunto (y ~ A:B| A + B)
  • Por le da última prioridad a las interacciones
    • Bueno si nos interesan efectos principales
    • Malo si nos interesan más las interacciones

Anotemos los cuadrados del ANOVA

Anova(aov(mpg ~ am*cyl, data = mtcars), type = 2)
## Anova Table (Type II tests)
## 
## Response: mpg
##           Sum Sq Df F value    Pr(>F)    
## am         36.97  1  4.2791   0.04793 *  
## cyl       449.53  1 52.0289 7.503e-08 ***
## am:cyl     29.44  1  3.4073   0.07551 .  
## Residuals 241.92 28                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cuanto explica am, cuando ya tomamos en cuenta cyl

anova(aov(mpg ~ cyl, data = mtcars), aov(mpg ~ am + cyl, data = mtcars))
## Analysis of Variance Table
## 
## Model 1: mpg ~ cyl
## Model 2: mpg ~ am + cyl
##   Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
## 1     30 308.33                              
## 2     29 271.36  1    36.972 3.9511 0.05635 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cuanto explica am, cuando ya tomamos en cuenta cyl

Cuanto explica cyl, cuando ya tomamos en cuenta am

anova(aov(mpg ~ am, data = mtcars), aov(mpg ~ am + cyl, data = mtcars))
## Analysis of Variance Table
## 
## Model 1: mpg ~ am
## Model 2: mpg ~ am + cyl
##   Res.Df    RSS Df Sum of Sq      F    Pr(>F)    
## 1     30 720.90                                  
## 2     29 271.36  1    449.53 48.041 1.285e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cuanto explica cyl, cuando ya tomamos en cuenta am

Cuanto explica interacción, cuando ya tomamos en cuenta am y cyl

anova(aov(mpg ~ am + cyl, data = mtcars), aov(mpg ~ am *cyl, data = mtcars))
## Analysis of Variance Table
## 
## Model 1: mpg ~ am + cyl
## Model 2: mpg ~ am * cyl
##   Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
## 1     29 271.36                              
## 2     28 241.92  1    29.439 3.4073 0.07551 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cuanto explica interacción

Error tipo III

  • Cuando usarlo: Cuando hay interacciones, diseños desbalanceados, anovas de una vía (orden no importa)
  • Cuando no usarlo: Cuando las interacciones son fuertes no permite detectar efectos principales
Anova(aov(mpg ~ am*cyl, data = mtcars), type = 3)
## Anova Table (Type III tests)
## 
## Response: mpg
##             Sum Sq Df F value    Pr(>F)    
## (Intercept) 810.20  1 93.7719 1.948e-10 ***
## am           48.28  1  5.5879 0.0252577 *  
## cyl         167.65  1 19.4033 0.0001407 ***
## am:cyl       29.44  1  3.4073 0.0755069 .  
## Residuals   241.92 28                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

¿Cual es la diferencia con el tipo 2?

## Anova Table (Type II tests)
## 
## Response: mpg
##           Sum Sq Df F value    Pr(>F)    
## am         36.97  1  4.2791   0.04793 *  
## cyl       449.53  1 52.0289 7.503e-08 ***
## am:cyl     29.44  1  3.4073   0.07551 .  
## Residuals 241.92 28                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

## Anova Table (Type III tests)
## 
## Response: mpg
##             Sum Sq Df F value    Pr(>F)    
## (Intercept) 810.20  1 93.7719 1.948e-10 ***
## am           48.28  1  5.5879 0.0252577 *  
## cyl         167.65  1 19.4033 0.0001407 ***
## am:cyl       29.44  1  3.4073 0.0755069 .  
## Residuals   241.92 28                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Orden de los errores

Errores cuadrados dey ~ A + B + *A:B se desglosan así:

  • Primero como explica A los datos despues de que B y las interacciones lo explicaron (y ~ A|B + A:B)
  • Luego como explica B los datos después de que A e interacciones explicaran los datos (y ~ B|A + A:B)
  • Finalmente como explica la interacción dado lo que ya explican ambas variables en conjunto (y ~ A:B| A + B)
  • Solo le da a cada variable lo que explica por si sola
    • Malo si nos interesan mas los efectos principales
    • Bueno si nos interesan más las interacciones

Anotemos los cuadrados del ANOVA

Anova(aov(mpg ~ am*cyl, data = mtcars), type = 3)
## Anova Table (Type III tests)
## 
## Response: mpg
##             Sum Sq Df F value    Pr(>F)    
## (Intercept) 810.20  1 93.7719 1.948e-10 ***
## am           48.28  1  5.5879 0.0252577 *  
## cyl         167.65  1 19.4033 0.0001407 ***
## am:cyl       29.44  1  3.4073 0.0755069 .  
## Residuals   241.92 28                      
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cuanto explica am, cuando ya tomamos en cuenta cyl y las interacciones

anova(aov(mpg ~ cyl, data = mtcars), aov(mpg ~ am + am:cyl, data = mtcars))
## Analysis of Variance Table
## 
## Model 1: mpg ~ cyl
## Model 2: mpg ~ am + am:cyl
##   Res.Df    RSS Df Sum of Sq F Pr(>F)
## 1     30 308.33                      
## 2     29 409.57  1   -101.23

Cuanto explica cyl, cuando ya tomamos en cuenta am y las interacciones

anova(aov(mpg ~ am, data = mtcars), aov(mpg ~ cyl + am:cyl, data = mtcars))
## Analysis of Variance Table
## 
## Model 1: mpg ~ am
## Model 2: mpg ~ cyl + am:cyl
##   Res.Df   RSS Df Sum of Sq      F    Pr(>F)    
## 1     30 720.9                                  
## 2     29 290.2  1    430.69 43.039 3.466e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Cuanto explica interacción, cuando ya tomamos en cuenta am y cyl

anova(aov(mpg ~ am + cyl, data = mtcars), aov(mpg ~ am *cyl, data = mtcars))
## Analysis of Variance Table
## 
## Model 1: mpg ~ am + cyl
## Model 2: mpg ~ am * cyl
##   Res.Df    RSS Df Sum of Sq      F  Pr(>F)  
## 1     29 271.36                              
## 2     28 241.92  1    29.439 3.4073 0.07551 .
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Exploren ANOVAS

Crearemos base de datos simulada con la funcion SimulData:

SimulData <- function(MeanA1B1 = 20, MeanA1B2 = 20, MeanA1B3 = 20, 
    MeanA2B1 = 40, MeanA2B2 = 40, MeanA2B3 = 40, N = 5) {
    data.frame(A = rep(c("A1", "A2"), each = 3 * N), B = rep(rep(c("B1", 
        "B2", "B3"), each = N), times = 2), y = (c(rnorm(mean = MeanA1B1, 
        n = N, sd = 5), rnorm(mean = MeanA1B2, n = N, sd = 5), 
        rnorm(mean = MeanA1B3, n = N, sd = 5), rnorm(mean = MeanA2B1, 
            n = N, sd = 5), rnorm(mean = MeanA2B2, n = N, sd = 5), 
        rnorm(mean = MeanA2B3, n = N, sd = 5))))
}

Exploren ANOVAS

Exploren ANOVAS

Graficaremos con la funcion InterPlot

InterPlot <- function(DF) {
    require(tidyverse)
    DF <- group_by(DF, A, B) %>% summarize(MeanY = mean(y), SDy = sd(y))
    ggplot(DF, aes(x = B, y = MeanY, group = A)) + geom_point(aes(color = A)) + 
        geom_errorbar(aes(color = A, ymax = MeanY + SDy, ymin = MeanY - 
            SDy)) + geom_line(aes(color = A)) + theme_classic()
}

Exploren ANOVAS

InterPlot(DF)

Exploren ANOVAS

anova(aov(y ~ A*B, data = DF))
## Analysis of Variance Table
## 
## Response: y
##           Df Sum Sq Mean Sq  F value    Pr(>F)    
## A          1   5403  5402.9 186.0663 < 2.2e-16 ***
## B          2  57634 28816.9 992.4053 < 2.2e-16 ***
## A:B        2    348   173.9   5.9887  0.004477 ** 
## Residuals 54   1568    29.0                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
anova(aov(y ~ B*A, data = DF))
## Analysis of Variance Table
## 
## Response: y
##           Df Sum Sq Mean Sq  F value    Pr(>F)    
## B          2  57634 28816.9 992.4053 < 2.2e-16 ***
## A          1   5403  5402.9 186.0663 < 2.2e-16 ***
## B:A        2    348   173.9   5.9887  0.004477 ** 
## Residuals 54   1568    29.0                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Anova(aov(y ~ A*B, data = DF), type = 2)
## Anova Table (Type II tests)
## 
## Response: y
##           Sum Sq Df  F value    Pr(>F)    
## A           5403  1 186.0663 < 2.2e-16 ***
## B          57634  2 992.4053 < 2.2e-16 ***
## A:B          348  2   5.9887  0.004477 ** 
## Residuals   1568 54                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Anova(aov(y ~ A*B, data = DF), type = 3)
## Anova Table (Type III tests)
## 
## Response: y
##             Sum Sq Df  F value    Pr(>F)    
## (Intercept)   3615  1 124.5079 1.226e-15 ***
## A             2016  1  69.4315 2.877e-11 ***
## B            31654  2 545.0532 < 2.2e-16 ***
## A:B            348  2   5.9887  0.004477 ** 
## Residuals     1568 54                       
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1