Qual é uma boa maneira de representar graficamente um número muito grande de pontos de dados emparelhados?

9

No meu campo, a maneira usual de plotar dados emparelhados é como uma série de segmentos finos de linhas inclinadas, sobrepondo-os à mediana e ao IC da mediana para os dois grupos:

insira a descrição da imagem aqui

No entanto, esse tipo de gráfico se torna muito mais difícil de ler à medida que o número de pontos de dados se torna muito grande (no meu caso, tenho da ordem de 10000 pares):

insira a descrição da imagem aqui

Reduzir o alfa ajuda um pouco, mas ainda não é ótimo. Enquanto procurava por uma solução, me deparei com este documento e decidi tentar implementar um 'gráfico de linhas paralelas'. Novamente, funciona muito bem para um pequeno número de pontos de dados:

insira a descrição da imagem aqui

N

insira a descrição da imagem aqui

Suponho que eu possa mostrar separadamente as distribuições para os dois grupos, por exemplo, com boxplots ou violinos, e traçar uma linha com barras de erro no topo, mostrando as duas medianas / ICs, mas eu realmente não gosto dessa idéia, pois ela não transmite a natureza emparelhada dos dados.

Também não estou muito entusiasmado com a idéia de um gráfico de dispersão 2D: eu preferiria uma representação mais compacta e, idealmente, uma na qual os valores para os dois grupos sejam plotados no mesmo eixo. Por uma questão de integridade, eis a aparência dos dados como uma dispersão 2D:

insira a descrição da imagem aqui

Alguém conhece uma maneira melhor de representar dados emparelhados com um tamanho de amostra muito grande? Você poderia me vincular a alguns exemplos?

Editar

Desculpe, eu claramente não fiz um trabalho bom o suficiente para explicar o que estou procurando. Sim, o gráfico de dispersão 2D funciona e há muitas maneiras pelas quais ele pode ser melhorado para transmitir melhor a densidade de pontos - eu poderia codificar por cores os pontos de acordo com uma estimativa de densidade do kernel, eu poderia fazer um histograma 2D , Eu poderia traçar contornos em cima dos pontos etc., etc ...

No entanto, acho que isso é um exagero para a mensagem que estou tentando transmitir. Eu realmente não me importo em mostrar a densidade 2D de pontos em si - tudo o que preciso fazer é mostrar que os valores para 'barras' são geralmente maiores que os valores para 'pontos', da maneira mais simples e clara possível e sem perder a natureza emparelhada essencial dos dados. Idealmente, gostaria de plotar os valores emparelhados para os dois grupos ao longo dos mesmos eixos, em vez de ortogonais, pois isso facilita a comparação visual dos mesmos.

Talvez não haja opção melhor do que um gráfico de dispersão, mas eu gostaria de saber se existem alternativas que possam funcionar.

ali_m
fonte
11
Você já tentou plotar os valores correspondentes no eixo barhorizontal e dotvertical como um gráfico de dispersão?
Till Hoffmann
@TillHoffmann Sim, eu mencionei isso no final da minha pergunta. É provavelmente a melhor opção que tenho no momento, mas prefiro uma representação mais compacta e, idealmente, uma que represente os valores de ambos os grupos ao longo do mesmo eixo (talvez eu esteja sendo excessivamente exigente ...). Vou adicionar o gráfico de dispersão à minha pergunta.
ali_m
desculpe, eu senti falta disso. Como você está gerando seus dados sintéticos no momento?
Till Hoffmann
2
Você poderia explicar o que você quer dizer com uma representação "compacta"? O gráfico de dispersão é claramente superior a todos os outros em termos de mostrar os relacionamentos, bem como dados incomuns individualmente em uma pequena área; ele só cresce melhor à medida que o tamanho do conjunto de dados aumenta. (10.000 não é grande para um gráfico de dispersão.) Você menciona tantos gráficos diferentes que é impossível deduzir o que você realmente precisa. Diga-nos o objetivo da sua visualização: exatamente que tipo de informação você espera aprender ou transmitir a outras pessoas? Com que precisão e rapidez você pretende que seja percebido e compreendido?
whuber
11
@whuber Desculpe por não estar claro. O que eu esperava era uma maneira de representar os dados de modo que os valores para ambos os grupos fossem plotados ao longo dos mesmos, em vez de eixos ortogonais (como estão nos gráficos de 'linha inclinada' e 'linha paralela'). A mensagem é muito simples - que os valores para as 'barras' são geralmente mais altos que os dos 'pontos'. Além disso, não me importo muito em representar a densidade da distribuição, embora eu queira transmitir que há um grande número de pares na amostra.
ali_m

Respostas:

7

Dado como eu entendo seu objetivo, eu apenas calculo as diferenças emparelhadas ( bars - dots) e, em seguida, plota essas diferenças em um gráfico de estimativa de densidade de histograma ou kernel. Você também pode adicionar qualquer combinação de (1) uma linha vertical correspondente à diferença zero (2) qualquer escolha de percentis.

Isso destacaria qual parte dos dados barsexcede dotse geralmente quais são as diferenças observadas.

(Estou supondo que você não está interessado em exibir os valores reais, matérias da barse dotsna mesma trama.)

Poder-se-ia também traçar confiança ou intervalos credíveis posteriores para indicar se essas diferenças são significativas. (H / T @MrMeritology!)

Sean Easter
fonte
Acrescentando a esta resposta: você também pode traçar intervalos de confiança para as diferenças emparelhadas, indicando visualmente se as diferenças são significativas ou não.
23415 MrMeritology
yB=μ+offset(yA)+Δ(yAy¯A
2

yByAyA

yB=μ+offset(yA)+Δ(yAy¯A)+ϵ
+Δ2(yAy¯A)2

Graficamente, você pode mostrar as linhas como mostrado, com um fator alfa reduzido (*), talvez reduzindo ainda mais, mostrando apenas uma amostra aleatória de linhas. Então você pode colorir as linhas de acordo com a inclinação ...

Para gráficos de Bland-Altman, mencionados em um comentário de Nick Cox, consulte, por exemplo, um exemplo de Acordo entre métodos com várias observações por indivíduo ou consulte a tag .

(*) o fator alfa aqui é um parâmetro gráfico que torna transparentes os pontos no gráfico, de modo que os primeiros pontos plotados não são totalmente ocultados pela plotagem posterior.

kjetil b halvorsen
fonte
11
1

Eu preferiria o gráfico de dispersão 2D. Eu desenharia a linha de referência em cinza claro para mais contraste na região cheia. Para aliviar a aglomeração, desenhe os marcadores sem borda, reduza ainda mais o alfa, reduza o tamanho do marcador.

Dito isto, se você está mais interessado nos pares típicos do que nas asas da distribuição, tente plotar a soma acumulada da dotsversus a soma acumulada da bars. O enredo ainda é 2D, mas com muito menos tinta. Para salvar também a área de plotagem, você pode girar o traço em 45 ° para que o quadro sirva como a direção de referência.

Esse gráfico também mostraria qualquer tendência nos dados. Se se sabe que o processo é estacionário, classifique os pares por, por exemplo, sua média geométrica sqrt(bars*dots),.

Rainald62
fonte
0

Eu recomendaria traçar as linhas que você possui para a mediana e os quartis, ou quantos percentis você gostaria que fosse. A mediana pode permanecer mais espessa / mais discernível do que outras linhas de percentis. Isso ajudaria a preservar a capacidade de ver como os dados se comportam na distribuição, sem comprometer a simplicidade e a familiaridade do gráfico atualmente usado em seu campo.

Além disso, com um tamanho de amostra tão alto, a tendência média ou mediana com barras de erro provavelmente seria suficiente, pois você desfrutaria tão bem do teorema do limite central. O campo biomédico também se baseia nesses gráficos de linhas emparelhados, mas esse geralmente é o caso, porque o tamanho da amostra pode estar na ordem de 10 a 20, por isso é importante visualizar pontos de alavancagem em potencial.

alce
fonte
0

Minha primeira sugestão é um gráfico de dispersão.

Se 10.000 pontos distribuídos de maneira desigual em sua plotagem ainda forem uma nuvem vaga, considere um mapa de calor. A cor do pixel em x = 10,5, y = 11,5 indicaria quantas vezes o valor entre 10,45 e 10,55 é mapeado para um valor entre 11,45 e 11,55: 0 = branco = RGB (255.255.255), 1 = azul = RGB (0, 0,255), 2 = RGB (1,0.254), ... 256 e acima = RGB (255,0,0) = vermelho

Dirk Horsten
fonte
Isso basicamente me dá o mesmo tipo de representação que uma dispersão 2D, exceto com menos resolução. Posso acabar fazendo algo assim, mas esperava idealmente uma representação mais compacta que plote os valores para os dois grupos no mesmo eixo, em vez de eixos ortogonais.
22415 Ali_m
11
Olhando para o gráfico de dispersão, vejo que você está perdendo muitas informações no centro do seu "ponto de tinta". Você precisa fazer algo, aplicando uma transformação (logaritmo?) Ou com o mapa de saúde que sugiro.
Dirk Horsten
Desculpa! Sua sugestão é totalmente razoável - simplesmente não fiz um trabalho bom o suficiente para explicar o que estou procurando. Sim, um gráfico bidimensional (dispersão, mapa de calor, gráfico de contorno etc.) faria um bom trabalho em representar a densidade dos pontos de amostra, mas acho que são mais informações do que realmente preciso exibir. Tudo o que preciso fazer é mostrar que os valores para 'barras' são geralmente mais altos que os valores para 'pontos'. Estou procurando a maneira mais simples possível de mostrar isso, preservando a natureza emparelhada dos dados.
ali_m
A diagonal no gráfico de catter não indica a direção suficientemente bem?
Dirk Horsten
Não, mas talvez eu tenha expectativas razoáveis :-)
ali_m