Рубрики
Без рубрики

Распределение вероятностей с Python (реализованные примеры)

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

Автор оригинала: Pankaj Kumar.

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

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

В этой статье мы реализуем и визуализируем некоторые из них широко используемых распределений вероятностей с использованием Python

Общие распределения вероятностей

Наиболее распространенные распределения вероятностей являются следующими:

  • Равномерное распределение
  • Биномиальное распределение
  • Распределение Пуассона
  • Экспоненциальное распределение
  • Нормальное распределение

Давайте реализуем каждый с помощью Python.

1. Единые распределения

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

Функция плотности вероятности для непрерывный Равномерное распределение на интервале [A, B]:

Равномерное распределение

Пример – когда 6-х сторонние умирают, каждая сторона имеет шанс 1/6.

Реализация и визуализация равномерного распределения вероятностей в Python с использованием Scipy Module.

#Importing required libraries
from scipy.stats import uniform
import seaborn as sb
import matplotlib.pyplot as plt
import numpy as np

#taking random variables from Uniform distribution
data = uniform.rvs(size = 100000, loc = 5, scale=10)

#Plotting the results
sb.set_style('whitegrid')
ax = sb.distplot(data, bins = 30, color = 'k')
ax.set(xlabel = 'interval')
plt.show()
Единый распределительный график

Scipy.Stats Модуль имеет Униформа Класс, в котором первый аргумент является нижней границей, а второй аргумент – это диапазон распределения.

  • loc – нижняя граница.
  • масштаб – Диапазон распределения.

Например, если мы хотим случайным образом выбирать значения из равномерного распределения в диапазоне от 5 до 15. Тогда loc Параметр будет 5, так как это нижняя граница. масштаб Параметр будет установлен на 10, как если бы мы добавили loc и масштаб Мы получим 15 как верхнюю границу.

2. Биномиальное распределение

Биномиальное распределение это дискретное распределение вероятностей. У него есть параметры N и P , где P – вероятность успеха, а N – количество испытаний.

Предположим, у нас есть эксперимент, который имеет результат успеха или неудача:

  • У нас есть вероятность P успеха
  • Затем Binomial PMF может рассказать нам о вероятности наблюдения за к
  • Если эксперимент выполняется N количество раз.

Вероятно, масштабная функция биномиального распределения:

Биномиальное распределение
#Importing required modules
import seaborn as sb
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import binom

#Applying the binom class
pb = binom(n = 20, p = 0.6)

x = np.arange(1,21)
pmf = pb.pmf(x)

#Visualizing the distribution
sb.set_style('whitegrid')
plt.vlines(x ,0, pb.pmf(x), colors='k', linestyles='-', lw=5)
plt.ylabel('Probability')
plt.xlabel('Intervals')
plt.show()
Биномиальный распределительный график

Scipy.Stats Модуль имеет Binom Класс, который нуждается в следующих параметрах ввода:

  • n интервалов
  • P успеха

Класс Binom имеет метод .PMF, который требует массива интервалов в качестве входного аргумента, результатом вывода является вероятностью соответствующих значений.

Распределение Бернулли

Это особый случай биномиального распределения для. Другими словами, это биномичное распределение с одним испытанием.

Функция массы вероятности распределения Bernoulli предоставляется:

Распределение Бернулли
#Importing the required modules
import seaborn as sb
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import bernoulli

#Applying the bernoulli class
data = bernoulli.rvs(size = 1000 , p = 0.8)

#Visualizing the results
sb.set_style('whitegrid')
sb.displot(data, discrete=True, shrink=.8 , color = 'k')
plt.show()

Участок распространения Бернулли

Нам нужно указать вероятность P Как входной параметр к Бернулли класс объекта. Чтобы выбрать случайные значения из распределения Class Bernoulli имеет .rvs Метод, который принимает необязательный параметр размера (количество образцов для выбора).

3. Пуассон распределение

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

Средняя скорость также называется лямбда ( λ ).

Предположим, у нас есть фруктовый магазин и в среднем 3 клиента прибывают в магазин каждые 10 минут. Средняя скорость здесь 3 или λ Отказ Распределения вероятностей Poisson могут помочь нам отвечать на вопросы, такие как вероятность, что 5 клиентов прибудет в ближайшие 10 минут?

Функция массы вероятности задана:

Распределение Пуассона
#Importing the required modules
import seaborn as sb
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import poisson

#Applying the poisson class methods
x = np.arange(0,10)
pmf = poisson.pmf(x,3)

#Visualizing the results
sb.set_style('whitegrid')
plt.vlines(x ,0, pmf, colors='k', linestyles='-', lw=6)
plt.ylabel('Probability')
plt.xlabel('intervals')
plt.show()
Убийство Poisson

Пуассон класс от Scipy.Stats Модуль имеет только один параметр формы: мю который также известен как показатель, как видно в вышеуказанной формуле. .PMF вернет значения вероятности соответствующих значений входных массива.

4. Экспоненциальное распределение

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

Poasson Distribution имеет дело с количеством случаев события в данный период и экспоненциальные распределения с учетом времени между этими событиями.

Экспоненциальное распределение может рассматриваться как непрерывный аналог геометрического распределения.

Экспоненциальное распределение PDF.

Здесь λ > 0 – это параметр распределения, часто называемый Параметр скорости Отказ

#Importing required modules
import seaborn as sb
import matplotlib.pyplot as plt
import numpy as np
from scipy.stats import expon

#Applying the expon class methods
x = np.linspace(0.001,10, 100)
pdf = expon.pdf(x)

#Visualizing the results
sb.set_style('whitegrid')
plt.plot(x, pdf , 'r-', lw=2, alpha=0.6, label='expon pdf' , color = 'k')
plt.xlabel('intervals')
plt.ylabel('Probability Density')
plt.show()
Экспоненциальный распределительный график

Входные параметры для Экфун Класс от модуля Scipy.Stats следующим образом:

  • х : квантилеки
  • loc : [Необязательно] Параметр местоположения Отказ
  • масштаб : [Необязательно] Масштаб параметр Отказ

Для расчета плотности вероятности заданных интервалов мы используем .PDF метод.

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

А Нормальное распределение также известен как Гауссовое распределение или отлично Кривая колокола Отказ

Функция плотности вероятности (PDF) для нормального распределения:

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

Где, отклонение, ценность.

# import required libraries
from scipy.stats import norm
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sb
 
# Creating the distribution
data = np.arange(1,10,0.01)
pdf = norm.pdf(data , loc = 5.3 , scale = 1 )
 
#Visualizing the distribution
 
sb.set_style('whitegrid')
sb.lineplot(data, pdf , color = 'black')
plt.ylabel('Probability Density')
Нормальный график распределения

Scipy.Stats Модуль имеет Норма Класс для реализации нормального распределения.

Расположение loc Ключевое слово указывает среднее значение. Масштаб масштаб Ключевое слово указывает стандартное отклонение в вышеуказанном коде.

Для расчета плотности вероятности в данном интервале мы используем .PDF Способ, обеспечивающий loc и масштаб аргументы.

Заключение

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

Счастливое обучение!