15 декабря 2012

Законы распределения вероятностей, реализованные в R



В базовой версии R имеются функции для работы с целым рядом распространенных законов распределения вероятностей. В зависимости от назначения, имена этих функций начинаются с одной из следующих четырех букв:
  • d (от "density", плотность): функции плотности вероятности ("функция распределения масс" для дискретных величин);
  • p (от "probability", вероятность): кумулятивные функции распределения вероятностей;
  • q (от "quantile", квантиль): функции для нахождения квантилей того или иного распределения;
  • r (от "random", случайный): функции для генерации случайных чисел в соответствии с параметрами того или иного закона распределения вероятностей.

В частности, в базовой версии R реализованы следующие законы распределения вероятностей:


В качестве примера рассмотрим d-, p-, q- и r-функции, предназначенные для работы с нормальным распределением. Предположим, что мы имеем дело с непрерывной количественной величиной X, значения которой распределены в соответствии со стандартным нормальным распределением (среднее значение = 0, стандартное отклонение = 1). Функция плотности вероятности представляет собой такую функцию f(x), что для любых двух значений a и b (при a ≤ b):

\[P(a \leq x \leq b )=\int_{a}^{b}f(x)dx\]

Иными словами, вероятность того, что некоторая случайная величина X принимает значение, лежащее в интервале [a, b], равна площади под кривой плотности вероятности, ограниченной этим интервалом. По определению, площадь под всей кривой плотности вероятности равна 1. Функция плотности вероятности стандартного нормального распределения задается уравнением

\[f(x)=\frac{1}{\sqrt{2\pi}}e^{-x^2/2}\]

R-функция drnorm() позволяет рассчитать значение функции плотности вероятности для заданного значения (или сразу для вектора из нескольких значений) X. Так, для x = 1 в случае со стандартным нормальным распеделением получаем
dnorm(-1) [1] 0.2419707

Кумулятивная функция распределения (или просто "функция распределения") описывает вероятность того, что вещественнозначная случайная переменная X примет какое-либо значение, не превышающее либо равное x. Для нашего примера получаем (см. также рисунок 2):

pnorm(-1)
[1] 0.1586553

Рисунок 2

Для вычисления квантилей нормального распределения служит функция qnorm(). Например, следующим образом вычислить нижний и верхний квартили стандартного нормального распределения (см. также рис. 3):

qnorm(p = c(0.25, 0.75))
[1] -0.6744898  0.6744898

Рисунок 3

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

rnorm(10, mean = 0, sd = 1)
 [1] -2.69409418  0.09407048 -0.19622289 -1.06719782 -0.55212590
 [6] -0.94019419 -0.14916494  0.17760798 -0.29358930 -0.77420692

d-, p-, q- и r-функции для других распределений работают сходным образом. В заключение стоит отметить, что в дополнительных R-пакетах можно найти функции для работы с большим числом других законов распределения вероятностей. Особенно полезными, в частности, могут оказаться пакеты VGAM, actuar, gamlss и ActuDistns. Подробнее можно почитать здесь (англ. яз.).


3 комментария :

Артём Клевцов комментирует...

Доброго времени.

Не могу не упомянуть пакет gamlss, который значительно расширяет приведённый в статье перечень.

Сергей Мастицкий комментирует...

Спасибо за подсказку, Артём! Добавил в текст.

zeleniy комментирует...

?Distributions в консоли позволяет увидеть список доступных распределений из пакета stats

Отправить комментарий