Визуализация нескольких «гистограмм» (гистограмм)

9

У меня возникают трудности с выбором правильного способа визуализации данных. Допустим, у нас есть книжные магазины , в которых продаются книги , и у каждой книги есть хотя бы одна категория .

Для книжного магазина, если мы посчитаем все категории книг, мы получим гистограмму, которая показывает количество книг, которые попадают в определенную категорию для этого книжного магазина.

Я хочу визуализировать поведение книжного магазина, я хочу видеть, предпочитают ли они категорию по сравнению с другими категориями. Я не хочу видеть, одобряют ли они все вместе фантастику, но я хочу видеть, относятся ли они к каждой категории одинаково или нет.

У меня ~ 1 млн книжных магазинов.

Я подумал о 4 методах:

  1. Пример данных, показать только 500 гистограмм книжного магазина. Показать их на 5 отдельных страницах с использованием сетки 10х10. Пример сетки 4х4:

    несколько гистограмм 1

  2. То же, что № 1 Но на этот раз сортируйте значения по оси x в соответствии с их счетом desc, поэтому, если есть предпочтение, это будет легко увидеть.

  3. Представьте себе, что вы помещаете гистограммы в # 2 вместе, как колоду, и показывает их в 3D. Что-то вроде этого:
    3D гистограмма

  4. Вместо того, чтобы использовать третью ось, выбирающую цвета для представления цветов, используйте тепловую карту (2D-гистограмму): 2D гистограмма
    если книжные магазины обычно предпочитают одни категории другим, это будет отображаться в виде хорошего градиента слева направо.

Есть ли у вас какие-либо другие идеи / инструменты визуализации для представления нескольких гистограмм?

nimcap
источник
4
Я думаю, что вы имеете в виду гистограммы, а не гистограммы
Роб Хиндман
@Rob: Разве гистограмма не является особым типом гистограммы, которая представляет распределение частоты? Я пытаюсь визуализировать категории частот для многих книжных магазинов.
Nimcap
1
@nimcap Нет, потому что гистограмма находится над непрерывной переменной, а категория книги является категориальной переменной.
@mbq Скажем, в книжном магазине есть 3 книги, и их категории: B1: [c1, c2, c3] B2: [c1, c3] B3: [c1, c4]. Когда мы агрегируем количество категорий, мы получаем [c1 x 3, c2 x 1, c3 x 2, c4 x 1]. Разве этого недостаточно для создания гистограммы?
Nimcap
2
@nimcap Нет, достаточно сгенерировать гистограмму. Гистограмма может быть сделана, например, по цене книги.

Ответы:

12

Как вы узнали, нет простых ответов на ваш вопрос!

Я предполагаю, что вы заинтересованы в поиске странных или разных книжных магазинов? Если это так, то вы можете попробовать что-то вроде PCA ( более подробную информацию см. На странице анализа кластера в Википедии ).

Чтобы дать вам представление, рассмотрим этот пример. У вас есть 26 книжных магазинов (с именами A, B, .. Z). Все книжные магазины похожи, кроме:

  1. Магазин Z продает только несколько книг по истории.
  2. Магазины OY продают больше романтических книг, чем в среднем.

Основной компонент сюжета выделяет эти магазины для дальнейшего изучения.

Вот пример кода 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)

Это дает следующий сюжет:

Сюжет PCA http://img265.imageshack.us/img265/7263/tmplx.jpg

Заметь:

  1. Магазин z является отдаленной точкой.
  2. Другие магазины образуют две отдельные группы.

Другие возможности

Вы также можете посмотреть на GGobi , я никогда не использовал его, но выглядит интересно.

csgillespie
источник
Спасибо за ваш ценный ответ. Ситуацию сложно описать даже на моем родном языке :) Позвольте мне попробовать. Мне не интересно, предпочитают ли книжные магазины определенные категории, но я хочу посмотреть, поддерживают ли они категории. На самом деле это то, что я ожидаю. Допустим, у меня есть 3 книжных магазина (B1, B2, B3) и 4 категории (C1, C2, C3, C4). Это их данные о продажах: B1 (1, 1, 20, 20) B2 (90, 1, 1, 1), B3 (1, 1, 1, 30). Глядя на эти данные, я могу сказать, что они предпочитают одни категории другим. Но если данные были как B1 (20, 30, 20, 20) B2 (90, 100, 100, 100), B3 (30, 30, 40, 40), я не могу этого сказать.
Nimcap
В моем примере магазины OY предпочитают романтические книги. Вот почему эти магазины находятся в отдельной группе на ПК-сюжете.
csgillespie
2
Я оценил это как хороший общий ответ, но как практический ответ, работа с таким количеством данных будет жестокой.
Джон
1
+1 Это, конечно, не то, что хочет ОП, но это, безусловно, то, что она / он должны хотеть.
1
+1 Хороший пример «приземленного» приложения PCA.
Nico
3

Я хотел бы предложить что-то, что не имеет определенного имени (возможно, «параллельный сюжет») и выглядит так:

альтернативный текст

По сути, все графики для всех книжных магазинов вычерчиваются в виде точек над категориями, перечисленными на оси х, и связывают результаты из каждого книжного магазина с линией. Тем не менее, это может быть слишком запутанным для 1М линий, хотя. Концепция исходит от GGobi, который уже упоминался csgillespie.

Глорфиндел
источник
1
Параллельные графики сильно зависят от «правильного» порядка переменных, поэтому для слишком большого количества категорий это станет утомительным. И правильным источником, по-видимому, является А.Инсельберг, 1981.
Бенджамин Банье
3
Они называются параллельными координатными графиками: en.wikipedia.org/wiki/Parallel_coordinates
Саймон Бирн,
@ Симон спасибо; @honk Согласен, это одна из причин, почему я ими не пользуюсь.