Открытая карточная сортировка — быстро и легко обрабатываем результаты с помощью R

Сережа Розум
7 min readSep 27, 2021

--

Небольшой спойлер к статье

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

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

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

Немного о карточной сортировке

Карточная сортировка — это качественно-количественный метод для поиска наиболее оптимального разделения неких сущностей на группы. Ее можно использовать, чтобы выстроить удобную навигацию в приложении, разбить товары на понятные категории.

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

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

Как выглядит карточная сортировка

Хорошая практика — поговорить с респондентом о том, почему он (или она) разделил карточки именно так, а не иначе. На очном исследовании это работает лучше, чем на удаленном.

Также есть обратная карточная сортировка, или же tree testing, с ее помощью можно тестировать уже готовую структуру.

В нашем случае мы будем говорить об открытой карточной сортировке.

Немного о данных, с которыми мы будем работать

Когда я думал об этой статье, я не смог найти открытых тестовых датасетов для карточной сортировки. А генерировать данные самостоятельно не очень хотелось. Поэтому я решил собрать собственный датасет, он доступен любому и каждому по адресу — UXRozum/cardsort: Card sorting in R (github.com).

Так выглядел пост с призывом пройти опрос

Заданием было распределить по группам 20 разных зверюшек. Я специально постарался составить карточки так, чтобы не было очевидно правильного разделения:

Карточки, которые необходимо было разделить

Получилось 107 ответов, спасибо всем, кто участвовал в сборе данных! Собранные результаты я выкачал и почистил, получилась следующая табличка:

Сырые данные, их можно скачать и посмотреть самостоятельно

Почти все переменные были созданы автоматически, я добавил только столбец “Group_tag” — в нем я протегировал группы на свое усмотрение по основанию классификации.

Получилось следующее распределение:

Смешанное разделение — это то, где нельзя точно определить одно основание разделения. Биологическое — это когда люди делили зверей примерно так, как мы помним по урокам биологии (например: пресмыкающиеся, птицы, млекопитающие). При этом часто респонденты при биологическом разделении часто выносили несуществующих зверей в отдельную категорию.

Анализ результатов

Для того чтобы обработать результаты, нам потребуется программа Rstudio. Она бесплатная, скачать ее можно по адресу — RStudio — RStudio. Rstudio можно поставить как на Windows, так и на Mac.

Так выглядит интерфейс Rstudio

Готовый скрипт для обработки скачиваем на UXRozum/cardsort: Card sorting in R (github.com), и открываем, я постарался в нем все расписать по шагам.

Подготовка к работе

Прежде всего нам нужно поставить и запустить нужные библиотеки:

Полный код можно скачать по адресу UXRozum/cardsort: Card sorting in R (github.com)

Для того чтобы запустить код, нужно выделить его и нажать ctrl+enter

После установки нам выдаст следующее сообщение:

После загрузки пакетов с командой library будет много разных предупреждений, но их можно не пугаться:

Теперь мы готовы работать с данными

Загрузка данных в Rstudio

Сначала нам нужно загрузить файл Card.xlsx, который находится в UXRozum/cardsort: Card sorting in R (github.com). Файл должен находиться в отдельной папке, название папки в идеале — на латинице.

Чтобы выгрузить данные из нашей эксельки Card.xlsx мы используем следующие команды:

Полный код можно скачать по адресу UXRozum/cardsort: Card sorting in R (github.com)

Rstudio предложит нам выбрать папку, где находится Card.xlsx. Далее в эту папку будут сохраняться результаты нашего анализа.

Теперь у нас есть датасет Raw, с ним мы будем дальше работать

Создание таблицы совпадений

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

Полный код можно скачать по адресу UXRozum/cardsort: Card sorting in R (github.com)

Получившийся файл называется Adjacency.xlsx, давайте посмотрим, что у него внутри

Табличка совпадений

В этой табличке мы видим, что, например, карточки “Гадюка” и “Василиск” находились в одной группе 9 раз, из возможных 107. Давайте немного причешем эту табличку и добавим условное форматирование в экселе:

Та же самая табличка, но с условным форматированием

Теперь мы уже видим больше. Например, мы легко можем заметить, что Василиск часто находится в одной группе с Драконом (92 раза из 107) и Кракеном (91 раз из 107).

Но пока непонятно, на какие группы делить и какие выводы мы можем делать.

Кластеризация (дендрограмма)

Давайте запустим следующий шаг скрипта:

Полный код можно скачать по адресу UXRozum/cardsort: Card sorting in R (github.com)

И получается следуюший график:

Дендрограмма с разделением на 6 групп

Разберем немного поподробнее, что случилось. Алгоритм edge-betweenness поочередно удаляет те карточки, которые меньше всего связаны с другими, и это позволяет вычислить устоявшиеся группы. А дендрограмма показывает, как логичнее всего разделить карточки, если делить на определенное количество групп. Здесь мы поставили 6, но групп может быть сколько угодно, от 1 до 20 (в нашем случае, потому что карточек всего 20).

Как меняется дендрограмма с изменением количества групп

Мы уже можем делать выводы о том, как лучше всего разбить карточки, но дендрограмму все еще не очень легко считать одним взглядом, особенно если нет опыта в работе с ними.

Построение сетевого графа (визуальный анализ результатов)

Если то, что мы делали до этого, часто делают при анализе карточек, то сетевые графы встречаются довольно редко.

Про анализ карточной сортировки с помощью сетевых графов есть прекрасная статья — Analyzing Card-Sorting Data Using Graph VisualizationJUS (uxpajournal.org), но, кроме этой статьи эта визуализация почти нигде не используется.

Сетевой граф — это способ визуализации связей между сущностями. В нем каждая сущность отображается в виде точки, а связь между ними отображается как линия

Вот пример сетевого графа по сериалу Madmen, каждая точка — персонаж, каждая линия — сексуальная связь между ними

Давайте попробуем построить подобный график для наших карточек. Точками (или нодами) будут карточки, а линия — упоминание двух карточек в одной группе

Полный код можно скачать по адресу UXRozum/cardsort: Card sorting in R (github.com)

В итоге у нас получается следующее:

Сетевой график. Красиво, правда?

Линии с трудом различимы, их слишком много, чтобы что-то разобрать. С этим надо что-то делать. Попробуем по аналогии с использованным нами ранее алгоритмом кластеризации, постепенно убирать связи. Это довольно просто, нам нужно отнимать число из таблицы сопряжений.

Вот например, какой график у нас выходит, если убрать 60% связей:

Вот теперь все очевидно

Теперь мы видим, что деление у нас получилось смешанное, две большие группы по месту обитания (водные и наземные), отдельно насекомые, чайка и гадюка стоят по одиночке. И в отдельной группе — все мифические существа.

Более наглядно можно посмотреть в динамике:

Как изменяется сетевой граф при отсечении связей

Облака слов

Мы разобрались с группами, но остался один момент: как их обозвать. У нас открытая карточная сортировка, респонденты сами давали группам названия. Эти данные у нас остались, их мы и будем использовать для построения облака слов для каждой группы

Например, у нас есть группа “Таракан-Паук-Стрекоза”, давайте попробуем их как-то обозвать

Полный код можно скачать по адресу UXRozum/cardsort: Card sorting in R (github.com)

У нас получается такое вот облако:

Облако слов для группы “Таракан-Паук-Стрекоза”

И вот, мы с вами без особых проблем обработали наши результаты.

Быстрый вариант

Если не хочется делать это все по шагам, есть быстрый вариант

  1. Скачиваем 2 файла Cards.xlsx и CardSort3.R: UXRozum/cardsort: Card sorting in R (github.com)
  2. Помещаем их в одну папку
  3. Открываем скрипт
  4. Выделяем все строчки с 79 (#Начало) по 128 (#Конец)
  5. Жмем crtl+enter

Скрипт сам все сделает за вас: построит и сохранит таблицу совпадений, построит и сохранит дендрограммы (с разбиванием на группы от 1 до количества карточек), построит 19 сетевых графов (с 95% связей до 5% связей), и построит облака слов для каждой карточки.

Работу с быстрым вариантом я записал на видео, чтобы было нагляднее:

В заключение

Спасибо за то, что дочитали до конца, надеюсь это было интересно. Этот скрипт можно использовать для анализа проведенной самостоятельно карточной сортировки — в файл Card.xlsx просто нужно будет подставить свои данные.

Скрипт и данные можно скачать на моем гитхабе — UXRozum/cardsort: Card sorting in R (github.com)

Пишите комментарии, ставьте лайки, делитесь статьей, задавайте вопросы, это очень важно и полезно!

--

--

Сережа Розум
Сережа Розум

Written by Сережа Розум

UX-исследователь, социолог

Responses (1)