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

Случайная величина распределена по нормальному закону (Гауссову закону), если её плотность

\[\begin{split}\varphi_{\mu,\sigma} (x) = \frac{1}{\sigma\sqrt{2\pi}} \, e^{-\frac{(x-\mu)^2}{2\sigma^2}} \;\;\; (-\infty < \mu < +\infty, \; \sigma > 0).\end{split}\]

Данное распределение имеет два независимых параметра:

  • среднее значение (мат.ожидание) \(\mu\);
  • среднеквадратичное отклонение \(\sigma\).

Соответствующая функция распределения:

\[\Phi_{\mu,\sigma} (x) = \frac{1}{\sigma\sqrt{2\pi}} \int_{-\infty} ^x { e^{-\frac{(x-\mu)^2}{2\sigma^2}} \, dx}.\]

На рис. 1 представлены графики плотности (слева) и функции распределения (справа) для трёх различных наборов параметров \(\mu\) и \(\sigma\).

../_images/Norm-01.png

Рис. 1. Примеры плотностей и функций распределения нормальных случайных величин

При \(\mu=0\) и \(\sigma = 1\) нормальный закон распределения называют стандартным.

Программа на языке Python для построения гауссианы

Приведём простую программу на языке Python которая строит график нормальной плотности распределения при различных значениях среднеквадратичного отклонения:

import math

def gaussian(x, mu, sigma):
    return math.exp(-0.5*((x-mu)/sigma)**2) / sigma / math.sqrt(2*math.pi)

import numpy as np
import matplotlib.pyplot as plt

xs = np.arange(-8, 8, 0.05) # Сетка значений по оси абсцисс.
p1, = plt.plot(xs, [gaussian(x, 0, .5) for x in xs], label='$\sigma = 0.5$')
p2, = plt.plot(xs, [gaussian(x, 0, 1) for x in xs], label='$\sigma = 1$')
p3, = plt.plot(xs, [gaussian(x, 0, 2) for x in xs], label='$\sigma = 2$')
plt.legend()
plt.show()
../_images/pygauss.png

Рис. 2. Результат работы программы

Если код выполняется в IPython Notebook, то можно сделать график интерактивным:

%pylab inline  # Отображать графики на странице IPython Notebook.
import numpy as np
import matplotlib.pyplot as plt
from IPython.html.widgets import interact, interactive, fixed
import IPython.html.widgets as widgets

def interactiveGaussian(mu, sigma):
    xs = np.arange(-8, 8, 0.1)
    ys = [gaussian (x, mu, sigma) for x in xs]
    plt.plot(xs, ys)
    plt.ylim((0, 1))  # Диапазон по оси ординат.
    plt.show()

interact(interactiveGaussian, mu=(-10, 10), sigma=widgets.FloatSliderWidget(value=0.5, min=0.1, max=5))

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

../_images/ipynbgauss.png

Рис. 3. Интерактивный график в IPython Notebook

Здесь мы определили свою функцию gaussian, хотя аналогичная функция с именем norm имеется в библиотеке scipy.stats:

from scipy.stats import norm
norm1 = norm(2, 5)    # Нормальное распределение со средним 2 и ср.кв.отклонением 5.
print(norm1.pdf(0.2)) # Значение функции распределения в точке 0.2.
print gaussian(0.2, 2, 5) # То же самое с помощью нашей функции.

Получим:

0.0747821210746
0.0747821210746

(продолжение следует...)



Комментарии (1)

Вы просматриваете: Norm
Facebookdel.icio.usStumbleUponDiggGoogle+Twitter
Gravatar
Юзер говорит...
Спасибо!Tongue
8th June 2016 11:19am
Страница 1 из 1

* Обязательные поля
(Не публикуется)
 
Жирный Курсив Подчеркнутый Перечеркнутый Степень Индекс Код PHP Код Кавычки Вставить линию Вставить маркированный список Вставить нумерованный список Вставить ссылку Вставить e-mail Вставить изображение Вставить видео
 
Улыбка Печаль Удивление Смех Злость Язык Возмущение Ухмылка Подмигнуть Испуг Круто Скука Смущение Несерьёзно Шокирован
 
1000
Captcha
Refresh
 
Введите код:
 
Запомнить информацию введенную в поля формы.