2015-05-20

Tablas de contingencia en R

Title

Problema

Deseamos crear una tabla de contingencia para uno o varios factores.

Solución

  • Una dimensión
  • table(mtcars$am)
    
     0  1 
    19 13 
    
  • Dos dimensiones
  • table(mtcars$am, mtcars$gear)
    
    Como hemos especificado dos vectores, no aparece el nombre de las dimensiones: am y gear.

         3  4  5
      0 15  4  0
      1  0  8  5
    
    table(mtcars[, c("am", "gear")]) 
    tabla <- table(mtcars[, 9:10])
    # O usando el argumento dnn:
    table(mtcars$am, mtcars$gear, dnn = c("am", "gear"))
    
       gear
    am   3  4  5
      0 15  4  0
      1  0  8  5
    
  • Tres dimensiones
  • table(mtcars[, c("am", "gear", "cyl")])
    
    , , cyl = 4
    
       gear
    am   3  4  5
      0  1  2  0
      1  0  6  2
    
    , , cyl = 6
    
       gear
    am   3  4  5
      0  2  2  0
      1  0  2  1
    
    , , cyl = 8
    
       gear
    am   3  4  5
      0 12  0  0
      1  0  0  2
    
  • Tabla de contingencia plana
  • En el caso anterior sería más claro crear una tabla de contingencia plana (Flat Contingency Table).

    ftable(mtcars[, c("am", "gear", "cyl")])
    
            cyl  4  6  8
    am gear             
    0  3         1  2 12
       4         2  2  0
       5         0  0  0
    1  3         0  0  0
       4         6  2  0
       5         2  1  2
    
    Podemos usar los argumentos row.vars y col.vars para especificar las filas y columnas que deseamos en la tabla de contingencia. Si ninguno es especificado, la última variable es usada para las columnas. Como en nuestro caso cyl.

    ftable(mtcars[, c("am", "gear", "cyl")], col.vars = c(1, 2))
    
         am    0        1      
        gear  3  4  5  3  4  5
    cyl                       
    4         1  2  0  0  6  2
    6         2  2  0  0  2  1
    8        12  0  0  0  0  2
    

Alternativa

La función xtabs crea tablas de contingencia mediante el formato de fórmula, con cada variable separada por un +.

# Una dimensión
xtabs(~ am, mtcars)
# Dos dimensiones
xtabs(~ am + gear, mtcars)
# Tres dimensiones
xtabs(~ am + gear + cyl, mtcars)
# Tabla de contingencia plana
ftable(xtabs(~ am + gear + cyl, mtcars))

Referencias

4 comentarios:

Nube de datos