Eu tenho um conjunto de dados com três variáveis categóricas e quero visualizar o relacionamento entre os três em um gráfico. Alguma ideia?
Atualmente, estou usando os três gráficos a seguir:
Cada gráfico refere-se a um nível de depressão da linha de base (leve, moderado, grave). Então, em cada gráfico, analiso a relação entre tratamento (0,1) e melhora da Depressão (nenhuma, moderada, substancial).
Esses três gráficos funcionam para ver a relação de três vias, mas existe uma maneira conhecida de fazer isso com um gráfico?
r
data-visualization
categorical-data
Alejandro Ochoa
fonte
fonte
Respostas:
Este é um conjunto de dados interessante para tentar representar graficamente, em parte porque não é realmente categórico. Ambos os fatores de três níveis são ordinais e existe uma possível interação entre eles (presumivelmente, é mais difícil de
mild
baseline
tersubstantial
improvement
- ou talvezsubstantial
improvement
signifique algo diferente para cada umbaseline
).Com várias variáveis, geralmente não há uma única exibição que mostre todos os recursos com os quais você pode se interessar. Alguns fatores serão mais fáceis de comparar do que outros. Eu acho que sua visão original é boa e seria melhor com as sugestões de Nick Cox: remover legendas duplicadas e usar uma escala de cores ordinais.
Se você for mais interessante em ver a diferença entre os tratamentos, enfatize a alteração usando um gráfico de área empilhada em vez de barras empilhadas.
Geralmente, receio o empilhamento em geral, porque é mais difícil ler os valores médios, mas reforça a natureza da soma fixa desses dados. E facilita a leitura da soma
moderate
+substantial
se isso for relevante. Eu mudei a ordem dosimprovement
níveis para que mais alto seja melhor para a frequência.Sem empilhamento, o equivalente é um gráfico de inclinação.
É mais fácil ler cada nível, mas é mais difícil entender a interação. Você deve ter em mente que a terceira linha depende diretamente das outras duas.
Dada a natureza ordinal dos dados, pode ser útil converter o
improvement
valor em uma pontuação numérica, como costuma ser feito com os dados do Likert . Por exemplo,none=0
,moderate=1
,substantial=2
. Em seguida, você pode representar graficamente essa variável em uma escala contínua. A desvantagem é que você precisa encontrar uma pontuação razoável (por exemplo, talvez 0, 1 e 5 seria uma representação mais verdadeira).Colophon : esses gráficos foram feitos com o recurso Graph Builder no pacote de software JMP (que eu ajudo a desenvolver). Embora feito de maneira interativa, um script, por exemplo, para o gráfico de área, sem as personalizações de cores, é:
fonte
Primeiro, aqui está minha leitura do gráfico fornecido dos dados para quem deseja jogar (experimente, se quiser). NB erros off-by-one são certamente possíveis, assim como erros grosseiros.
Aqui está uma reformulação do design original. Um detalhe dos dados originais simplifica: o número de pessoas em cada uma das combinações de preditores é o mesmo; portanto, as frequências de plotagem e as porcentagens de plotagem são iguais. Aqui, em vez de um gráfico de barras empilhado (subdividido, segmentado), separamos as barras em um gráfico de barras bidirecional ou no design de plotagem de tabela.
Grande parte dos detalhes gráficos é exatamente isso, detalhe. Várias pequenas fraquezas em um gráfico podem prejudicar sua eficácia e várias pequenas melhorias também podem ajudar.
Para soletrar:
Aqui não são necessários três painéis, com repetição de eixos, legenda e texto.
Uma lenda é sempre uma maldição e uma bênção, obrigando o leitor a ir e vir mentalmente (ou memorizar a lenda, não algo que apele, por mais fácil que seja). O texto informativo junto às barras é mais fácil de seguir.
O código de cores da salada de frutas é dispensável. Parece arbitrário também: a melhoria "substancial" é um grande negócio, mas acho que até o amarelo forte tem uma cor suave. Mas não precisamos de cores quando temos texto para explicar.
Embora alguns gritem horrorizados por violar a distinção entre Figura e Tabela, também podemos mostrar as frequências. É útil poder pensar em "4 pessoas nesta categoria".
Há aqui uma homenagem à plotagem tradicional de resposta no eixo vertical, assim como no original.
Tudo isso dito, é difícil ver muita estrutura nesses dados. Nesse caso, também é difícil compartilhar a culpa entre (a) dados sem muita estrutura e (b) os pontos fracos de um design gráfico por escolher não apenas efeitos preditores, mas também possíveis interações. O tratamento parece menos importante que a condição basal. Mas então, se a linha de base foi "moderada", quanto espaço havia para uma melhoria "substancial"? Vou parar por aí para parar de me fazer de bobo quando o estudo dos dados de saúde mental certamente não é uma especialidade, especialmente se os dados forem falsos. Mas se forem reais, poderíamos fazer um tamanho de amostra muito maior. (Normalmente dizemos isso, mas lá está você.)
EDIT O gráfico pode naturalmente ser complicado por um esquema de cores ordinais, se desejado:
Para o registro: os gráficos usavam o código Stata, incluindo meu próprio programa para
tabplot
download usandossc inst tabplot
.fonte
Gosto de usar um eixo x de dois níveis para dados como este. Portanto, suas categorias de eixo x para um único gráfico podem ser:
... com as mesmas contagens por categorias [nenhum / moderado / substancial] barras de histograma.
fonte
A plotagem Mosaic não é especialmente projetada para esse fim?
Em R seria como
Cada variável categórica vai para uma extremidade do quadrado, que é subdividida por seus rótulos. (Assim, se você subdividir cada aresta em apenas um nível, no máximo 4 variáveis categóricas podem ser representadas. IMHO, além de 3, fica confuso e difícil de interpretar). O tamanho dos retângulos é proporcional à frequência. Essa é a principal idéia por trás da plotagem de mosaico e é a mesma nesta resposta e na resposta de Paweł Kleka.
As diferenças estão nos layouts desses retângulos e "detalhes" fornecidos por um pacote R específico usado para esse tipo de plotagem. Como você vê na resposta de Paweł Kleka, o
graphics
pacote subdivide a borda superior em 2 níveis, em vez de usar a borda direita. Useivcd
pacote com opções padrão, para que a cor indique o grau de associação entre as variáveis. Cinza significa que os dados são consistentes com (você não pode rejeitar a hipótese de) independência variável. Azul significa que existe associação positiva entre a linha de base "grave" e a melhoria "substancial" para os tratamentos "0" e "1". (Surpresa, surpresa! Traduzo da seguinte forma: se você tiver uma depressão severa, provavelmente ficará substancialmente melhor com um tratamento ou não.Pode-se ajustar o enredo de acordo com suas necessidades, veja, por exemplo, aqui . O pacote também possui várias vinhetas, google "exemplo de mosaico vcd" (como acabei de fazer). O artigo da Wikipedia citado no início também explica como construir esse tipo de enredo e intuição por trás dele.
Quando você compara minha foto com a da resposta de Paweł Kleka, não importa, o 'tratamento' fica na borda esquerda de cada foto. Você pode alterar facilmente a localização da borda alterando a última linha do meu código e ajustando o layout de acordo com suas necessidades. A prática comum é que, à esquerda, vá a variável mais importante ou a variável com o menor número de rótulos. Você também pode alterar a ordem dos rótulos (por exemplo, para que, na borda direita, o pedido seja "nenhum moderado substancial"), tornando o fator correspondente variável em R ordenado e ajustando seus níveis.
fonte
Sugiro usar enredo em mosaico
fonte
Uma opção que eu consideraria é usar conjuntos paralelos. Algumas das comparações serão mais fáceis do que outras, mas você ainda pode ver as relações entre três variáveis categóricas.
Aqui está um exemplo com os dados do Titanic Survival:
Em R (dadas suas tags), usei o ggparallel para implementá-lo. Algumas pessoas discutiram aqui no CV como implementá-lo de outras maneiras.
fonte
As informações também podem ser transmitidas usando o seguinte gráfico de linhas simples:
A melhoria é mostrada por diferentes tipos de linha, enquanto o grupo de linha de base é mostrado em cores. Estes e o parâmetro do eixo x (tratamento aqui) também podem ser trocados, se desejado.
fonte
Semelhante aos conjuntos paralelos, conforme publicado por nazareno acima, você pode usar gráficos aluviais que estão disponíveis no pacote R aluvial. http://www.r-bloggers.com/alluvial-diagrams/
fonte