Wizualizacja wielu „histogramów” (wykresy słupkowe)

9

Mam trudności z wyborem właściwego sposobu wizualizacji danych. Załóżmy, że mamy księgarnie, które sprzedają książki , a każda książka ma co najmniej jedną kategorię .

W przypadku księgarni, jeśli policzymy wszystkie kategorie książek, uzyskamy histogram pokazujący liczbę książek należących do określonej kategorii dla tej księgarni.

Chcę wyobrazić sobie zachowanie księgarni, chcę sprawdzić, czy faworyzują kategorię nad innymi kategoriami. Nie chcę wiedzieć, czy wszyscy razem faworyzują science fiction, ale chcę sprawdzić, czy traktują każdą kategorię jednakowo.

Mam ~ 1 mln księgarń.

Myślałem o 4 metodach:

  1. Próbkuj dane, pokaż tylko 500 histogramów księgarni. Pokaż je na 5 osobnych stronach za pomocą siatki 10x10. Przykład siatki 4x4:

    wiele histogramów 1

  2. Taki sam jak nr 1. Ale tym razem posortuj wartości osi x według ich liczby zliczeń, więc jeśli pojawi się faworyzowanie, będzie to łatwo widoczne.

  3. Wyobraź sobie składanie histogramów w # 2 razem jak talię i pokazywanie ich w 3D. Coś takiego:
    Histogram 3D

  4. Zamiast używać koloru próbnego trzeciej osi do reprezentowania kolorów, więc użyj mapy termicznej (histogram 2D): Histogram 2D
    jeśli ogólnie księgarnie wolą niektóre kategorie od innych, będą wyświetlane jako ładny gradient od lewej do prawej.

Czy masz jakieś inne pomysły / narzędzia wizualizacji do reprezentowania wielu histogramów?

nimcap
źródło
4
Myślę, że masz na myśli raczej wykresy słupkowe niż histogramy
Rob Hyndman
@Rob: Czy histogram nie jest specjalnym rodzajem wykresu słupkowego reprezentującego rozkład częstotliwości? Staram się wizualizować częstotliwości kategorii dla wielu księgarń.
nimcap,
1
@nimcap Nie, ponieważ histogram jest zmienną ciągłą, a kategoria książki jest zmienną kategoryczną.
@mbq Załóżmy, że księgarnia ma 3 książki, a ich kategorie to: B1: [c1, c2, c3] B2: [c1, c3] B3: [c1, c4]. Po zsumowaniu liczb kategorii otrzymujemy [c1 x 3, c2 x 1, c3 x 2, c4 x 1]. Czy to nie wystarczy do wygenerowania histogramu?
nimcap
2
@nimcap Nie, wystarczy wygenerować wykres słupkowy. Histogram można wykonać na przykład za cenę książki.

Odpowiedzi:

12

Jak się dowiedziałeś, nie ma łatwych odpowiedzi na twoje pytanie!

Zakładam, że chciałbyś znaleźć dziwne lub różne księgarnie? Jeśli tak jest, możesz spróbować PCA ( więcej szczegółów znajdziesz na stronie analizy klastra wikipedia ).

Aby dać ci pomysł, rozważ ten przykład. Masz 26 księgarń (o nazwach A, B, .. Z). Wszystkie księgarnie są podobne, z wyjątkiem:

  1. Sklep Z sprzedaje tylko kilka książek o historii.
  2. Sklepy OY sprzedają więcej książek romantycznych niż przeciętnie.

Główny wątek komponentów podkreśla te sklepy do dalszego badania.

Oto przykładowy kod 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)

To daje następujący wątek:

Działka PCA http://img265.imageshack.us/img265/7263/tmplx.jpg

Zauważ, że:

  1. Sklep z jest punktem odległym.
  2. Pozostałe sklepy tworzą dwie odrębne grupy.

Inne możliwości

Możesz także spojrzeć na GGobi , nigdy go nie używałem, ale wygląda interesująco.

csgillespie
źródło
Dziękujemy za cenną odpowiedź. Trudno opisać sytuację nawet w moim ojczystym języku :) Pozwólcie, że spróbuję. Nie jestem zainteresowany, czy księgarnie preferują określone kategorie, ale chcę sprawdzić, czy preferują kategorie. Właściwie tego właśnie oczekuję. Załóżmy, że mam 3 księgarnie (B1, B2, B3) i 4 kategorie (C1, C2, C3, C4). Są to ich dane sprzedaży: B1 (1, 1, 20, 20) B2 (90, 1, 1, 1), B3 (1, 1, 1, 30). Patrząc na te dane, mogę stwierdzić, że faworyzują niektóre kategorie w stosunku do innych. Ale jeśli dane były podobne do B1 (20, 30, 20, 20) B2 (90, 100, 100, 100), B3 (30, 30, 40, 40), nie mogę tego powiedzieć.
nimcap,
W moim przykładzie sklepy OY preferują książki romantyczne. Właśnie dlatego sklepy te stanowią odrębną grupę na PC.
csgillespie
2
Głosowałem za dobrą ogólną odpowiedzią, ale jako praktyczną odpowiedzią, zajmowanie się wieloma punktami danych będzie brutalne.
John
1
+1 Z pewnością nie tego chce OP, ale z pewnością jest to, czego powinna / ona powinna chcieć.
1
+1 Miły przykład „przyziemnej” aplikacji PCA.
nico,
3

Sugerowałbym coś, co nie ma określonej nazwy (prawdopodobnie „równoległy wykres”) i wygląda następująco:

alternatywny tekst

Zasadniczo rysujesz wszystkie liczby dla wszystkich księgarń jako punkty nad kategoriami wymienionymi na osi x i łączysz wyniki z każdej księgarni za pomocą linii. Jednak może to być zbyt splątane dla linii 1M. Koncepcja pochodzi od GGobi, o której wspominał już csgillespie.

Glorfindel
źródło
1
Wykresy równoległe w dużym stopniu zależą od „właściwej” kolejności zmiennych, więc dla zbyt wielu kategorii stanie się to uciążliwe. A poprawnym źródłem wydaje się być A. Inselberg, 1981.
Benjamin Bannier
3
Nazywa się je równoległymi wykresami współrzędnych: en.wikipedia.org/wiki/Parallel_coordinates
Simon Byrne
@ Simon dzięki; @honk Zgadzam się, to jeden z powodów, dla których ich nie używam.