В этой статье мы рассмотрим вероятностную массу и функцию плотности вероятности в этом примере. Вы увидите, как понимать и представлять эти функции распределения и их связь с гистограммами. В этом примере мы рассмотрим массу вероятности и функцию плотности вероятности. Вы увидите, как понимать и представлять эти функции распределения и их связь с гистограммами.
Детерминированные процессы дают одинаковые результаты при многократном повторении. Это не относится к случайным величинам, которые описывают случайные события, в которых случайность характеризует процесс.
Это означает, что случайные величины могут принимать различные значения. Как вы можете описать и сравнить эти ценности? Один хороший способ - использовать вероятность того, что произойдет каждый результат.Распределение вероятностей случайной переменной - это функция, которая принимает пространство выборки в качестве входных данных и возвращает вероятности: другими словами, она сопоставляет возможные результаты с их вероятностями. В этом разделе вы узнаете о распределении вероятностей для дискретных и непрерывных переменных.
Вероятностные массовые функции
Функции вероятности дискретных случайных величин называются функциями вероятностных масс (или PMF).Например, предположим, что вы проводите эксперимент по бросанию кости. Вы называете X случайной величиной, соответствующей этому эксперименту. Если исходить из того, что игра справедлива, каждый исход равновероятен: если вы запустите эксперимент большое количество раз, вы получите каждый результат примерно одинаковое количество раз. Здесь есть шесть возможных исходов, поэтому у вас есть один шанс из шести, чтобы вытащить каждое число.
Таким образом, функция вероятностной массы, описывающая X, возвращает 1616 для каждого возможного результата и 0 в противном случае (потому что вы не можете получить что-то другое, кроме 1, 2, 3, 4, 5 или 6).
Вы можете написать
и так далее
Свойства вероятностных функций масс.
Не каждую функцию можно рассматривать как функцию массы вероятности. Функция вероятностных масс должна удовлетворять следующим двум условиям:
- Функция должна возвращать значения от 0 до 1 для каждого возможного результата:
- Сумма вероятностей, соответствующих всем возможным исходам, должна быть равна 1:
Значение x может быть любым действительным числом, потому что значения за пределами области выборки связаны с вероятностью 0. Математически для любого значения x вне области выборки S P (x) = 0.
Моделирование эксперимента с игральными костями
Давайте смоделируем эксперимент с кубиком, используя функцию np.random.randint (low, high, size) из Numpy, которая выводит n (размер) случайных целых чисел от low до high (исключено). Давайте смоделируем 20 бросков кубика:
rolls = np.random.randint(1, 7, 20)
rolls
array([6, 3, 5, ..., 6, 5, 1])
Этот массив содержит 20 результатов эксперимента. Назовем X дискретной случайной величиной, соответствующей эксперименту с прокаткой штампа. Функция массы вероятности X определена только для возможных исходов и дает вам вероятность для каждого из них.
Предполагая, что кубик справедлив, у вас должно быть равномерное распределение, то есть равновероятные результаты.
Давайте визуализируем количество каждого результата, полученного вами в случайном эксперименте. Вы можете разделить на количество попыток, чтобы получить вероятность. Давайте воспользуемся plt.stem () из Matplotlib, чтобы визуализировать эти вероятности:
val, counts = np.unique(rolls, return_counts=True)
plt.stem(val, counts/len(rolls), basefmt="C2-", use_line_collection=True)
При равномерном распределении график будет иметь одинаковую высоту для каждого результата (поскольку высота соответствует вероятности, которая одинакова для каждого результата броска кубика). Однако распределение, показанное на рисунке 1, не выглядит однородным. Это потому, что вы недостаточно повторили эксперимент: вероятности сохранятся, если вы повторите эксперимент большое количество раз (теоретически, бесконечное количество раз).
Увеличим количество испытаний:
throws = np.random.randint(1, 7, 100000)
val, counts = np.unique(throws, return_counts=True)
plt.stem(val, counts/len(throws), basefmt="C2-", use_line_collection=True)
При достаточном количестве испытаний функция массы вероятности, показанная на рисунке 2, выглядит однородной. Это подчеркивает важность количества испытаний с точки зрения частотной вероятности.
Функции плотности вероятности
С непрерывными переменными существует бесконечное количество возможных результатов (ограниченное количеством десятичных знаков, которые вы используете). Например, если вы рисуете число от 0 до 1, вы можете получить результат, например, 0,413949834. Вероятность выпадения каждого числа стремится к нулю: если вы разделите что-либо на очень большое число (количество возможных результатов), результат будет очень маленьким, близким к нулю. Это не очень помогает при описании случайных величин.
Лучше учитывать вероятность получения определенного числа в диапазоне значений. Ось Y функций плотности вероятности не является вероятностью. Это называется плотностью вероятности или просто плотностью. Таким образом, распределения вероятностей для непрерывных переменных называются функциями плотности вероятности (или PDF).
Интеграл от функции плотности вероятности по определенному интервалу дает вам вероятность того, что случайная величина примет значение в этом интервале. Таким образом, эта вероятность определяется площадью под кривой в этом интервале (как вы можете видеть в Essential Math for Data Science).
Обозначение
Здесь я буду обозначать функции плотности вероятности строчной буквой p. Например, функция p (x) дает вам плотность, соответствующую значению x.
пример
Давайте рассмотрим пример функции плотности вероятности. Вы можете случайным образом извлечь данные из нормального распределения, используя функцию Numpy np.random.normal (более подробную информацию о нормальном распределении вы найдете в Essential Math for Data Science).
Вы можете выбрать параметры нормального распределения (среднее и стандартное отклонение) и количество выборок. Давайте создадим переменные данные из 1000 значений, выбранных случайным образом из нормального распределения со средним значением 0,3 и стандартным отклонением 0,1.
np.random.seed(123)
data = np.random.normal(0.3, 0.1, 1000)
Давайте посмотрим на форму распределения с помощью гистограммы. Функция plt.hist () возвращает точные значения x- и y-координат гистограммы. Давайте сохраним это в переменной с именем hist для последующего использования:
hist = plt.hist(data, bins=13, range=(-0.3, 1))
Гистограммы
Гистограммы показывают, как распределяются значения. Это способ моделирования распределения вероятностей с использованием конечного числа значений из распределения. Поскольку мы имеем дело с непрерывными распределениями, эта гистограмма соответствует количеству значений для определенных интервалов (интервалы зависят от бинов параметров в функции hist ()).
Например, на рисунке 3 показано, что в интервале (0,2, 0,3) содержится около 347 элементов. Каждый интервал соответствует ширине 0,1, поскольку мы использовали 13 интервалов для представления данных в диапазоне от -0,3 до 1.
Давайте внимательнее посмотрим на распределение с большим количеством корзин. Вы можете использовать плотность параметра, чтобы ось Y соответствовала плотности вероятности вместо количества значений в каждой ячейке:
hist = plt.hist(data, bins=24, range=(-0.2, 1), density=True)
На рисунке 4 видно, что на этой гистограмме больше интервалов (24 вместо 13). Это означает, что теперь ширина каждого бункера меньше. Ось ординат тоже находится в другом масштабе: она соответствует плотности, а не счетчику значений, как раньше.
Чтобы рассчитать вероятность получить значение в определенном диапазоне от плотности, вам нужно использовать площадь под кривой. В случае гистограмм это площадь столбцов.
Возьмем пример с полосой от 0,2 до 0,25, связанной со следующей плотностью:
print(f"Density: {hist[0][8].round(4)}")
print(f"Range x: from {hist[1][8].round(4)} to {hist[1][9].round(4)}")
Density: 2.8
Range x: from 0.2 to 0.25
Поскольку существует 24 ячейки, а диапазон возможных результатов составляет от -0,2 до 1, каждая полоса соответствует диапазону
В нашем примере высота полосы (от 0,2 до 0,25) составляет около 2,8, поэтому площадь этой полосы равна 2.8. 0.05.=0.14. Это означает, что вероятность получить значение от 0,2 до 0,25 составляет около 0,14, или 14%.
Вы видели, что сумма вероятностей должна быть равна единице, поэтому сумма площадей столбца должна быть равна единице. Давайте проверим это: вы можете взять вектор, содержащий плотности (hist [0]), и умножить его на ширину полосы (0,05):
(hist[0] * 0.05).sum().round(4)
1.0
Все хорошо: сумма вероятностей равна единице.
От гистограмм к непрерывным функциям плотности вероятности
Гистограммы представляют собой разделенную на интервалы версию функции плотности вероятности. На рисунке 5 показано представление истинной функции плотности вероятности. Заштрихованная синим область на рисунке соответствует вероятности получения числа от 0 до 0,2 (область под кривой от 0 до 0,2).
Свойства функций плотности вероятности
Как и функции массы вероятности, функции плотности вероятности должны удовлетворять некоторым требованиям. Во-первых, он должен возвращать только неотрицательные значения. Математически написано:
Второе требование - общая площадь под кривой функции плотности вероятности должна быть равна 1:
В этой части, посвященной распределению вероятностей, вы видели, что функции массы вероятности предназначены для дискретных переменных, а функции плотности вероятности - для непрерывных переменных.Имейте в виду, что значения на оси y функций вероятности и массы - это вероятности, что не относится к функциям плотности вероятности. Посмотрите на значения плотности (например, на рисунке 4): они могут быть больше единицы, что показывает, что они не являются вероятностями.
Hadrien Jean - специалист по машинному обучению. Он имеет докторскую степень в области когнитивных наук в Ecole Normale Superieure в Париже, где он проводил исследования слухового восприятия, используя поведенческие и электрофизиологические данные. Ранее он работал в отрасли, где создавал конвейеры глубокого обучения для обработки речи. На стыке науки о данных и окружающей среды он работает над проектами по оценке биоразнообразия с использованием глубокого обучения применительно к аудиозаписям. Он также периодически создает контент и преподает в Le Wagon (учебный курс по науке о данных) и пишет статьи в своем блоге (hadrienj.github.io).