В базовой версии R имеются функции для работы с целым рядом распространенных законов распределения вероятностей. В зависимости от назначения, имена этих функций начинаются с одной из следующих четырех букв:
  • d (от "density", плотность): функции плотности вероятности ("функция распределения масс" для дискретных величин);
  • p (от "probability", вероятность): кумулятивные функции распределения вероятностей;
  • q (от "quantile", квантиль): функции для нахождения квантилей того или иного распределения;
  • r (от "random", случайный): функции для генерации случайных чисел в соответствии с параметрами того или иного закона распределения вероятностей.
В частности, в базовой версии R реализованы следующие законы распределения вероятностей:
В качестве примера рассмотрим d-, p-, q- и r-функции, предназначенные для работы с нормальным распределением. Предположим, что мы имеем дело с непрерывной количественной величиной X, значения которой распределены в соответствии со стандартным нормальным распределением (среднее значение = 0, стандартное отклонение = 1). Функция плотности вероятности представляет собой такую функцию \(f(x)\), что для любых двух значений \(a\) и \(b\) (при \(a \leq 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 Комментарии

Unknown написал(а)…
Доброго времени.

Не могу не упомянуть пакет gamlss, который значительно расширяет приведённый в статье перечень.
Sergey Mastitsky написал(а)…
Спасибо за подсказку, Артём! Добавил в текст.
zeleniy написал(а)…
?Distributions в консоли позволяет увидеть список доступных распределений из пакета stats
Новые Старые