Qual é a melhor visualização para tabelas de contingência?

22

Qual é o melhor gráfico, do ponto de vista estatístico, para mostrar uma tabela de contingência , que normalmente está sendo analisada pelo teste do qui-quadrado? É um gráfico de barras esquecido, gráfico de barras empilhado, mapa de calor, plotagem de contorno, plotagem de dispersão com tremulação, plotagem de várias linhas ou outra coisa? Deve-se mostrar valores absolutos ou porcentagens?

Edit: Ou como o @forecaster sugere nos comentários, a tabela de números é, por si só, uma trama simples e deve ser suficiente.

rnso
fonte
4
Às vezes, a tabela de dados é o melhor método de visualização versus plotagens. As tabelas de contingência são um exemplo clássico disso.
forecaster
1
Ponto importante, embora eu não concorde que seja sempre a melhor opção.
rnso
1
Por isso eu disse "algumas vezes". Eu recomendaria, Stephen Few's Mostre-me os números que tem uma seção inteira dedicada às tabelas.
forecaster
1
bem, o melhor método depende do que você deseja mostrar, qual é o tamanho da tabela, sem alguns detalhes, isso é amplo!
precisa saber é o seguinte
3
A maioria dos stats.stackexchange.com/questions/56322/… parece pertinente aqui.
Nick Cox

Respostas:

9

Não haverá uma solução única para todos aqui. Se você possui uma tabela muito simples (por exemplo, ), simplesmente apresentar a tabela é provavelmente o melhor. Se você quer uma figura real, os gráficos em mosaico (como sugere o @xan) provavelmente são um bom lugar para começar. Existem outras opções análogas às plotagens em mosaico, incluindo plotagens de peneiras, plotagens de associação e plotagens dinâmicas de pressão (veja minha pergunta aqui: Alternativa às plotagens de peneiras / mosaicos para tabelas de contingência ); O livro de Michael Friendly, Visualizando dados categóricos , seria um bom recurso (baseado em SAS) para este tópico e o pacote vcd é um bom recurso para implementar essas idéias em R. 2×2

Como as tabelas têm um número maior de linhas e colunas, no entanto, elas se tornam mais difíceis de usar, na minha opinião. Um tipo diferente de opção de visualização é executar / plotar uma análise de correspondência . Uma análise de correspondência é análoga à execução de uma análise de componentes principais nas linhas e nas colunas da tabela de contingência. Em seguida, ambos são plotados em conjunto com um biplot. Aqui está um exemplo baseado em R usando os dados da resposta do @ xan:

library(ca)
tab = as.table(rbind(c(28, 4,  0, 56),
                     c(38, 5,  9, 10),
                     c( 6, 6, 14, 13) ))
names(dimnames(tab)) = c("activity", "period")
rownames(tab)        = c("feed", "social", "travel")
colnames(tab)        = c("morning", "noon", "afternoon", "evening")
tab
#         period
# activity morning noon afternoon evening
#   feed        28    4         0      56
#   social      38    5         9      10
#   travel       6    6        14      13
plot(ca(tab))

insira a descrição da imagem aqui

Para interpretar esse gráfico, quanto mais próximos forem os dois pontos do mesmo tipo, mais semelhantes serão os dois perfis de linha / coluna. E quanto mais próximos dois pontos de tipos diferentes, maior a probabilidade de sua massa estar na célula representando sua interseção.

Em R há o pacote ca ; esta vinheta ( pdf ) também pode ser útil.

- Reinstate Monica
fonte
Muito útil. Aparentemente, falha com valores pequenos, por exemplo: tt = with (mtcars, table (fator (engrenagem), fator (vs))); plot (ca (tt)); Erro em X [, dim]: Subscrito fora dos limites
rnso
Isso ocorre porque um dos fatores (ou seja factor(vs)) possui apenas dois níveis; você precisa de pelo menos três. Tente ttt = with(mtcars, table(factor(gear), factor(cyl))); plot(ca(ttt)).
gung - Restabelece Monica
Muito boa exibição de relações entre diferentes fatores.
rnso
Ou você pode mostrar a tabela após reordenar linhas e colunas na ordem das pontuações da análise de correspondência.
b Kjetil Halvorsen
Idéia interessante, @kjetilbhalvorsen. Não tenho certeza de como obter isso do caobjeto, então o codifiquei do zero. A menos que eu tenha cometido um erro, você reordena as linhas c(1,3,2)e as colunas c(4,1,3,2). Tendo feito isso, não tenho certeza do que devo ver aqui. O que você tem em mente?
gung - Restabelece Monica
11

Visuais diferentes serão melhores para destacar recursos diferentes, mas os gráficos do Mosaic funcionam bem para uma visão geral (verificando se algo se destaca). Talvez seja isso que você quis dizer com trama de barra esquivada. Como a maioria das opções, elas não são simétricas, pois representam frequências relativas melhores em uma dimensão do que na outra. Uma característica interessante é que as frequências marginais também são representadas.

insira a descrição da imagem aqui

insira a descrição da imagem aqui

xan
fonte
Isso é bom. Os números e as proporções são representados. Os números também podem ser colocados na trama. Se a ordem do item do eixo x estiver organizada, ela ficará ainda melhor. Por esquivo, eu quis dizer um gráfico de barras comum com categorias lado a lado, em vez de empilhadas umas sobre as outras (consulte position = 'dodge' nesta página: r-bloggers.com/using-r-barplot-with-ggplot2 ).
rnso
1
+1 Esse design geralmente funciona muito bem para dados relativamente simples ; inversamente, descobri que também rapidamente se torna difícil pensar em dados mais complicados, apesar de muita ênfase na literatura em sua extensibilidade a tabelas de contingência de dimensão arbitrária. Ainda assim, nenhum design funciona bem nessas circunstâncias. Um pequeno ponto neste exemplo é que você parece ter aceitado a ordem alfabética padrão "tarde" ... "meio-dia" oferecida pelo seu programa, enquanto preservar a ordem do tempo parece uma opção mais natural.
Nick Cox
8

Concordo que o "melhor" gráfico não existe independentemente do conjunto de dados, leitores e finalidade. Para duas variáveis ​​medidas, os gráficos de dispersão são indiscutivelmente o design que deixa todos os outros, exceto para fins específicos, mas nenhum líder de mercado é evidente para dados categóricos.

Meu objetivo aqui é apenas mencionar um método simples, muitas vezes redescoberto ou reinventado, mas, mesmo assim, muitas vezes esquecido mesmo em monografias ou livros didáticos que cobrem gráficos estatísticos.

Exemplo primeiro, cobrindo os mesmos dados publicados por xan:

insira a descrição da imagem aqui

Se um nome é desejado, como costuma ser, este é um gráfico de barras de duas maneiras (neste caso). Não vou catalogar outros termos aqui, exceto que o gráfico de barras múltiplo é uma alternativa comum com sabor semelhante. (Minha pequena objeção ao "gráfico de barras múltiplo" é que o "múltiplo" não exclui os gráficos de barras empilhados lado a lado ou muito comuns, enquanto o "twoway" para mim implica mais claramente um layout de linha e coluna, embora por sua vez pode levar exemplos para deixar isso claro.)

Prós e contras para esse tipo de enredo também são simples, mas vou explicar alguns. Como eu gosto desse design (que remonta pelo menos aos anos 30), outros podem querer acrescentar críticas mais nítidas.

+1. A ideia é facilmente compreendida , mesmo por grupos não técnicos. As alturas ou comprimentos das barras codificam frequências neste exemplo. Em outros exemplos, eles podem codificar porcentagens calculadas da maneira que desejar, resíduos, etc.

+2. A estrutura de linha e coluna corresponde à de uma tabela . Você também pode adicionar valores numéricos. Quantidades muito pequenas e até zeros implícitos são claramente evidentes, o que nem sempre é o caso de outros projetos (por exemplo, gráficos de barras empilhados, gráficos em mosaico). A rotulagem de linhas e colunas geralmente é mais eficiente do que adicionar uma chave ou legenda, com o mental "ir e vir" que isso exige. Assim, esse design hibrida idéias de gráficos e tabelas, o que aparentemente incomoda alguns leitores; por outro lado, eu argumentaria que fortes distinções entre Figuras e Tabelas são apenas ressacas históricas, obsoletas agora que os pesquisadores podem preparar seus próprios documentos e não precisam depender de designers, compositores e impressoras.

+3. Extensões para projetos de três vias e superiores são fáceis em princípio . Coloque duas ou mais variáveis ​​como variáveis ​​compostas em um ou ambos os eixos ou forneça uma matriz desses gráficos. Naturalmente, quanto mais complicado o design, mais complicada é a interpretação.

+4. O design permite claramente variáveis ​​ordinais em qualquer eixo. A ordem pode ser expressa (por exemplo) por sombreamento apropriado, bem como a ordem das categorias nesse eixo. A ordem das categorias nos eixos pode ser determinada pelo seu significado ou melhor determinada pelas frequências; a ordem alfabética de acordo com os rótulos de texto pode ser um padrão, mas nunca deve ser a única opção considerada.

-1. Por ter um design geral, o enredo pode ser menos eficiente em mostrar certos tipos de relacionamentos . Em particular, um enredo em mosaico pode deixar muito distantes as partidas da independência. Por outro lado, quando os relacionamentos entre variáveis ​​categóricas são complicados ou pouco claros, normalmente nenhum gráfico é bom para mostrar mais do que esse fato fraco.

-2. De certa forma, o design é ineficiente no uso do espaço , deixando espaço para todas as combinações cruzadas, independentemente de sua ocorrência ou frequência. Este é o vício do mesmo princípio considerado uma virtude. O design particular acima dos espaços categoriza igualmente, independentemente de sua frequência; sacrifício que muitas vezes sacrifica rótulos marginais legíveis, que eu valorizo ​​muito. Neste exemplo, os rótulos de texto são muito curtos, mas isso está longe de ser típico.

Nota: os dados do xan parecem apenas ser inventados, portanto, não tentarei uma interpretação mais do que tentamos em outras respostas. Mas alguma sabedoria caseira merece a última palavra aqui: o melhor design para você é aquele que melhor transmite a você e a seus leitores a estrutura de alguns dados reais com os quais você se importa.

Outros exemplos incluem

Como você pode visualizar a relação entre três variáveis ​​categóricas?

Gráfico para relacionamento entre duas variáveis ​​ordinais

Nick Cox
fonte
1
+1 para outra opção viável e uma ótima discussão. Deixe-me fazer uma pergunta sobre gráficos de barras bidirecionais / apontar para outra possível desvantagem: Há uma 'caixa' não marcada, mas claramente perceptível, dentro da qual as barras podem ser plotadas. Quando a barra se aproxima do topo da caixa, ela atinge 100%. Como esse valor é determinado? (NB, as tabelas de contingência são sempre multinomiais em algum sentido, com um total conhecido.) Fazer o somatório das linhas ou colunas da parte superior da caixa promoverá inferências perceptivas diferentes. (Não parece que a soma da tabela é usada, pois muitas barras seriam pequenas demais para diferenciar.)
gung - Restabelece Monica
1
@gung Obrigado. Posso comentar sobre meu próprio programa Stata, usado aqui e em meus exemplos em outros lugares no CV. O programa é tabplotdo SSC. A altura das barras é necessariamente uma fração da altura da barra mais alta ou mais longa; o espaço disponível para isso é determinado por quantas linhas estão sendo mostradas. O usuário pode substituir o tamanho do espaço padrão, mas corre o risco de as barras se tocarem ou ocluirem. Se as barras puderem ser negativas e positivas, as coisas não serão mais fáceis. Eu imagino que a mesma restrição morde com qualquer outro programa. Em resumo, as barras que não se tocam implicam espaço em branco!
Nick Cox
8

Para complementar as respostas de @ gung e @ xan, aqui está um exemplo de gráficos de mosaico e associação usando vcdem R.

> tab
        period
activity morning noon afternoon evening
  feed        28    4         0      56
  social      38    5         9      10
  travel       6    6        14      13

Para obter os gráficos:

require(vcd)
mosaic(tab, shade=T, legend=T)
assoc(tab, shade=T, legend=T)

insira a descrição da imagem aqui

insira a descrição da imagem aqui

Ambas intuitivamente apresentam desvios das freqüências esperadas ... O padrão é o modelo de independência mútua , mas pode ser alterado (por exemplo, para independência conjunta, se houver uma variável de resposta clara) através do expectedargumento.

Veja também:

landroni
fonte