bind.tables <- function (...) {
tables <- list (...)
output <- unlist (tables)
names <- attr(attributes(tables[[1]])$dimnames, "names")
dim (output) <- c (dim (tables[[1]]), length (tables))
dimnames(output) <- list (var1 = dimnames (tables[[1]])[[1]],
var2=dimnames(tables[[1]])[[2]], statistic=names (tables))
attr(dimnames(output), "names")[1] <- names[1]
attr(dimnames(output), "names")[2] <- names[2]
ftable (output, col.vars=names[2])
}
para usarlo generan primero las tablas:
tabla <- xtabs( ~ var1 + var2)
tabla.total <- prop.table(tabla)
tabla.fila <- prop.table(tabla, 1)
tabla.columna <- prop.table(tabla, 2)
tabla.esperados <- chisq.test(tabla)$expected
luego juntan las tablas con la función:
bind.tables("Frecuencias" = tabla, "% del total" = tabla.total, "%de la fila" = tabla.fila, "% de la columna" = tabla.columna, "Esperados" = tabla.esperados)
Aquí va un ejemplo de la salida:
var1 | categ1 | categ2 | |
var2 | statistic | ||
categ1 | Frecuencias | 24.0000000 | 23.0000000 |
% del total | 0.2400000 | 0.2300000 | |
%de la fila | 0.5106383 | 0.4893617 | |
% de la columna | 0.4800000 | 0.4600000 | |
Esperados | 23.5000000 | 23.5000000 | |
categ2 | Frecuencias | 26.0000000 | 27.0000000 |
% del total | 0.2600000 | 0.2700000 | |
%de la fila | 0.4905660 | 0.5094340 | |
% de la columna | 0.5200000 | 0.5400000 | |
Esperados | 26.5000000 | 26.5000000 |
Espero que les guste.