Pular para o conteúdo principal
Documentos
Compartir
LinkedIn
Facebook
Twitter
Copy
Gerenciamento de dados em REntrada de dados em RGráficos em RDocumentação RInterface REstatísticas em R

Frequências e tabelas cruzadas no R

Esta seção descreve a criação de tabelas de frequência e contingência a partir de variáveis categóricas, juntamente com testes de independência, medidas de associação e métodos de exibição gráfica de resultados.

Geração de tabelas de frequência

O R fornece muitos métodos para criar tabelas de frequência e contingência. Três delas são descritas a seguir. Nos exemplos a seguir, suponha que A, B e C representem variáveis categóricas.

tabela

Você pode gerar tabelas de frequência usando a função table( ), tabelas de proporções usando a função prop.table( ) e frequências marginais usando 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( ) também pode gerar tabelas multidimensionais com base em 3 ou mais variáveis categóricas. Nesse caso, use a função ftable( ) para imprimir os resultados de forma mais atraente.

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

A tabela ignora os valores ausentes. Para incluir NA como uma categoria nas contagens, inclua a opção de tabela exclude=NULL se a variável for um vetor. Se a variável for um fator, você deverá criar um novo fator usando newfactor <- factor(oldfactor, exclude=NULL).

xtabs

A função xtabs( ) permite que você crie tabelas cruzadas usando entrada de estilo de fórmula.

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

Se uma variável for incluída no lado esquerdo da fórmula, ela será considerada um vetor de frequências (útil se os dados já tiverem sido tabulados).

Crosstable

A função CrossTable( ) do pacote gmodels produz tabelas cruzadas modeladas de acordo com o PROC FREQ no SAS ou CROSSTABS no SPSS. Ele tem uma grande variedade de opções.

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

Há opções para relatar porcentagens (linha, coluna, célula), especificar casas decimais, produzir testes de independência de Qui-quadrado, Fisher e McNemar, relatar valores esperados e residuais (pearson, padronizado, padronizado ajustado), incluir valores ausentes como válidos, anotar com títulos de linha e coluna e formatar como saída no estilo SAS ou SPSS.

Testes de independência

Teste de qui-quadrado

Para tabelas de duas vias, você pode usar chisq.test(mytable) para testar a independência da variável de linha e coluna. Por padrão, o valor p é calculado a partir da distribuição assintótica do qui-quadrado da estatística de teste. Opcionalmente, o valor p pode ser derivado por meio da simulação de Monte Carlo.

Teste Exato de Fisher

fisher.test(x) fornece um teste exato de independência. x é uma tabela de contingência bidimensional em forma de matriz.

Teste de Mantel - Haenszel

Use a função mantelhaen.test(x) para executar um teste de qui-quadrado de Cochran-Mantel-Haenszel da hipótese nula de que duas variáveis nominais são condicionalmente independentes em cada estrato, supondo que não haja interação de três vias. x é uma tabela de contingência tridimensional, em que a última dimensão se refere aos estratos.

Modelos loglineares

Você pode usar a função loglm( ) no pacote MASS para produzir modelos log-lineares. Por exemplo, vamos supor que você tenha uma tabela de contingência de 3 vias baseada nas variáveis A, B e C.

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

Podemos realizar os seguintes testes:

Independência mútua: A, B e C são independentes entre si. ```R loglm(~A+B+C, mytable)

**Independência parcial** : A é parcialmente independente de B e C (ou seja, A é independente da variável composta BC). ```R loglin(~A+B+C+B*C, mytable)

Independência condicional: A é independente de B, dado C. ```R loglm(~A+B+C+AC+BC, mytable)

**No Three-Way Interaction** ```R loglm(~A+B+C+A*B+A*C+B*C, mytable)

Martin Theus e Stephan Lauer escreveram um excelente artigo sobre a visualização de modelos log-lineares, usando gráficos em mosaico.

Medidas de associação

A função assocstats(mytable) do pacote vcd calcula o coeficiente phi, o coeficiente de contingência e o V de Cramer para uma tabela rxc. A função kappa(mytable) do pacote vcd calcula o kappa de Cohen e o kappa ponderado para uma matriz de confusão. Consulte o artigo de Richard Darlington sobre Medidas de associação em tabelas de tabulação cruzada para obter uma excelente análise dessas estatísticas.

Visualização de resultados

Use gráficos de barras e de pizza para visualizar frequências em uma dimensão.

Use o pacote vcd para visualizar relações entre dados categóricos (por exemplo, gráficos de mosaico e associação).

Use o pacote ca para análise de correspondência (explorando visualmente as relações entre linhas e colunas em tabelas de contingência).

Para praticar a criação desses gráficos, experimente o curso de visualização de dados do DataCamp.

Conversão de tabelas de frequência em um arquivo simples "original"

Por fim, pode haver ocasiões em que você precisará do quadro de dados original do "arquivo simples" em vez da tabela de frequência. Marc Schwartz forneceu um código na lista de discussão Rhelp para converter uma tabela novamente em um quadro de dados.