В своей работе я часто работаю с наборами данных других людей, неспециалисты приносят мне клинические данные, и я помогаю им обобщать их и выполнять статистические тесты.
Проблема, с которой я сталкиваюсь, состоит в том, что наборы данных, которые я привожу, почти всегда полны опечаток, несоответствий и других проблем. Мне интересно знать, есть ли у других людей стандартные тесты, которые они делают, чтобы проверить какие-либо входящие наборы данных.
Раньше я рисовал гистограммы для каждой переменной, просто чтобы посмотреть, но теперь я понимаю, что существует множество ужасных ошибок, которые могут пережить этот тест. Например, у меня был набор данных о повторных измерениях на днях, когда для некоторых людей повторное измерение было идентичным во Времени 2, как и во Времени 1. Впоследствии, как и следовало ожидать, это оказалось неверным. В другом наборе данных был человек, который прошел путь от очень серьезного беспорядка (представленного высокой оценкой) до отсутствия проблем, представленный нулями по всем направлениям. Это просто невозможно, хотя я не смог доказать это окончательно.
Итак, какие базовые тесты можно запустить для каждого набора данных, чтобы убедиться, что в них нет опечаток и они не содержат невозможных значений?
Заранее спасибо!
Ответы:
Это помогает понять, как данные были записаны.
Позвольте мне поделиться историей . Когда-то давным-давно многие наборы данных хранились только в распечатанном виде. В те мрачные дни я заключил контракт с организацией (с большой родословной и размерами; многие из вас, вероятно, владеют ее запасами), чтобы компьютеризировать около 10 ^ 5 записей данных мониторинга окружающей среды на одном из ее производственных предприятий. Для этого я лично разметил полку лабораторных отчетов (чтобы показать, где были данные), создал формы ввода данных и заключил контракт с временным агентством для грамотныхработники, чтобы ввести данные в формы. (Да, вам пришлось доплачивать за людей, которые могли читать.) Из-за ценности и чувствительности данных я проводил этот процесс параллельно с двумя работниками одновременно (которые обычно менялись изо дня в день). Прошло пару недель. Я написал программное обеспечение для сравнения двух наборов записей, систематически выявляя и исправляя все обнаруженные ошибки.
Мальчик был там ошибки! Что может пойти не так? Хороший способ описать и измерить ошибки - на уровне базовой записи, которая в этой ситуации представляла собой описание одного аналитического результата (часто концентрации некоторого химического вещества) для конкретного образца, полученного в данной точке мониторинга на данная дата. Сравнивая два набора данных, я обнаружил:
Ошибки пропусков : один набор данных будет включать запись, другой - нет. Обычно это происходит потому, что (а) одна или две строки будут пропущены внизу страницы или (б) вся страница будет пропущена.
Очевидные ошибки упущения , которые действительно были ошибками ввода данных. Запись идентифицируется по имени точки мониторинга, дате и «аналиту» (обычно химическое название). Если какой-либо из них имеет типографскую ошибку, он не будет сопоставлен с другими записями, с которыми он связан. В результате правильная запись исчезает и появляется неправильная запись.
Поддельное дублирование . Одни и те же результаты могут появляться в нескольких источниках, могут быть расшифрованы несколько раз и кажутся истинными повторными измерениями, когда их нет. Дубликаты легко обнаружить, но решение, являются ли они ошибочными, зависит от того, должны ли дубликаты появляться в наборе данных. Иногда ты просто не можешь знать.
Откровенные ошибки ввода данных . «Хороших» легко поймать, потому что они меняют тип датума: например, использование буквы «О» для цифры «0» превращает число в не число. Другие хорошие ошибки меняют значение настолько, что его легко обнаружить с помощью статистических тестов. (В одном случае начальная цифра в «1 000 010 мг / кг» была обрезана, оставив значение 10. Это огромное изменение, когда вы говорите о концентрации пестицидов!) Плохие ошибки трудно уловить, поскольку они меняются значение в единицу, которое (вроде) соответствует остальным данным, например, набрав «80» для «50». (Такая ошибка постоянно происходит с программным обеспечением OCR.)
Транспозиции . Правильные значения могут быть введены, но связаны с неправильными ключами записи. Это коварно, потому что глобальные статистические характеристики набора данных могут остаться неизменными, но между группами могут возникать ложные различия. Вероятно, только такой механизм, как двойная запись, способен обнаруживать эти ошибки.
Как только вы узнаете об этих ошибках и узнаете или имеете теорию о том, как они возникают, вы можете написать сценарии для просмотра ваших наборов данных на предмет возможного наличия таких ошибок и пометить их для дальнейшего внимания. Вы не всегда можете разрешить их, но, по крайней мере, вы можете включить поле «комментарий» или «флаг качества», чтобы сопровождать данные во время их последующего анализа.
С тех пор я уделил внимание вопросам качества данных и получил гораздо больше возможностей для всесторонней проверки больших статистических наборов данных. Ни один не идеален; все они выигрывают от проверок качества. Некоторые из принципов, которые я разработал за эти годы, включают в себя
По возможности создавайте избыточность в процедурах ввода и транскрипции данных: контрольные суммы, итоги, повторные записи: все, что поддерживает автоматические внутренние проверки согласованности.
Если возможно, создайте и используйте другую базу данных, которая описывает, как должны выглядеть данные: это компьютерно-читаемые метаданные. Например, в эксперименте с наркотиками вы можете заранее знать, что каждого пациента будут видеть три раза. Это позволяет вам создать базу данных со всеми правильными записями и их идентификаторами со значениями, которые только что ожидали быть заполненными. Заполните их данными, данными вам, а затем проверьте на наличие дубликатов, пропусков и непредвиденных данных.
Всегда нормализуйте свои данные (в частности, введите их как минимум в четвертую нормальную форму ), независимо от того, как вы планируете форматировать набор данных для анализа. Это заставляет вас создавать таблицы для каждой концептуально отличной сущности, которую вы моделируете. (В случае окружающей среды это будет включать таблицы мест мониторинга, образцы, химикаты (свойства, типичные диапазоны и т. Д.), Тесты этих образцов (тест обычно охватывает набор химических веществ) и отдельные результаты этих тестов. При этом вы создаете множество эффективных проверок качества и согласованности данных и выявляете множество потенциально отсутствующих, дублирующих или противоречивых значений.
Эти усилия (которые требуют хороших навыков обработки данных, но просты) удивительно эффективны. Если вы стремитесь анализировать большие или сложные наборы данных и не обладаете хорошими рабочими знаниями по реляционным базам данных и их теории, добавьте это в свой список вещей, которые необходимо изучить как можно скорее. Это будет приносить дивиденды на протяжении всей вашей карьеры.
Всегда выполняйте столько «глупых» проверок, сколько сможете . Это автоматическая проверка очевидных вещей, таких как даты попадают в ожидаемые периоды, количество пациентов (или химикатов или чего-либо еще) всегда складывается правильно, значения всегда разумны (например, pH должен быть между 0 и 14 и, возможно, в гораздо более узкий диапазон, скажем, для показаний pH крови) и т. д. Именно в этом может помочь экспертиза предметной области: статистик может безбоязненно задавать глупые вопросы экспертам и использовать ответы для проверки данных.
Конечно, можно сказать гораздо больше - предмет стоит книги - но этого должно быть достаточно, чтобы стимулировать идеи.
источник
@whuber делает отличные предложения; Я бы только добавил это: участки, участки, участки, участки. Диаграммы рассеяния, гистограммы, коробочные диаграммы, линейные диаграммы, тепловые карты и все, что вы можете придумать. Конечно, как вы обнаружили, есть ошибки, которые не будут очевидны ни на одном из графиков, но они являются хорошим началом. Просто убедитесь, что вы понимаете, как ваше программное обеспечение обрабатывает недостающие данные и т. Д.
В зависимости от контекста вы можете проявить творческий подход. Одна вещь, которую мне нравится делать с многомерными данными, - это подходить к какой-то факторной модели / вероятностному PCA (то, что будет делать множественное вложение для отсутствующих данных) и смотреть на оценки как можно большего числа компонентов. Точки данных, которые получают высокие оценки по менее важным компонентам / факторам, часто являются выбросами, которые вы могли бы не увидеть иначе.
источник
Большие вещи, которые я склонен проверять:
Отличный вопрос Кстати, я надеюсь прочитать опыт других людей по этому вопросу.
источник
Когда у вас есть измерения по времени (« продольные данные »), часто бывает полезно проверить градиенты, а также предельные распределения. Этот градиент можно рассчитать в разных масштабах. В более общем смысле вы можете выполнять значимые преобразования ваших данных (фурье, вейвлет) и проверять распределения маргиналов преобразованных данных.
источник
Несколько я всегда прохожу:
Это первые шаги, которые я прошёл, чтобы убедиться, что набор данных даже готов для чего-то вроде исследовательского анализа данных. Просто сижу, бродя по данным, некоторые говорят: "Это ... кажется правильным?"
источник
Я бы использовал метод приемочной выборки для каждого столбца (он дает номер отсечения, где вы можете провести границу между высоким качеством и низким качеством), для этого есть онлайн-калькулятор.
источник