Нежное введение в тесты нормальности в Python
Дата публикации 2018-05-11
Важным моментом принятия решения при работе с выборкой данных является использование параметрических или непараметрических статистических методов.
Параметрические статистические методы предполагают, что данные имеют известное и специфическое распределение, часто распределение Гаусса. Если выборка данных не является гауссовой, то предположения о параметрических статистических тестах нарушаются, и должны использоваться непараметрические статистические методы.
Существует ряд методов, которые можно использовать для проверки отклонения выборки данных от распределения Гаусса, называемых тестами нормальности.
В этом руководстве вы узнаете, как важно проверить, отличается ли выборка данных от нормального распределения, и набор методов, которые можно использовать для оценки выборки данных.
После завершения этого урока вы узнаете:
- То, является ли выборка нормальной, диктует типы статистических методов, которые следует использовать с выборкой данных.
- Графические методы для определения отклонений от нормы, такие как гистограммы и график Q-Q.
- Статистические тесты нормальности для количественного определения отклонений от нормы.
- Обновление май / 2018Обновленная интерпретация результатов теста Андерсона-Дарлинга, спасибо, Эли.
- Обновление май / 2018: Обновлен язык об «отклонении» и «невозможности отклонения» H0.
Обзор учебника
Этот урок состоит из 5 частей; они есть:
- Допущение нормальности
- Тестовый набор данных
- Визуальные проверки нормальности
- Статистические тесты нормальности
- Какой тест вы должны использовать?
Допущение нормальности
Большая часть области статистики связана с данными, которые предполагают, что они были взяты из гауссовского распределения.
Если используются методы, предполагающие распределение по Гауссу, а ваши данные взяты из другого распределения, результаты могут быть вводящими в заблуждение или просто ошибочными.
Существует ряд методов, которые можно проверить, является ли выборка данных гауссовой или достаточно гауссовой, чтобы использовать стандартные методы, или достаточно негауссовой, чтобы вместо этого использовать непараметрические статистические методы.
Это ключевой момент при выборе статистических методов для выборки данных. Мы можем резюмировать это решение следующим образом:
Существует также некоторая середина, где мы можем предположить, что данные достаточно гауссовы, чтобы использовать параметрические методы, или что мы можем использовать методы подготовки данных, чтобы преобразовать данные в достаточно гауссовские, чтобы использовать параметрические методы.
Существует три основных области, в которых вам может потребоваться провести оценку выборки данных в проекте машинного обучения; они есть:
- Ввод данных в модель в случае подгонки моделей.
- Результаты оценки модели в случае выбора модели.
- Остаточные ошибки из модельных прогнозов в случае регрессии.
В этом уроке мы рассмотрим два класса методов проверки того, является ли образец данных гауссовским:
- Графические методы, Это методы построения данных и качественной оценки того, выглядят ли данные гауссовскими.
- Статистические тесты, Это методы, которые вычисляют статистику по данным и определяют, насколько вероятно, что данные были получены из распределения Гаусса.
Методы этого типа часто называют тестами нормальности.
Тестовый набор данных
Прежде чем мы начнем смотреть на тесты нормальности, давайте сначала разработаем тестовый набор данных, который мы можем использовать в этом уроке.
Мы сгенерируем небольшую выборку случайных чисел из гауссовского распределения.
Выбор гауссовских случайных чисел для тестового набора данных означает, что мы ожидаем, что каждый тест правильно идентифицирует распределение, тем не менее, небольшой размер выборки может внести некоторый шум в результаты.
Мы будем использоватьrandn ()Функция NumPy для генерации случайных гауссовских чисел со средним значением 0 и стандартным отклонением 1, так называемые стандартные, нормальные переменные. Затем мы сместим их на среднее значение 50 и стандартное отклонение 5.
Полный пример приведен ниже.
При выполнении примера генерируется образец и выводится среднее значение и стандартное отклонение образца.
Мы можем видеть, что среднее и стандартное отклонение являются разумными, но приблизительными оценками истинного базового среднего значения и стандартного отклонения, учитывая небольшой размер выборки.
Визуальные проверки нормальности
Мы можем создать графики данных, чтобы проверить, является ли это гауссовским.
Эти проверки являются качественными, поэтому менее точными, чем статистические методы, которые мы рассчитаем в следующем разделе. Тем не менее, они быстрые и, как и статистические тесты, все равно должны быть интерпретированы, прежде чем вы сможете позвонить по поводу выборки данных.
В этом разделе мы рассмотрим два распространенных метода визуальной проверки набора данных, чтобы проверить, был ли он взят из гауссовского распределения.
График гистограммы
Простым и часто используемым графиком для быстрой проверки распределения выборки данных является гистограмма.
На гистограмме данные делятся на заранее определенное количество групп, называемых бинами. Затем данные сортируются в каждую ячейку, и счетчик количества наблюдений в каждой ячейке сохраняется.
На графике показаны ячейки по оси x, сохраняющие их порядковые связи, и количество в каждом ячейке по оси y.
Образец данных имеет гауссово распределение графика гистограммы, показывая знакомую форму колокола.
Гистограмма может быть создана с помощьюфункция Hist () Matplotlib, По умолчанию количество бинов автоматически оценивается по выборке данных.
Полный пример, демонстрирующий график гистограммы для тестовой задачи, приведен ниже.
При выполнении примера создается график гистограммы, показывающий количество наблюдений в каждом бине.
Мы можем видеть гауссовидную форму данных, которая, хотя и не сильно знакома в форме колокола, является грубым приближением.
Квантиль-Квантиль Участок
Другим популярным графиком для проверки распределения выборки данных является график квантиль-квантиль, график Q-Q или график QQ для краткости.
Этот график генерирует собственную выборку идеализированного распределения, с которым мы сравниваем, в данном случае распределение Гаусса. Идеализированные образцы делятся на группы (например, 5), называемые квантилями. Каждая точка данных в выборке связана с аналогичным элементом из идеализированного распределения с тем же кумулятивным распределением.
Результирующие точки построены в виде точечной диаграммы с идеализированным значением на оси x и выборкой данных на оси y.
Идеальное совпадение для распределения будет показано линией точек под углом 45 градусов от нижнего левого угла графика до правого верхнего угла. Часто на графике рисуется линия, чтобы прояснить это ожидание. Отклонения по точкам от линии показывают отклонение от ожидаемого распределения.
Мы можем разработать сюжет QQ на Python, используяФункция qqplot () statsmodels, Функция берет выборку данных и по умолчанию предполагает, что мы сравниваем ее с гауссовым распределением. Мы можем нарисовать стандартизированную линию, установив ‘линия‘Аргумент‘s«.
Полный пример построения набора тестовых данных в виде графика QQ приведен ниже.
При выполнении примера создается график QQ, показывающий график рассеяния точек в диагональной линии, который точно соответствует ожидаемому диагональному шаблону для выборки из распределения Гаусса.
Есть несколько небольших отклонений, особенно в нижней части графика, что и следовало ожидать, учитывая небольшую выборку данных.
Статистические тесты нормальности
Существует много статистических тестов, которые мы можем использовать для количественной оценки того, выглядит ли выборка данных так, как будто она получена из гауссовского распределения.
Каждый тест делает разные предположения и рассматривает разные аспекты данных.
В этом разделе мы рассмотрим 3 наиболее часто используемых теста, которые вы можете применить к своим собственным образцам данных.
Интерпретация теста
Прежде чем вы сможете применить статистические тесты, вы должны знать, как интерпретировать результаты.
Каждый тест вернет как минимум две вещи:
- статистика: Количество, рассчитанное с помощью теста, которое можно интерпретировать в контексте теста, сравнивая его с критическими значениями из распределения статистики теста.
- р-значение: Используется для интерпретации теста, в данном случае, была ли выборка получена из гауссовского распределения.
Каждый тест вычисляет статистику конкретного теста. Эта статистика может помочь в интерпретации результата, хотя может потребовать более глубокого знания статистики и более глубокого знания конкретного статистического теста. Вместо этого значение p можно использовать для быстрого и точного интерпретации статистики в практических приложениях.
Тесты предполагают, что образец был взят из распределения Гаусса. Технически это называется нулевой гипотезой, или H0. Выбран пороговый уровень, называемый альфа, обычно 5% (или 0,05), который используется для интерпретации значения p.
В реализации этих тестов SciPy вы можете интерпретировать значение p следующим образом.
- p & lt; = альфа: отклонить H0, не нормально.
- p & gt; альфа: Не в состоянии отклонить H0, нормально.
Это означает, что, в общем, мы ищем результаты с большим значением p, чтобы подтвердить, что наша выборка, вероятно, была взята из гауссовского распределения.
Результат выше 5% не означает, что нулевая гипотеза верна. Это означает, что это вполне вероятно, учитывая имеющиеся доказательства. Значение p не является вероятностью того, что данные соответствуют гауссовскому распределению; это можно рассматривать как значение, которое помогает нам интерпретировать статистический тест.
Тест Шапиро-Вилка
Тест Шапиро-Вилкаоценивает выборку данных и дает количественную оценку вероятности того, что данные были получены из гауссовского распределения, названного по имени Самуэля Шапиро и Мартина Уилка.
На практике тест Шапиро-Уилка считается надежным тестом нормальности, хотя есть некоторые предположения, что этот тест может быть пригоден для небольших выборок данных, например, тысячи наблюдений или меньше
shapiro () SciPyФункция рассчитает Шапиро-Уилк по заданному набору данных. Функция возвращает как W-статистику, рассчитанную тестом, так и значение p.
Полный пример выполнения теста Шапиро-Уилка на наборе данных приведен ниже.
При выполнении примера сначала вычисляется тест для выборки данных, затем выводится статистика и вычисленное значение p.
Значение p интересует и находит, что данные, скорее всего, взяты из гауссовского распределения.
Тест д’Агостино на K ^ 2
K’2-тест Д’Агостиновычисляет итоговую статистику на основе данных, а именно, эксцесс и асимметрия, чтобы определить, отклоняется ли распределение данных от нормального распределения, названного по имени Ralph D’Agostino.
- скосявляется количественной оценкой того, насколько распределение сдвигается влево или вправо, мерой асимметрии в распределении.
- эксцессколичественно определяет, какая часть распределения находится в хвосте. Это простой и часто используемый статистический тест на нормальность.
Тест D’Agostino K ^ 2 доступен черезфункция normaltest () SciPyи возвращает статистику теста и значение p.
Полный пример теста К ^ 2 Д’Агостино на наборе данных приведен ниже.
При выполнении примера вычисляется статистика и печатается статистика и значение p.
Значение p интерпретируется по отношению к альфа 5% и обнаруживает, что тестовый набор данных не отличается значительно от нормального.
Тест Андерсона-Дарлинга
Тест Андерсона-Дарлингаявляется статистическим тестом, который можно использовать для оценки того, поступает ли выборка данных из одной из множества известных выборок данных, названной в честь Теодора Андерсона и Дональда Дарлинга.
Его можно использовать для проверки правильности выборки данных. Тест представляет собой модифицированную версию более сложного непараметрического статистического критерия соответствия, называемогоТест Колмогорова-Смирнова,
Особенностью теста Андерсона-Дарлинга является то, что он возвращает список критических значений, а не одно значение p. Это может послужить основой для более тщательной интерпретации результата.
функция anderson () SciPyреализует тест Андерсона-Дарлинга. Он принимает в качестве параметров образец данных и имя дистрибутива, чтобы проверить его. По умолчанию тест проверяет распределение по Гауссу (Dist =»норма»).
Полный пример расчета теста Андерсона-Дарлинга на примере задачи приведен ниже.
При выполнении примера вычисляется статистика по набору тестовых данных и выводятся критические значения.
Критические значения в статистическом тесте — это диапазон предварительно определенных границ значимости, при которых H0 может быть отклонен, если расчетная статистика меньше критического значения. Вместо простого значения p тест возвращает критическое значение для диапазона различных обычно используемых уровней значимости.
Мы можем интерпретировать результаты, не сумев отвергнуть нулевую гипотезу о том, что данные являются нормальными, если рассчитанная статистика теста меньше критического значения на выбранном уровне значимости.
Мы видим, что на каждом уровне значимости тест обнаружил, что данные соответствуют нормальному распределению
Какой тест вы должны использовать?
Мы рассмотрели несколько тестов нормальности, но это не все тесты, которые существуют.
Итак, какой тест вы используете?
Я рекомендую использовать их все в ваших данных, где это уместно.
Тогда возникает вопрос, как вы интерпретируете результаты? Что делать, если тесты не согласны, что они часто будут?
У меня есть два предложения, чтобы вы могли подумать над этим вопросом.
Hard Fail
Ваши данные могут быть ненормальными по разным причинам. Каждый тест рассматривает вопрос о том, была ли выборка получена из гауссовского распределения с несколько иной точки зрения.
Сбой одного теста нормальности означает, что ваши данные не являются нормальными. Так просто.
Вы можете либо выяснить, почему ваши данные не являются нормальными, и, возможно, использовать методы подготовки данных, чтобы сделать данные более нормальными.
Или вы можете начать изучать использование непараметрических статистических методов вместо параметрических.
Soft Fail
Если некоторые методы предполагают, что выборка является гауссовой, а некоторые нет, то, возможно, примите это как показатель того, что ваши данные подобны гауссовской.
Во многих ситуациях вы можете обрабатывать ваши данные, как если бы они были гауссовскими, и использовать выбранные вами параметрические статистические методы.
расширения
В этом разделе перечислены некоторые идеи по расширению учебника, которые вы, возможно, захотите изучить.
- Перечислите два дополнительных примера, когда вы думаете, что тест на нормальность может быть полезен в проекте машинного обучения.
- Разработайте свой собственный надуманный набор данных и примените каждый тест на нормальность.
- Загрузите стандартный набор данных машинного обучения и примените тесты нормальности к каждой действительной переменной.
Если вы исследуете любое из этих расширений, я хотел бы знать,
Дальнейшее чтение
Этот раздел предоставляет больше ресурсов по теме, если вы хотите углубиться.
- API numpy.random.seed ()
- API numpy.random.randn ()
- API scipy.stats.normaltest ()
- API scipy.stats.shapiro ()
- API scipy.stats.anderson ()
- API statsmodels.graphics.gofplots.qqplot ()
- API matplotlib.pyplot.hist ()
статьи
- Тест на нормальность в Википедии
- Гистограмма в Википедии
- Q – Q сюжет в Википедии
- Тест д’Агостино на K-квадрат в Википедии
- Тест Андерсона – Дарлинга в Википедии
- Тест Шапиро – Вилка в Википедии
Резюме
В этом руководстве вы обнаружили важность проверки того, отличается ли выборка данных от нормального распределения, и набор методов, которые можно использовать для оценки выборки данных.
В частности, вы узнали:
- То, является ли выборка нормальной, диктует типы статистических методов, которые следует использовать с выборкой данных.
- Графические методы для определения отклонений от нормы, такие как гистограммы и график Q-Q.
- Статистические тесты нормальности для количественного определения отклонений от нормы.
У вас есть вопросы?
Задайте свои вопросы в комментариях ниже, и я сделаю все возможное, чтобы ответить.
Источник
Python, исследование данных и выборы: часть 2
Пост №2 для начинающих посвящен описательным статистикам, группированию данных и нормальному распределению. Все эти сведения заложат основу для дальнейшего анализа электоральных данных. Предыдущий пост см. здесь.
Описательные статистики
Описательные статистические величины, или статистики, — это числа, которые используются для обобщения и описания данных. В целях демонстрации того, что мы имеем в виду, посмотрим на столбец с данными об электорате Electorate. Он показывает суммарное число зарегистрированных избирателей в каждом избирательном округе:
Мы уже очистили столбец, отфильтровав пустые значения ( nan ) из набора данных, и поэтому предыдущий пример должен вернуть суммарное число избирательных округов.
Описательные статистики, так называемые сводные статистики, представляют собой разные подходы к измерению свойств последовательностей чисел. Они помогают охарактеризовать последовательность и способны выступать в качестве ориентира для дальнейшего анализа. Начнем с двух самых базовых статистик, которые мы можем вычислить из последовательности чисел — ее среднее значение и дисперсию (варианс).
Среднее значение
Наиболее распространенный способ усреднить набор данных — взять его среднее значение. Среднее значение на самом деле представляет собой один из нескольких способов измерения центра распределения данных.