Меню

Таблица нормального распределения python



Нежное введение в тесты нормальности в Python

Дата публикации 2018-05-11

Важным моментом принятия решения при работе с выборкой данных является использование параметрических или непараметрических статистических методов.

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

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

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

После завершения этого урока вы узнаете:

  • То, является ли выборка нормальной, диктует типы статистических методов, которые следует использовать с выборкой данных.
  • Графические методы для определения отклонений от нормы, такие как гистограммы и график Q-Q.
  • Статистические тесты нормальности для количественного определения отклонений от нормы.
  • Обновление май / 2018Обновленная интерпретация результатов теста Андерсона-Дарлинга, спасибо, Эли.
  • Обновление май / 2018: Обновлен язык об «отклонении» и «невозможности отклонения» H0.

Обзор учебника

Этот урок состоит из 5 частей; они есть:

  1. Допущение нормальности
  2. Тестовый набор данных
  3. Визуальные проверки нормальности
  4. Статистические тесты нормальности
  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 ) из набора данных, и поэтому предыдущий пример должен вернуть суммарное число избирательных округов.

Описательные статистики, так называемые сводные статистики, представляют собой разные подходы к измерению свойств последовательностей чисел. Они помогают охарактеризовать последовательность и способны выступать в качестве ориентира для дальнейшего анализа. Начнем с двух самых базовых статистик, которые мы можем вычислить из последовательности чисел — ее среднее значение и дисперсию (варианс).

Среднее значение

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

x̅=\frac<1 data-lazy-src=

Среднее значение числового ряда вычисляется на Python следующим образом:

Мы можем воспользоваться нашей новой функцией mean для вычисления среднего числа избирателей в Великобритании:

На самом деле, библиотека pandas уже содержит функцию mean, которая гораздо эффективнее вычисляет среднее значение последовательности. В нашем случае ее можно применить следующим образом:

Медиана

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

Медианное значение электората Великобритании составляет:

Библиотека pandas тоже располагает встроенной функцией для вычисления медианного значения, которая так и называется median .

Дисперсия

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

Она может содержать целые числа от одного до девяноста девяти либо сорок девять нулей и пятьдесят девяносто девяток, а может быть и так, что она девяносто восемь раз содержит отрицательную единицу и одно число 5048, или же вообще все значения могут быть равны 50.

Дисперсия (варианс) последовательности чисел показывает «разброс» данных вокруг среднего значения. К примеру, данные, приведенные выше, имели бы разную дисперсию. На языке математики дисперсия обозначается следующим образом:

s^2=\frac<1 data-lazy-src=

Для вычисления квадрата выражения используется оператор языка Python возведения в степень ** .

Стандартное отклонение

Поскольку мы взяли средний квадрат отклонения, т.е. получили квадрат отклонения и затем его среднее, то единицы измерения дисперсии (варианса) тоже будут в квадрате, т.е. дисперсия электората Великобритании будет измеряться «людьми в квадрате». Несколько неестественно рассуждать об избирателях в таком виде. Единицу измерения можно привести к более естественному виду, снова обозначающему «людей», путем извлечения квадратного корня из дисперсии (варианса). В результате получим так называемое стандартное отклонение, или среднеквадратичное отклонение:

В библиотеке pandas функции для вычисления дисперсии (варианса) и стандартного отклонения имплементированы соответственно, как var и std . При этом последняя по умолчанию вычисляет несмещенное значение, поэтому, чтобы получить тот же самый результат, нужно применить именованный аргумент ddof=0 , который сообщает, что требуется вычислить смещенное значение стандартного отклонения:

Квантили

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

Для примера рассмотрим следующую ниже последовательность чисел:

Отсортированная последовательность состоит из семи чисел, поэтому медианой является число 21 четвертое в ряду. Его также называют 0.5-квантилем. Мы можем получить более полную картину последовательности чисел, взглянув на 0.0 (нулевой), 0.25, 0.5, 0.75 и 1.0 квантили. Все вместе эти цифры не только показывают медиану, но также обобщают диапазон данных и сообщат о характере распределения чисел внутри него. Они иногда упоминаются в связи с пятичисловой сводкой.

Один из способов составления пятичисловой сводки для данных об электорате Великобритании показан ниже. Квантили можно вычислить непосредственно в pandas при помощи функции quantile . Последовательность требующихся квантилей передается в виде списка.

Когда квантили делят диапазон на четыре равных диапазона, как показано выше, то они называются квартилями. Разница между нижним (0.25) и верхним (0.75) квартилями называется межквартильным размахом, или иногда сокращенно МКР. Аналогично дисперсии (варианса) вокруг среднего значения, межквартильный размах измеряет разброс данных вокруг медианы.

Группирование данных в корзины

В целях развития интуитивного понимания в отношении того, что именно все эти расчеты разброса значений измеряют, мы можем применить метод под названием группировка в частотные корзины (binning). Когда данные имеют непрерывный характер, использование специального словаря для подсчета частот Counter (подобно тому, как он использовался при подсчете количества пустых значений в наборе данных об электорате) становится нецелесообразным, поскольку никакие два значения не могут быть одинаковыми. Между тем, общее представление о структуре данных можно все-равно получить, сгруппировав для этого данные в частотные корзины (bins).

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

На приведенном выше рисунке показано 15 значений x, разбитых на 5 равноразмерных корзин. Подсчитав количество точек, попадающих в каждую корзину, мы можем четко увидеть, что большинство точек попадают в корзину по середине, а меньшинство — в корзины по краям. Следующая ниже функция Python nbin позволяет добиться того же самого результата:

Например, мы можем разбить диапазон 0-14 на 5 корзин следующим образом:

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

Количество точек в крайних корзинах (0 и 4) значительно ниже, чем в корзинах в середине — количества, судя по всему, растут по направлению к медиане, а затем снова снижаются. В следующем разделе мы займемся визуализацией формы этих количеств.

Гистограммы

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

Мы уже увидели, каким образом можно выполнить разбиение данных на корзины самостоятельно, однако в библиотеке pandas уже содержится функция hist , которая разбивает данные и визуализирует их в виде гистограммы.

Приведенный выше пример сгенерирует следующий ниже график:

Число корзин, на которые данные разбиваются, можно сконфигурировать, передав в функцию при построении гистограммы именованный аргумент bins :

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

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

Ниже показана гистограмма теперь уже из 20 корзин:

Окончательный график, состоящий из 20 корзин, судя по всему, пока лучше всего представляет эти данные.

Наряду со средним значением и медианой, есть еще один способ измерить среднюю величину последовательности. Это мода. Мода — это значение, встречающееся в последовательности наиболее часто. Она определена исключительно только для последовательностей, имеющих по меньшей мере одно дублирующее значение; во многих статистических распределениях это не так, и поэтому для них мода не определена. Тем не менее, пик гистограммы часто называют модой, поскольку он соответствует наиболее распространенной корзине.

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

Нормальное распределение

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

Распределение названо нормальным распределением из-за того, что оно очень часто встречается в природе. Галилей заметил, что ошибки в его астрономических измерениях подчинялись распределению, где малые отклонения от среднего значения встречались чаще, чем большие. Вклад великого математика Гаусса в описание математической формы этих ошибок привел к тому, что это распределение стали называть в его честь распределением Гаусса.

Читайте также:  Различие между римом и грецией таблица

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

Центральная предельная теорема

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

В программировании типичным распределением является равномерное распределение. Оно представлено распределением чисел, генерируемых функцией библиотеки scipy stats.uniform.rvs : в справедливом генераторе случайных чисел все числа имеют равные шансы быть сгенерированными. Мы можем увидеть это на гистограмме, многократно генерируя серию случайных чисел между 0 и 1 и затем построив график с результатами.

Обратите внимание, что в этом примере мы впервые использовали тип Series библиотеки pandas для числового ряда данных.

Приведенный выше пример создаст следующую гистограмму:

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

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

Приведенный выше пример сгенерирует результат, аналогичный следующей ниже гистограмме:

Хотя величина среднего значения близкая к 0 или 1 не является невозможной, она является чрезвычайно невероятной и становится менее вероятной по мере роста числа усредненных чисел и числа выборочных средних. Фактически, на выходе получается результат очень близкий к нормальному распределению.

Этот результат, когда средний эффект множества мелких случайных колебаний в итоге приводит к нормальному распределению, называется центральной предельной теоремой, иногда сокращенно ЦПТ, и играет важную роль для объяснения, почему нормальное распределение встречается так часто в природных явлениях.

До 20-ого века самого термина еще не существовало, хотя этот эффект был зафиксирован еще в 1733 г. французским математиком Абрахамом де Mуавром, который использовал нормальное распределение, чтобы аппроксимировать число орлов в результате бросания уравновешенной монеты. Исход бросков монеты лучше всего моделировать при помощи биномиального распределения. В отличие от центральной предельной теоремы, которая позволяет получать выборки из приближенно нормального распределения, библиотека scipy содержит функции для эффективного генерирования выборок из самых разнообразных статистических распределений, включая нормальное:

Отметим, что в функции sp.random.normal параметр loc – это среднее значение, scale – дисперсия и size – размер выборки. Приведенный выше пример сгенерирует следующую гистограмму нормального распределения:

По умолчанию среднее значение и стандартное отклонение для получения нормального распределения равны соответственно 0 и 1.

Примеры исходного кода для этого поста находятся в моем репо на Github. Все исходные данные взяты в репозитории автора книги.

Следующая часть, часть 3, серии постов «Python, исследование данных и выборы» посвящена генерированию распределений, их свойствам, а также графикам для их сопоставительного анализа

Источник

python pylab график нормального распределения

учитывая среднее и дисперсию, существует ли простой вызов функции pylab, который построит нормальное распределение?

7 ответов:

gass distro, mean is 0 variance 1

Я не думаю, что есть функция, которая делает все это в один вызов. Однако вы можете найти Гауссову функцию плотности вероятности в scipy.stats .

Так что самый простой способ я мог бы придумать это:

источники:

  • http://www.johndcook.com/distributions_scipy.html
  • http://docs.scipy.org/doc/scipy/reference/stats.html
  • http://telliott99.blogspot.com/2010/02/plotting-normal-distribution-with.html

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

для этого :

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

вы можете получить cdf легко. так что pdf через cdf

Я только что вернулся к этому, и мне пришлось установить scipy как matplotlib.mlab дал мне сообщение об ошибке MatplotlibDeprecationWarning: scipy.stats.norm.pdf при попытке примере выше. Итак, образец теперь:

вместо этого используйте seaborn я использую distplot seaborn со средним=5 std=3 из 1000 значений

вы получите нормальную кривую распределения

Источник

Модуль random в Python

Пакет Numpy предлагает модуль random для генерации случайных чисел в Python. В этом руководстве мы узнаем, как использовать этот модуль и какие функции предлагает.

  1. Что такое случайные числа?
  2. Как сгенерировать случайные числа с помощью Numpy?
  3. Как создать случайный массив, который следует нормальному распределению?
  4. Как создать случайный массив, который следует равномерному распределению?
  5. Как выбрать случайным образом из списка?
  6. Как случайным образом выбирать числа из набора для заполнения массива?
  7. Заключение

Что такое случайные числа?

Случайные числа – это числа, которые нельзя предсказать логически. Поскольку компьютеры, генерирующие случайные числа, должны работать по алгоритму, они называются псевдослучайными числами.

Как сгенерировать случайные числа с помощью Numpy?

Чтобы сгенерировать случайные числа в Python, мы сначала импортируем пакет Numpy.

Теперь мы можем сгенерировать число, используя:

При повторном запуске вы получите:

Он всегда возвращает число от 0 до 1. В качестве альтернативы вы также можете использовать:

При повторном запуске получаем:

Мы можем использовать это для создания массивов Numpy со случайными числами, которые следуют нормальному распределению.

Как создать случайный массив, который следует нормальному распределению?

Нормальное распределение – это такое распределение, в котором среднее значение, вид и медиана равны. В этом случае данные распределяются симметрично по центру. График нормального распределения выглядит как колокол. Вот почему ее также называют «колоколообразной кривой».

Чтобы создать массив со случайными числами в соответствии с нормальным распределением, используйте:

При повторном запуске получаем:

Мы также можем создать массив из 5.

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

Мы также можем создавать массивы Numpy, которые следуют равномерному распределению.

Как создать случайный массив, который следует равномерному распределению?

Чтобы создать массив со случайными записями, которые следуют равномерному распределению, используйте:

При повторном запуске получаем:

Как выбрать случайным образом из списка?

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

При повторном запуске получаем:

Вы также можете использовать его для выбора символов или строк из списка.

При повторном запуске получаем:

Как случайным образом выбирать числа из набора для заполнения массива?

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

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

При повторном запуске получаем:

Заключение

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

Источник

Adblock
detector