Saltar al contenido principal
Documentos
Gestión de datos en RGráficos en RR DocumentaciónInterfaz REstadística en RIntroducción de datos en R

Frecuencias y tabulaciones cruzadas en R

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.

Generar tablas de frecuencias

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

tabla

Puedes generar tablas de frecuencias con la función tabla ( ), tablas de proporciones con la función prop.tabla ( ) y frecuencias marginales con margin.tabla( ).

# 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, utiliza 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, incluye la opción de tabla exclude=NULL si la variable es un vector. Si la variable es un factor, tienes que crear un nuevo factor mediante newfactor <- factor(oldfactor, exclude=NULL).

xtabs

La función xtabs( ) te permite crear tabulaciones cruzadas utilizando la entrada 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 supone que es un vector de frecuencias (útil si ya se han tabulado los datos).

Crosstable

La función CrossTable( ) del paquete gmodels produce tabulaciones cruzadas siguiendo el modelo de 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 porcentajes (fila, columna, celda), especificar decimales, producir pruebas de independencia de Chi-cuadrado, Fisher y McNemar, informar de valores esperados y residuales (pearson, estandarizados, estandarizados ajustados), incluir valores perdidos como válidos, anotar con títulos de fila y columna, y formatear como salida estilo SAS o SPSS¡ Consulta help(CrossTable) para más detalles.

Pruebas de independencia

Prueba Chi-cuadrado

Para las tablas de 2 vías puedes utilizar chisq.test(mitabla) para comprobar la independencia de la variable fila y columna. Por defecto, el valor p se calcula a partir de la distribución asintótica ji-cuadrado de la estadística de la prueba. Opcionalmente, el valor p puede obtenerse mediante la simulación de Montecarlo.

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

Utiliza 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, suponiendo 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 Loglineales

Puedes 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í. ```R loglm(~A+B+C, mitabla)

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

Independencia condicional: A es independiente de B, dado C. ```R loglm(~A+B+C+AC+BC, mytable)

**Sin Interacción Tripartita** ```R loglm(~A+B+C+A*B+A*C+B*C, mitabla)

Martin Theus y Stephan Lauer han escrito un excelente artículo sobre la Visualización de Modelos Loglineales, 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 de una tabla rxc. La función kappa(mitabla) del paquete vcd calcula el kappa de Cohen y el kappa ponderado para una matriz de confusión. Consulta el artículo de Richard Darlington sobre Medidas de asociación en tablas de tabulación cruzada para obtener una excelente revisión de estas estadísticas.

Visualizar los resultados

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

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

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

Para practicar la elaboración de estos gráficos, prueba el curso de visualización de datos de DataCamp.

Convertir tablas de frecuencias en un archivo plano "original

Por último, a veces necesitarás el marco de datos original del "archivo plano" en lugar de la tabla de frecuencias. Marc Schwartz ha proporcionado código en la lista de correo de Rhelp para volver a convertir una tabla en un marco de datos.

Aprende lo esencial de R

Domina los fundamentos del análisis de datos en R, incluyendo vectores, listas y marcos de datos, y practica R con conjuntos de datos reales.
Empieza a aprender R gratis