Frequencies and Crosstabs

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 para exibição gráfica dos resultados.

Gerar tabelas de frequência

R fornece muitos métodos para a criação de tabelas de frequência e de contingência. Três estão descritos abaixo. Nos exemplos a seguir, assuma que A, B e C representam variáveis categóricas.

tabela

É possível gerar tabelas de freqüência usando a função tabela( ), tabelas de proporções usando a função prop.table( ), e freqüê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 baseadas em 3 ou mais variáveis categóricas. Neste caso, use a função ftable( ) para imprimir os resultados de forma mais atrativa.

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

Tabela ignora os valores em falta. Para incluir NA como categoria em contagens, inclua a opção exclude=NULL se a variável for um vetor. Se a variável for um fator você tem que criar um novo fator usando o newfactor <- factor(oldfactor, exclude=NULL).

xtabs

A função xtabs( ) permite que você crie tabulações cruzadas usando a 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 estiver incluída no lado esquerdo da fórmula, assume-se que é um vector de frequências (útil se os dados já tiverem sido tabulados).

Crosstable

A função CrossTable( ) no pacote gmodels produz tabulações cruzadas modeladas após PROC FREQ em SAS ou CROSSTABS em SPSS. Tem uma grande variedade de opções.

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

Existem opções para relatar percentagens (linha, coluna, célula), especificar casas decimais, produzir testes de independência Chi-quadrado, Fisher e McNemar, relatar valores esperados e residuais (pearson, padronizado, ajustado padronizado), incluir valores em falta como válidos, anotar com títulos de linha e coluna, e formatar como saída no estilo SAS ou SPSS!
Veja ajuda(CrossTable) para detalhes.

Testes de Independência

Teste Qui-quadrado

Para tabelas de 2 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 assimptótica do qui-quadrado da estatística do teste. Opcionalmente, o p-valor pode ser derivado através da simulação de Monte Carlo.

Fisher Exact Test

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

Teste Mantel-Haenszel

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

Modelos Log-lineares

É possível usar a função loglm( ) no pacote MASS para produzir modelos log-lineares. Por exemplo, vamos assumir que temos 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 Mutual: A, B, e C são independentes aos pares. loglm(~A+B+C, mytable)

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

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

Não Interação de Três Vias loglm(~A+B+C+A*B+A*C+B*C, mytable)

Martin Theus e Stephan Lauer escreveram um excelente artigo sobre Visualização de Modelos Loglineares, usando gráficos em mosaico.

Medidas de Associação

A função assocstats(mytable) no pacote vcd calcula o coeficiente phi, coeficiente de contingência, e o V de Cramer para uma tabela rxc. A função kappa(mytable) no pacote vcd calcula a kappa de Cohen e a kappa ponderada para uma matriz de confusão. Veja o artigo de Richard Darlington sobre Medidas de Associação em Tabelas de Crosstab para uma excelente revisão destas estatísticas.

Visualização de resultados

Utilizar gráficos de barras e pizza para visualização de freqüências em uma dimensão.

Utilizar o pacote vcd para visualização de relações entre dados categóricos (ex.: mosaico e gráficos de associação).

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

Para praticar fazer estes gráficos, tente o curso de visualização de dados em DataCamp.

Convertendo tabelas de frequência para um arquivo plano “original”

Finalmente, pode haver momentos em que você precisará da moldura de dados “arquivo plano” original em vez da tabela de frequência. Marc Schwartz forneceu o código na lista de discussão Rhelp para converter uma tabela de volta para um quadro de dados.

Leave a Reply