Поиск…


Вступление

R имеет множество встроенных функций для работы с распределением вероятностей, причем официальные документы начинаются с « ?Distributions .

замечания

Как правило, четыре префикса:

  • d - Функция плотности для данного распределения
  • p - Функция кумулятивного распределения
  • q -Вставить квантиль, связанный с данной вероятностью
  • r - Получить случайную выборку

Распределения, встроенные в базовую установку R, см. В разделе « ?Distributions .

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

Давайте используем *norm в качестве примера. Из документации:

dnorm(x, mean = 0, sd = 1, log = FALSE)
pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE)
rnorm(n, mean = 0, sd = 1)

Поэтому, если бы я хотел знать значение стандартного нормального распределения в 0, я бы сделал

dnorm(0)

Это дает нам 0.3989423 , разумный ответ.

Точно так же pnorm(0) дает .5 . Опять же, это имеет смысл, потому что половина распределения находится слева от 0.

qnorm будет по существу делать противоположность pnorm . qnorm(.5) дает 0 .

Наконец, существует функция rnorm :

rnorm(10)

Будет генерировать 10 образцов из стандартного нормального.

Если вы хотите изменить параметры данного дистрибутива, просто измените их так

rnorm(10, mean=4, sd= 3)

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

Теперь проиллюстрируем функции dbinom , pbinom , qbinom и rbinom определенные для биномиального распределения .

Функция dbinom() дает вероятности для различных значений биномиальной переменной. Минимально это требует трех аргументов. Первым аргументом для этой функции должен быть вектор квантилей (возможные значения случайной величины X ). Второй и третий аргументы являются defining parameters распределения, а именно n (количество независимых испытаний) и p (вероятность успеха в каждом испытании). Например, для биномиального распределения с n = 5 , p = 0.5 возможные значения для X составляют 0,1,2,3,4,5 . То есть dbinom(x,n,p) дает значения вероятности P( X = x ) для x = 0, 1, 2, 3, 4, 5 .

#Binom(n = 5, p = 0.5) probabilities
> n <- 5; p<- 0.5; x <- 0:n
> dbinom(x,n,p)
[1] 0.03125 0.15625 0.31250 0.31250 0.15625 0.03125
#To verify the total probability is 1
> sum(dbinom(x,n,p))
[1] 1
> 

График распределения биномиальной вероятности можно отобразить, как показано на следующем рисунке:

> x <- 0:12
> prob <- dbinom(x,12,.5)
> barplot(prob,col = "red",ylim = c(0,.2),names.arg=x,
                           main="Binomial Distribution\n(n=12,p=0.5)")

Binomial Prob Dist

Заметим, что биномиальное распределение симметрично при p = 0.5 . Чтобы продемонстрировать, что биномиальное распределение отрицательно искажено, когда p больше 0.5 , рассмотрим следующий пример:

> n=9; p=.7; x=0:n; prob=dbinom(x,n,p);
> barplot(prob,names.arg = x,main="Binomial Distribution\n(n=9, p=0.7)",col="lightblue")

Отрицательно искаженный биномиальный

Когда p меньше 0.5 биномиальное распределение положительно перекошено, как показано ниже.

> n=9; p=.3; x=0:n; prob=dbinom(x,n,p); 
> barplot(prob,names.arg = x,main="Binomial Distribution\n(n=9, p=0.3)",col="cyan")

Положительно перекошенный биномиальный

Теперь мы проиллюстрируем использование кумулятивной функции распределения pbinom() . Эта функция может быть использована для вычисления вероятностей, таких как P( X <= x ) . Первым аргументом этой функции является вектор квантилей (значения х).

# Calculating Probabilities
# P(X <= 2) in a Bin(n=5,p=0.5) distribution
> pbinom(2,5,0.5)
[1] 0.5

Вышеуказанная вероятность также может быть получена следующим образом:

# P(X <= 2) = P(X=0) + P(X=1) + P(X=2)
> sum(dbinom(0:2,5,0.5))
[1] 0.5

Для вычисления вероятностей типа: P( a <= X <= b )

# P(3<= X <= 5) = P(X=3) + P(X=4) + P(X=5) in a Bin(n=9,p=0.6) dist
> sum(dbinom(c(3,4,5),9,0.6))
[1] 0.4923556
> 

Представление биномиального распределения в виде таблицы:

> n = 10; p = 0.4; x = 0:n; 
> prob = dbinom(x,n,p) 
> cdf = pbinom(x,n,p) 
> distTable = cbind(x,prob,cdf)
> distTable
       x         prob         cdf
 [1,]  0 0.0060466176 0.006046618
 [2,]  1 0.0403107840 0.046357402
 [3,]  2 0.1209323520 0.167289754
 [4,]  3 0.2149908480 0.382280602
 [5,]  4 0.2508226560 0.633103258
 [6,]  5 0.2006581248 0.833761382
 [7,]  6 0.1114767360 0.945238118
 [8,]  7 0.0424673280 0.987705446
 [9,]  8 0.0106168320 0.998322278
[10,]  9 0.0015728640 0.999895142
[11,] 10 0.0001048576 1.000000000
> 

rbinom() используется для генерации случайных выборок заданных размеров с заданными значениями параметров.

# Simulation
> xVal<-names(table(rbinom(1000,8,.5)))
> barplot(as.vector(table(rbinom(1000,8,.5))),names.arg =xVal,
                    main="Simulated Binomial Distribution\n (n=8,p=0.5)")

Имитированный биномиальный



Modified text is an extract of the original Stack Overflow Documentation
Лицензировано согласно CC BY-SA 3.0
Не связан с Stack Overflow