Шрифт:
Интервал:
Закладка:
Эта схема не отличается надежностью: 93221 (случайное повторение символа) или 94211 (перестановка символов местами) эту проверку пройдут. В случае необходимости контрольного числа в реальной жизни применяются более сложные математические функции, которые способны выявить в том числе и две указанные выше ошибки. Маршрутный номер (код банка, присваиваемый Американской банковской ассоциацией) — уникальное девятизначное число, стоящее в нижней части чека перед номером счета, — один из таких примеров[26]. Контрольное число маршрутного номера — функция
3 × (d1 + d4 + d7) + 7 × (d2 + d5 + d8) + d3 + d6 + d9 mod 10 = 0
(mod означает получение остатка от целочисленного деления. Так, 32 mod 10 = 2, поскольку 32 = 3 × 10 + 2), которая проверяется простым кодом на языке Python:
routing_number = "122187238"
d = [int(c) for c in routing_number]
checksum = (# do the math!
7 * (d [0] + d [3] + d [6]) +
3 * (d [1] + d [4] + d [7]) +
9 * (d [2] + d [5])
) % 10
print(d [8] == checksum)
Как видите, есть ряд способов, позволяющих сохранить высокое качество данных на стадии ввода информации. Но, к сожалению, и их нельзя считать абсолютно надежными. Итак, у вас в системе есть данные, которые переходят на стадию анализа. Что дальше?
РАЗВЕДОЧНЫЙ АНАЛИЗ ДАННЫХ
При получении любой информации аналитику в первую очередь следует в той или иной форме провести разведочный анализ данных (глава 5) для оценки их качества. Простой способ проверки на вопиющие ошибки, как в приведенном выше примере с людьми пятидюймового роста, — сделать сводку из данных. Для каждого показателя можно составить пятичисловую сводку: два крайних значения (максимальное и минимальное значение), нижний (25-й процентиль) и верхний (75-й процентиль) квартили и медиану. Посмотрите на крайние значения. Насколько они адекватны? Они выше или ниже значений, которые вы могли бы ожидать? Пять дюймов — это очевидно слишком мало.
Вот пример того, как выглядит классификация набора данных по ирисам, представленная с помощью R — бесплатной и открытой программной среды для статистических вычислений и построения графиков, которой часто пользуются специалисты по статистике и работе с данными[27]. Американский ботаник Эдгар Андерсон собрал данные о 150 экземплярах ириса, по 50 экземпляров из трех видов, а Рональд Фишер на примере этого набора данных продемонстрировал работу созданного им метода для решения задачи классификации[28].
В этом виде можно легко получить общее представление о данных (1-й кв. = 1-й квартиль, или 25-й процентиль; 3-й кв. = 75-й процентиль). Ту же самую информацию можно представить в виде коробчатой диаграммы (рис. 2.2).
Рис. 2.2. Коробчатая диаграмма классификации набора данных по ирисам
На рис. 2.3 отражены некоторые ошибки, которые можно определить с помощью представления данных в виде простой гистограммы. В базе данных NHANES меня также интересовали данные, касающиеся артериального давления. После классификации выборки я получил максимальные значения артериального давления, которые показались мне гораздо выше нормы. Сначала я решил, что это тоже ошибка. Однако распределение показало, что эти значения хоть и находятся в хвосте распределения, но с разумной частотой. Я сверился с медицинской литературой и убедился, что значения артериального давления действительно могут быть такими высокими. Однако респондентами были люди, которые, скорее всего, не получали лечения. Как вы помните, опрос проводился среди всего населения США, а не среди пациентов медицинских учреждений, где им была бы оказана помощь, — все зависит от контекста.
Рис. 2.3. Примеры типов ошибок, которые можно выявить с помощью простой гистограммы: А — значения по умолчанию, такие как –1, 0 или 1/1/1900; B — неправильный ввод или повтор данных; C — пропущенные данные; D — значения по умолчанию, такие как 999
Два важных навыка, которые должны развивать в себе аналитики, — прогнозирование возможных результатов и способность предварительно оценивать данные[29]. Я ошибся относительно значений артериального давления, так как оценивал их с точки зрения нормы для обычных здоровых людей. Тем не менее я узнал нечто новое для себя, скорректировал свои ожидания и убедился, что данные, скорее всего, верные.
Это наглядный пример того, что изначально вы, возможно, будете ставить под сомнение все источники данных. Я всегда исхожу из базового предположения, что данные могут быть ошибочными, и моя работа в том, чтобы выяснить источник проблемы. Я не впадаю в крайности, но непременно провожу определенную работу (например, пользуюсь функциями summary(), pairs() и boxplot() в R, чтобы убедиться, что в данных нет очевидных ошибок. При работе с базами данных NHANES мы с коллегами создали гистограммы всех показателей, чтобы отследить случайные образцы, бимодальное распределение и другие резко выделяющиеся значения. Подсчет числа записей на конкретную дату может послужить еще одним простым тестом. Подобный разведочный анализ данных может быть простым, быстрым и чрезвычайно ценным.
ПРОПУЩЕННЫЕ ДАННЫЕ
Одна из наиболее существенных проблем — неполные или пропущенные данные (рис. 2.3C). Эта ошибка может быть двух видов: пропуск данных в записи или пропуск всей записи.