Visualização de vários "histogramas" (gráficos de barras)

9

Estou com dificuldades para selecionar a maneira correta de visualizar dados. Digamos que temos livrarias que vendem livros , e todo livro tem pelo menos uma categoria .

Para uma livraria, se contarmos todas as categorias de livros, adquirimos um histograma que mostra o número de livros que se enquadram em uma categoria específica para essa livraria.

Quero visualizar o comportamento da livraria, quero ver se eles favorecem uma categoria em detrimento de outras categorias. Não quero ver se eles estão favorecendo a ficção científica todos juntos, mas quero ver se estão tratando todas as categorias igualmente ou não.

Eu tenho ~ 1 milhão de livrarias.

Eu pensei em 4 métodos:

  1. Prove os dados, mostre apenas 500 histogramas da livraria. Mostre-os em 5 páginas separadas usando a grade 10x10. Exemplo de uma grade 4x4:

    vários histogramas 1

  2. Igual ao nº 1. Porém, desta vez, classifique os valores do eixo x de acordo com a contagem decrescente; portanto, se houver um favor, ele será visto facilmente.

  3. Imagine juntar os histogramas no 2 como um baralho e mostrá-los em 3D. Algo assim:
    Histograma 3D

  4. Em vez de usar o terceiro eixo processando cores para representar cores, use um mapa de calor (histograma 2D): Histograma 2D
    se geralmente as livrarias preferem algumas categorias a outras, ele será exibido como um bom gradiente da esquerda para a direita.

Você tem outras idéias / ferramentas de visualização para representar vários histogramas?

nimcap
fonte
4
Eu acho que você quer dizer gráficos de barras em vez de histogramas
Rob Hyndman
@ Rob: O histograma não é um tipo especial de gráfico de barras que representa uma distribuição de frequência? Estou tentando visualizar frequências de categoria para muitas livrarias.
Nimcap 5/08
11
@nimcap Não, porque o histograma está sobre uma variável contínua e a categoria de livro é uma variável categórica.
@mbq Digamos que uma livraria tenha 3 livros, e suas categorias são: B1: [c1, c2, c3] B2: [c1, c3] B3: [c1, c4]. Quando agregamos as contagens de categorias, obtemos [c1 x 3, c2 x 1, c3 x 2, c4 x 1]. Isso não é suficiente para gerar um histograma?
Nimcap 5/08
2
@ nimcap Não, basta gerar um gráfico de barras. O histograma pode ser feito, por exemplo, pelo preço de um livro.

Respostas:

12

Como você descobriu, não há respostas fáceis para sua pergunta!

Presumo que você esteja interessado em encontrar livrarias estranhas ou diferentes? Se esse for o caso, você poderá tentar coisas como PCA (consulte a página de análise de cluster da wikipedia para obter mais detalhes).

Para lhe dar uma ideia, considere este exemplo. Você tem 26 livrarias (com os nomes A, B, .. Z). Todas as livrarias são semelhantes, exceto:

  1. A loja Z vende apenas alguns livros de história.
  2. As lojas OY vendem mais livros de romance do que a média.

Uma parcela dos componentes principais destaca essas lojas para uma investigação mais aprofundada.

Aqui está um exemplo de código R:

> d = data.frame(Romance = rpois(26, 50), Horror = rpois(26, 100), 
               Science = rpois(26, 75), History = rpois(26, 125))
> rownames(d) = LETTERS
#Alter a few shops
> d[15:25,][1] = rpois(11,150)
> d[26,][4] = rpois(1, 10)
#look at the data
> head(d, 2)
       Romance Horror Science History
 A      36    107      62     139
 B      47     93      64     118
> books.PC.cov = prcomp(d)
> books.scores.cov = predict(books.PC.cov)
# Plot of PC1 vs PC2
> plot(books.scores.cov[,1],books.scores.cov[,2],
       xlab="PC 1",ylab="PC 2", pch=NA)
> text(books.scores.cov[,1],books.scores.cov[,2],labels=LETTERS)

Isso fornece o seguinte gráfico:

Gráfico de PCA http://img265.imageshack.us/img265/7263/tmplx.jpg

Notar que:

  1. A loja z é um ponto distante.
  2. As outras lojas formam dois grupos distintos.

Outras possibilidades

Você também pode olhar para o GGobi , eu nunca o usei, mas parece interessante.

csgillespie
fonte
Obrigado pela sua resposta valiosa. É difícil descrever a situação, mesmo na minha língua nativa :) Deixe-me tentar. Não estou interessado se as livrarias estão favorecendo categorias específicas, mas quero ver se elas favorecem categorias. Na verdade, é isso que estou esperando. Digamos que eu tenho 3 livrarias (B1, B2, B3) e 4 categorias (C1, C2, C3, C4). Estes são os dados de vendas: B1 (1, 1, 20, 20) B2 (90, 1, 1, 1), B3 (1, 1, 1, 30). Observando esses dados, posso dizer que eles favorecem algumas categorias para outras. Mas se os dados eram como B1 (20, 30, 20, 20) B2 (90, 100, 100, 100), B3 (30, 30, 40, 40), não posso dizer isso.
Nimcap 5/08
No meu exemplo, as lojas OY favorecem os livros de romance. É por isso que essas lojas estão em um grupo distinto na trama do PC.
Csgillespie
2
Votei isso como uma boa resposta geral, mas como uma resposta prática, lidar com tantos pontos de dados será brutal.
John
11
+1 Isso certamente não é o que o OP deseja, mas certamente é o que ele / ele deve desejar.
11
+1 Bom exemplo de um aplicativo "pé no chão" do PCA.
Nico
3

Eu sugeriria algo que não tem um nome definido (provavelmente "plot paralelo") e se parece com isso:

texto alternativo

Basicamente, você plota todas as contagens de todas as livrarias como pontos nas categorias listadas no eixo xe conecta os resultados de cada livraria a uma linha. Ainda assim, isso pode estar muito confuso para linhas de 1 milhão. O conceito vem de GGobi, que já foi mencionado por csgillespie.

Glorfindel
fonte
11
Os gráficos paralelos dependem muito da ordem "correta" de variáveis, portanto, para muitas categorias, isso se tornará tedioso. E a fonte correta parece ser A.Inselberg, 1981.
Benjamin Bannier
3
Eles são chamados de gráficos de coordenadas paralelas: en.wikipedia.org/wiki/Parallel_coordinates
Simon Byrne
@ Simon obrigado; @honk Eu concordo, esta é uma das razões pelas quais não as uso.