Visualisasi banyak "histogram" (diagram batang)

9

Saya mengalami kesulitan untuk memilih cara yang tepat untuk memvisualisasikan data. Katakanlah kita memiliki toko buku yang menjual buku , dan setiap buku memiliki setidaknya satu kategori .

Untuk toko buku, jika kami menghitung semua kategori buku, kami memperoleh histogram yang menunjukkan jumlah buku yang termasuk dalam kategori tertentu untuk toko buku itu.

Saya ingin memvisualisasikan perilaku toko buku, saya ingin melihat apakah mereka menyukai kategori daripada kategori lainnya. Saya tidak ingin melihat apakah mereka menyukai sci-fi bersama-sama, tetapi saya ingin melihat apakah mereka memperlakukan setiap kategori dengan sama atau tidak.

Saya punya ~ 1M toko buku.

Saya telah memikirkan 4 metode:

  1. Sampel datanya, tunjukkan hanya 500 histogram toko buku. Tampilkan dalam 5 halaman terpisah menggunakan kisi 10x10. Contoh kisi 4x4:

    banyak histogram 1

  2. Sama seperti # 1. Tapi kali ini mengurutkan nilai sumbu x menurut desc hitungan mereka, jadi jika ada yang mendukung itu akan terlihat dengan mudah.

  3. Bayangkan menempatkan histogram di # 2 bersama-sama seperti sebuah dek dan menunjukkannya dalam 3D. Sesuatu seperti ini:
    Histogram 3D

  4. Alih-alih menggunakan sumbu warna ketiga untuk mewakili warna, jadi gunakan heatmap (2D histogram): 2D histogram
    Jika umumnya toko buku lebih memilih beberapa kategori daripada yang lain, itu akan ditampilkan sebagai gradien yang bagus dari kiri ke kanan.

Apakah Anda memiliki ide / alat visualisasi lain untuk mewakili banyak histogram?

nimcap
sumber
4
Saya pikir maksud Anda grafik batang daripada histogram
Rob Hyndman
@Rob: Bukankah histogram jenis grafik batang khusus yang mewakili distribusi frekuensi? Saya mencoba memvisualisasikan frekuensi kategori untuk banyak toko buku.
nimcap
1
@nimcap Tidak, karena histogram lebih dari variabel kontinu, dan kategori buku adalah variabel kategorikal.
@mbq Katakanlah toko buku memiliki 3 buku, dan kategorinya adalah: B1: [c1, c2, c3] B2: [c1, c3] B3: [c1, c4]. Ketika kami mengumpulkan jumlah kategori, kami mendapatkan [c1 x 3, c2 x 1, c3 x 2, c4 x 1]. Bukankah ini cukup untuk menghasilkan histogram?
nimcap
2
@nimcap Tidak, cukup untuk membuat grafik batang. Histogram dapat dilakukan misalnya untuk harga buku.

Jawaban:

12

Seperti yang telah Anda temukan, tidak ada jawaban mudah untuk pertanyaan Anda!

Saya kira Anda tertarik menemukan toko buku yang aneh atau berbeda? Jika demikian, Anda dapat mencoba hal-hal seperti PCA (lihat halaman analisis gugus wikipedia untuk detail lebih lanjut).

Untuk memberi Anda ide, pertimbangkan contoh ini. Anda memiliki 26 toko buku (dengan nama A, B, .. Z). Semua toko buku serupa, kecuali:

  1. Toko Z hanya menjual beberapa buku Sejarah.
  2. Toko OY menjual lebih banyak buku roman daripada rata-rata.

Plot komponen utama menyoroti toko-toko ini untuk penyelidikan lebih lanjut.

Berikut ini beberapa contoh kode 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)

Ini memberikan plot berikut:

PCA plot http://img265.imageshack.us/img265/7263/tmplx.jpg

Perhatikan itu:

  1. Toko z adalah titik terpencil.
  2. Toko-toko lain membentuk dua kelompok yang berbeda.

Kemungkinan lain

Anda juga bisa melihat GGobi , saya belum pernah menggunakannya, tetapi terlihat menarik.

csgillespie
sumber
Terima kasih atas jawaban Anda yang berharga. Situasi sulit untuk dijelaskan bahkan dalam bahasa ibu saya :) Biarkan saya coba. Saya tidak tertarik jika toko buku menyukai kategori tertentu tetapi saya ingin melihat apakah mereka menyukai kategori. Sebenarnya ini yang saya harapkan. Katakanlah saya memiliki 3 toko buku (B1, B2, B3) dan 4 kategori (C1, C2, C3, C4). Ini adalah data penjualan mereka: B1 (1, 1, 20, 20) B2 (90, 1, 1, 1), B3 (1, 1, 1, 30). Melihat data ini saya bisa mengatakan mereka menyukai beberapa kategori untuk orang lain. Tetapi jika data seperti B1 (20, 30, 20, 20) B2 (90, 100, 100, 100), B3 (30, 30, 40, 40) Saya tidak bisa mengatakan itu.
nimcap
Dalam contoh saya, toko OY mendukung buku-buku romantis. Inilah sebabnya mengapa toko-toko ini berada dalam kelompok yang berbeda dalam plot PC.
csgillespie
2
Saya memilih ini sebagai jawaban umum yang baik tetapi sebagai jawaban praktis, berurusan dengan banyak poin data yang akan brutal.
Yohanes
1
+1 Ini tentu bukan yang diinginkan OP, tetap itu yang seharusnya diinginkannya.
1
+1 Contoh yang bagus dari aplikasi PCA "down-to-Earth".
nico
3

Saya menyarankan sesuatu yang tidak memiliki nama yang jelas (mungkin "plot paralel") dan terlihat seperti ini:

teks alternatif

Pada dasarnya, Anda memplot semua jumlah untuk semua toko buku sebagai poin di atas kategori yang tercantum pada sumbu x dan menghubungkan hasil dari setiap toko buku dengan sebuah garis. Namun ini mungkin terlalu kusut untuk jalur 1M. Konsepnya berasal dari GGobi yang sudah disebutkan oleh csgillespie.

Glorfindel
sumber
1
Plot paralel sangat bergantung pada urutan variabel yang "benar", jadi untuk terlalu banyak kategori ini akan menjadi membosankan. Dan sumber yang tepat tampaknya adalah A.Inselberg, 1981.
Benjamin Bannier
3
Mereka disebut plot koordinat paralel: en.wikipedia.org/wiki/Parallel_coordinates
Simon Byrne
@Simon terima kasih; @ yah, saya setuju, ini adalah salah satu alasan mengapa saya tidak menggunakannya.