Frecuencia y tablas cruzadas

Esta sección describe la creación de tablas de frecuencia y de contingencia a partir de variables categóricas, junto con pruebas de independencia, medidas de asociación y métodos para mostrar gráficamente los resultados.

Generación de tablas de frecuencia

R proporciona muchos métodos para crear tablas de frecuencia y contingencia. A continuación se describen tres de ellos. En los siguientes ejemplos, suponga que A, B y C representan variables categóricas.

tabla

Puede generar tablas de frecuencias utilizando la función table( ), tablas de proporciones utilizando la función prop.table( ), y frecuencias marginales utilizando margin.table( ).

# 2-Way Frequency Table
attach(mydata)
mytable <- table(A,B) # A will be rows, B will be columns
mytable # print table
margin.table(mytable, 1) # A frequencies (summed over B)
margin.table(mytable, 2) # B frequencies (summed over A)
prop.table(mytable) # cell percentages
prop.table(mytable, 1) # row percentages
prop.table(mytable, 2) # column percentages

table( ) también puede generar tablas multidimensionales basadas en 3 o más variables categóricas. En este caso, utilice la función ftable( ) para imprimir los resultados de forma más atractiva.

# 3-Way Frequency Table
mytable <- table(A, B, C)
ftable(mytable)

La tabla ignora los valores perdidos. Para incluir NA como categoría en los recuentos, incluya la opción de la tabla exclude=NULL si la variable es un vector. Si la variable es un factor hay que crear un nuevo factor utilizando newfactor <- factor(oldfactor, exclude=NULL).

xtabs

La función xtabs( ) permite crear tabulaciones cruzadas utilizando entradas de estilo fórmula.

# 3-Way Frequency Table
mytable <- xtabs(~A+B+c, data=mydata)
ftable(mytable) # print table
summary(mytable) # chi-square test of indepedence

Si se incluye una variable en el lado izquierdo de la fórmula, se asume que es un vector de frecuencias (útil si los datos ya han sido tabulados).

Crosstable

La función CrossTable( ) del paquete gmodels produce tabulaciones cruzadas modeladas según PROC FREQ en SAS o CROSSTABS en SPSS. Tiene una gran cantidad de opciones.

# 2-Way Cross Tabulation
library(gmodels)
CrossTable(mydata$myrowvar, mydata$mycolvar)

Hay opciones para informar de los porcentajes (fila, columna, celda), especificar los decimales, producir pruebas de independencia de Chi-cuadrado, Fisher y McNemar, informar de los valores esperados y residuales (pearson, estandarizados, estandarizados ajustados), incluir los valores perdidos como válidos, anotar con los títulos de las filas y columnas y formatear como salida al estilo de SAS o SPSS.
Vea help(CrossTable) para más detalles.

Pruebas de independencia

Prueba de ji-cuadrado

Para las tablas de 2 vías puede utilizar chisq.test(mytable) para probar la independencia de la variable de fila y columna. Por defecto, el valor p se calcula a partir de la distribución asintótica chi-cuadrado del estadístico de prueba. Opcionalmente, el valor p puede derivarse a través de la simulación de Monte Carlo.

Prueba exacta de Fisher

fisher.test(x) proporciona una prueba exacta de independencia. x es una tabla de contingencia bidimensional en forma de matriz.

Prueba de Mantel-Haenszel

Utilice la función mantelhaen.test(x) para realizar una prueba chi-cuadrado de Cochran-Mantel-Haenszel de la hipótesis nula de que dos variables nominales son condicionalmente independientes en cada estrato, asumiendo que no hay interacción de tres vías. x es una tabla de contingencia tridimensional, donde la última dimensión se refiere a los estratos.

Modelos log-lineales

Puede utilizar la función loglm( ) del paquete MASS para producir modelos log-lineales. Por ejemplo, supongamos que tenemos una tabla de contingencia de 3 vías basada en las variables A, B y C.

library(MASS)
mytable <- xtabs(~A+B+C, data=mydata)

Podemos realizar las siguientes pruebas:

Independencia mutua: A, B y C son independientes entre sí. loglm(~A+B+C, mytable)

Independencia parcial: A es parcialmente independiente de B y C (es decir, A es independiente de la variable compuesta BC). loglin(~A+B+C+B*C, mytable)

Independencia condicional: A es independiente de B, dado C. loglm(~A+B+C+A*C+B*C, mytable)

Sin interacción tripartita loglm(~A+B+C+A*B+A*C+B*C, mytable)

Martin Theus y Stephan Lauer han escrito un excelente artículo sobre la visualización de modelos logarítmicos, utilizando gráficos de mosaico.

Medidas de asociación

La función assocstats(mytable) del paquete vcd calcula el coeficiente phi, el coeficiente de contingencia y la V de Cramer para una tabla rxc. La función kappa(mytable) del paquete vcd calcula el kappa de Cohen y el kappa ponderado para una matriz de confusión. Véase el artículo de Richard Darlington sobre Medidas de asociación en tablas cruzadas para una excelente revisión de estos estadísticos.

Visualización de resultados

Utiliza gráficos de barras y de tarta para visualizar frecuencias en una dimensión.

Utilizar el paquete vcd para visualizar relaciones entre datos categóricos (por ejemplo, gráficos de mosaico y asociación).

Utilizar el paquete ca para el análisis de correspondencia (explorar visualmente las relaciones entre filas y columnas en tablas de contingencia).

Para practicar la realización de estos gráficos, pruebe el curso de visualización de datos en DataCamp.

Conversión de tablas de frecuencia a un archivo plano «original»

Por último, puede haber ocasiones en las que necesitará el marco de datos original del «archivo plano» en lugar de la tabla de frecuencia. Marc Schwartz ha proporcionado un código en la lista de correo de Rhelp para convertir una tabla en un marco de datos.

Leave a Reply