Хадлей Викхам. Упорядоченные данные. 1 из 6

May 02, 2017 20:00

Мы начинаем публикацию статьи Хадлея Викхама "Упорядоченные данные". Статья опубликована в журнале "Journal of Statistical Software" в августе 2014 года, доступна онлайн здесь и здесь.

Хадлей Викхам. Упорядоченные данные
Hadley Wickham. Tidy Data
АннотацияОгромный объем усилий расходуется на очистку данных, для того, чтобы подготовить их для анализа, однако немногие исследования фокусируются на том, чтобы сделать очистку данных как можно более легкой и эффективной. Данная статья затрагивает небольшой, но важный компонент очистки данных (data cleaning): упорядочивание данных (data tidying). Упорядоченный массив данных легок для манипуляции, моделирования и визуализации, и имеет специфическую структуру: каждая переменная является столбцом, каждое наблюдение является строкой, каждый тип наблюдения является таблицей. Такая структура делает легким упорядочивание грязного массива данных, т.к. для работы с широким разнообразием неупорядоченных массивов данных требуется небольшой набор инструментов. Данная структура также делает более легким разработку упорядоченных инструментов для анализа данных, инструментов, которые принимают и выпускают упорядоченные массивы данных. Преимущества унифицированных структуры данных и соответствующих инструментов показаны на учебном примере, очищенном от необходимости проведения рутинных манипуляций с данными.
Ключевые слова: очистка данных (data cleaning); упорядочивание данных (data tidying); реляционные базы данных; язык R.



1. ВведениеЧасто говорится, что 80% времени анализа данных расходуется на процесс очистки и подготовки данных (Дасу, Джонсон, 2003). Подготовка данных не просто первый этап, она должна быть повторена много раз за время анализа по мере того, как на свет выходят новые задачи либо появляются новые данные. Несмотря на требуемый объем времени, существует неожиданно мало исследований, посвященных тому, как провести очистку данных хорошо. Частью проблемы является разнообразие работ, которые входят в это понятие: от проверки выбросов, до синтаксического разбора данных, до условных начислений отсутствующих значений. Для того, чтобы разобраться с вопросом, данная статья фокусируется на небольшом, но важном аспекте очистки данных, который я называю упорядочиванием данных: структурирование массива данных для облегчения анализа.
Принципы упорядочивания данных обеспечивают стандартный способ организации значений данных в массиве данных. Стандарт делает первоначальную очистку данных легче, т.к. Вам не нужно начинать с нуля и изобретать велосипед каждый раз заново. Стандарт упорядочивания данных разработан для облегчения первоначального исследования и анализа данных и для упрощения разработки инструментов для анализа данных, которые могли бы успешно применяться совместно. Текущие инструменты часто требуют преобразований. Вам требуется потратить время на внесение изменений в выход из одного инструмента, чтобы вы могли получить вход в другой. Упорядоченные массивы данных и упорядоченные инструменты работают рука об руку, делая анализ данных легче, позволяя вам сосредоточиться на интересном содержимом проблемы, а не на неинтересной логистике данных.
Принципы упорядоченных данных тесно связаны с таковыми у реляционных баз данных и реляционной алгеброй Кодда (Кодд, 1990), но сформулированы на языке, понятном статистикам. Ученые в области информатики также внесли большой вклад в исследование очистки данных. К примеру, Лакшманан, Садри и Субраманиан (1996) определили расширение к SQL, чтобы сделать возможным для нее работу с грязными массивами данных, Раман и Хеллерстайн (2001) обеспечили структуру для операции по очистке данных, и Кандел, Папке, Хеллерстайн и Хеер (2011) разработали интерактивный инструмент с дружественным интерфейсом, который автоматически создавал код для очистки данных. Эти инструменты полезны, но они были представлены на языке, чуждом большинству статистиков, они не давали рекомендаций как массивы данных должны быть упорядочены и в них отсутствовала связь между инструментами анализа данных.
Развитие упорядоченных данных происходило за счет моего опыта работы с массивами данных в реальном мире. Такие массивы данных сконструированы в весьма причудливых формах, с немногими ограничениями на свою структуру, а иногда и без ограничений вообще. Я потратил бесчисленное количество часов, работая над тем, чтобы привести такие массивы данных к структуре, делающей анализ данных возможным, не говоря уже о «легким». Я также много работал над выработкой этих навыков в моих студентах, чтобы они могли самостоятельно работать с массивами данных в реальном мире. В ходе этой работы я разработал пакеты «reshape» и «reshape2» (Викхам, 2007). В то время как я мог интуитивно использовать инструмент, и учить его использованию на примерах, у меня отсутствовала структура для того, чтобы сделать мое интуитивное понимание прозрачным. Данная статья предоставляет такую структуру. Она предоставляет полную «философию данных»: ту, которая лежит в основе моих разработок в пакетах «plyr» (Викхам, 2011) и «ggplot2» (Викхам, 2009).
Статья состоит из следующего. Раздел 2 начинается с моего определения трех характеристик, которые делают массив данных упорядоченным. Т.к. большинство массивов в реальном мире не упорядочены, раздел 3 описывает операции, необходимые для того, чтобы сделать неупорядоченный массив данных упорядоченным, и иллюстрирует эти приемы рядом реальных примеров. Раздел 4 дает определение упорядоченных инструментов, инструментов, входом и выходом которых являются упорядоченные массивы данных, и обсуждает, как упорядоченные данные и упорядоченные инструменты вместе могут сделать анализ данных легче. Эти принципы проиллюстрированы небольшим учебным примером в разделе 5. Раздел 6 содержит заключение с обсуждением того, что отсутствует в данной структуре и что могло бы быть полезного в других подходах.

2. Определение упорядоченных данных
Все счастливые семьи похожи друг на друга, каждая несчастливая семья несчастлива по-своему
Лев Толстой
Как и семьи, все упорядоченные массивы данных похожи друг на друга, а каждый неупорядоченный массив является неупорядоченным по-своему. Упорядоченные массивы данных обеспечивают стандартизированный способ связи между структурой массива данных (физическим слоем) и его семантикой (содержанием). В данном разделе я предоставлю некоторые стандартный словарь для описания структуры и семантики массива данных и далее буду использовать эти определения для того, чтобы дать определение для упорядоченных данных.

2.1. Структура данныхБольшинство статистических массивов данных имеют форму прямоугольных таблиц, составленных из строк и колонок. Столбцы почти всегда имеют названия, строки иногда имеют название. Таблица 1 предоставляет некоторые данные о вымышленном эксперименте в формате, часто встречающемся в естественных условиях. Таблица имеет два столбца и три строки, и как строки, так и столбцы имеют названия.
Таблица 1. Типичное представление массива данных

ЛечениеА

ЛечениеБ

Джон Смит
-
2

Джейн Доу
16
11

Мэри Джонсон
3
1

Существует множество способов структурировать данные, лежащие в основе этой таблицы. Таблица 2 показывает те же данные, что и в таблице 1, но с транспонированными строками и столбцами. Данные те же, но их структура, физический слой, отличается. Наш словарь столбцов и колонок недостаточно богат, чтобы показать, что две таблицы описывают те же самые данные. В дополнение к внешнему виду, мы должны порядочно углубиться в описание лежащей в его основе семантики, содержания, значений переменных, показанных в таблице.

Таблица 2. Те же самые данные, что и в таблице 1, но структурированные по-другому

Джон Смит

Джейн Доу

Мэри Джонсон

ЛечениеА
-
16
3

ЛечениеБ
2
11
1

2.2. Семантика данныхМассив данных является набором значений, обычно в виде цифр (если он количественный) либо строк (если он качественный). Значения организованы двумя способами. Каждое значение принадлежит либо к переменной, либо к наблюдению. Переменная содержит все значения, которые измеряют один и тот же атрибут (например, вес, температура, длительность) в разных элементах. Наблюдение содержит все значения, замеренные по одному и тому же элементу (например, по человеку, по дню или национальности) по разным атрибутам.
Таблица 3 перегруппирует таблицу 1, чтобы сделать значения, переменные и наблюдения более прозрачными. Массив содержит 18 значений, представляющих три переменные и шесть наблюдений. Переменные:
1) имя, с тремя возможными значениями (Джон, Мэри, Джейн)
2) лечение, с двумя возможными значениями (А и Б)
3) результат, с пятью или шестью значениями, зависящими от того, как вы рассматриваете отсутствие значений (-, 16, 3, 2, 11, 1).
Дизайн эксперимента говорит нам много о структуре наблюдения. В данном эксперименте, каждая комбинация человека и лечения была замерена, т.е. это дизайн с полностью пересекающимися факторами. Дизайн эксперимента также предопределяет, можно ли безопасно отбросить отсутствующие значения. В данном эксперименте отсутствующие значения представляют собой наблюдения, которые должны были быть сделаны, но не были, так что их сохранение является важным. Структурно отсутствующие значения, которые представляют измерения, которые не могут быть сделаны (например, количество беременных мужчин), могут быть безопасно отброшены.

Таблица 3. Те же самые данные, что и в таблице 1, но с переменными в столбцах и с наблюдениями в строках

Имя

Лечение

Результат

Джон Смит
А
-

Джейн Доу
А
16

Мэри Джонсон
А
3

Джон Смит
Б
2

Джейн Доу
Б
11

Мэри Джонсон
Б
1

Для каждого массива данных по-отдельности, как правило, легко определить, что является наблюдением, и что переменной, но вот дать общие определения переменной и наблюдению оказалось делом неожиданно трудным. К примеру, если столбцы в таблице 1 были высота и масса, мы бы с удовольствием назвали их переменными. Если бы столбцы были высота и ширина, это было бы менее очевидным решением, т.к. мы могли бы решить, что высота и ширина являются значениями переменной «размеры». Если столбцы «домашний телефон» и «рабочий телефон», мы будем работать с ними как с двумя разными переменными, но в контексте выявления мошенничества мы могли бы предпочесть иметь переменную «номер телефона» и «тип номера телефона», т.к. использование одного и того же телефонного номера разными людьми будет как раз предполагать мошенничество. Общий грубый практический метод заключается в том, что легче описать функциональные зависимости между переменными (например, z является линейной комбинацией x и y, плотность это частное от деления массы на объем), чем между строками; и легче делать сравнения между группами наблюдений (например, среднее в группе a против среднего в группе b), чем между группами столбцов.
В каждом отдельном анализе может быть несколько уровней наблюдений. К примеру, в испытания нового лекарства от аллергии мы можем иметь три вида наблюдений: демографические данные, собранные по каждому человеку (возраст, пол, национальность), медицинские данные, собранные по каждому человеку в каждый день (количество чиханий, краснота глаз), и метеорологические данные, собранные по каждому дню (температура, количество цветочной пыльцы).
2.3. Упорядоченные данныеУпорядоченные данные - это стандартный способ соответствия значения массива данных его структуре. Массив данных является упорядоченным или неупорядоченным в зависимости от того, как строки, столбцы и таблицы соответствуют наблюдениям, переменным и типам наблюдений. В упорядоченных данных:
1) Каждая переменная является столбцом;
2) каждое наблюдение является строкой;
3) каждый тип наблюдений формирует таблицу.
Это 3 нормальная форма Кодда (Кодд, 1990), но с ограничениями, выраженными на статистическом языке и с фокусом скорее на отдельный массив данных, чем на множество связанных массивов данных в реляционных базах данных. Неупорядоченные данные - это все другие способы организации данных.
Таблица 3 это упорядоченная версия таблицы 1. Каждая строка представляет наблюдение, результат одного лечения по одному человеку, и каждый столбец является переменной.
Аналитику или компьютеру легко извлекать необходимые переменные из упорядоченных данных, т.к. упорядочивание обеспечивает стандартный путь структурирования массива данных. Сравните таблицу 3 и таблицу 1: в таблице 1 вам необходимо использовать разные стратегии для извлечения разных переменных. Это замедляет анализ и провоцирует ошибки. Если вы рассмотрите, как часто аналитические операции с данными вовлекают все значения в переменной (так делает любая функция, объединяющая значения), вы увидите, как важен простой, стандартный путь извлечения этих значений. Упорядоченные данные особенно хорошо подходят для векторного программирования, как R, потому что физический слой обеспечивает, что значения разных переменных из одного наблюдения всегда соответствуют друг другу.
В то время как порядок переменных и наблюдений не влияет на анализ, хороший порядок делает легче обзор необработанных значений. Одним из способов организации переменных является упорядочивание по их роли в анализе: являются ли значения фиксированным по дизайну сбора данных, или они измеряются в ходе эксперимента? Фиксированные переменные описывают дизайн эксперимента и известны заранее. Ученые в области информатики часто называют фиксированные переменные размерностями, и статистики часто обозначают их подстрочными индексами на случайных величинах. Измеряемые переменные это те, которые мы собственно измеряем в ходе исследования. Фиксированные переменные идут первыми, следом идут измеряемые переменные, каждая в таком порядке, что связанные переменные являются смежными. Строки могут быть отсортированы по первой переменной, при равенстве первой переменной используя сортировку по второй и следующими (фиксированными) переменными. Это конвенция, принятая всеми таблицами, представленными в данной статье.

3. Упорядочивание неупорядоченных массивов данныхРеальные массивы данных могут (и часто этой возможностью пользуются) нарушать три предписания упорядоченного массива данных любым способом, который только можно вообразить. В то время как иногда вы можете случайно получить массив данных. Который можно немедленно начать анализировать, это исключение, не правило. Данный раздел описывает пять наиболее общих проблем с неупорядоченными массивами данных, вместе с их лечением:
* Заголовки столбцов являются значениями, а не именами переменных;
* Множество переменных хранится в одном столбце;
* Переменные хранятся как в строках, так и в столбцах;
* Множество типов наблюдений хранится в одной и той же таблице;
* Одно и то же наблюдение хранится в разных таблицах.
Как неожиданно выяснилось, большинство неупорядоченных массивов данных, включая разновидности неупорядоченности, не перечисленные выше, могут быть упорядочены с помощью небольшого набора инструментов: плавление, расщепление строк, отливка. Следующий раздел проиллюстрирует каждую проблему реальным массивом данных, с которым мне пришлось работать, и покажет, как его упорядочить. Полные массивы данных и код R, использованный для их очистки доступен онлайн по адресу https://github.com/hadley/tidy-data, а также в дополнительных онлайн материалах к этой статье.

3.1. Заголовки столбцов являются значениями, а не именами переменныхРаспространенным типом неупорядоченных данных являются табличные данные, подготовленные для презентации, где переменные формируют строки и столбцы, а заголовки столбцов являются значениями, а не именами переменных. Хотя я называю такое расположение неупорядоченным, в некоторых случаях оно может быть чрезвычайно полезным. Оно обеспечивает эффективное хранение дизайнов с полностью пересекающимися факторами, и может быть к чрезвычайно эффективно в вычислительном смысле, если желаемые операции могут быть выражены как матричные операции. Этот вопрос обсуждается глубже в разделе 6.
Таблица 4 показывает подмассив типичного массива данных такого типа. Этот массив исследует взаимоотношения между доходом и религией в США. Он взят из доклада (http://religions.pewforum.org/pdf/comparison-Income%20Distribution%20of%20Religious%20Traditions.pdf), составленного Исследовательским центром Пью, американским «мозговым центром», который собирает данные по отношению к вопросам, начиная с религии до интернета, и составляет множество докладов, содержащих массивы данных такого формата:

Таблица 4. Первые десять строк данных по доходам и религии с Пью форума. Три столбца: 75-100 тыс. долларов, 100-150 тыс. долларов, >150 тыс. долларов - пропущены

Религия

10 тыс. долларов

10-20 тыс. долларов

20-30 тыс. долларов

30-40 тыс. долларов

40-50 тыс. долларов

50-75 тыс. долларов

Агностики
27
34

60

81

76

137

Атеисты
12
27

37

52

35

70

Буддисты
27
21

30

34

33

58

Католики
418
617

732

670

638

1116

Не знаю/ отказались ответить
15
14

15

11

10

35

Евангелисты
575
869

1064

982

881

1486

Индуисты
1
9

7

9

11

34

Церковь черных
228
244

236

238

197

223

Свидетели Иеговы
20
27

24

24

21

30

Иудеи
19
19

25

25

30

95

Продолжение следует

язык R, очистка данных, реляционные базы данных, Хадлей Викхам, упорядочивание данных

Next post
Up