Руководство по dnorm, pnorm, qnorm и rnorm в R


Нормальное распределение является наиболее часто используемым распределением в статистике. В этом руководстве объясняется, как работать с нормальным распределением в R, используя функции dnorm , pnorm , rnorm и qnorm .

днорм

Функция dnorm возвращает значение функции плотности вероятности (PDF) нормального распределения при заданной случайной величине x , среднем значении μ и стандартном отклонении населения σ.Синтаксис использования dnorm следующий:

dnorm(x, среднее, sd)

Следующий код иллюстрирует несколько примеров работы dnorm :

#find the value of the standard normal distribution pdf at x=0
dnorm(x=0, mean=0, sd=1)
# [1] 0.3989423

#by default, R uses mean=0 and sd=1
dnorm(x=0)
# [1] 0.3989423

#find the value of the normal distribution pdf at x=10 with mean=20 and sd=5
dnorm(x=10, mean=20, sd=5)
# [1] 0.01079819

Обычно, когда вы пытаетесь решить вопросы о вероятности с помощью нормального распределения, вы часто будете использовать pnorm вместо dnorm.Однако одним полезным применением dnorm является создание графика нормального распределения в R. Следующий код иллюстрирует, как это сделать:

#Create a sequence of 100 equally spaced numbers between -4 and 4
x <- seq(-4, 4, length=100)

#create a vector of values that shows the height of the probability distribution
#for each value in x
y <- dnorm(x)

#plot x and y as a scatterplot with connected lines (type = "l") and add
#an x-axis with custom labels
plot(x,y, type = "l", lwd = 2, axes = FALSE, xlab = "", ylab = "")
axis(1, at = -3:3, labels = c("-3s", "-2s", "-1s", "mean", "1s", "2s", "3s"))

Это генерирует следующий сюжет:

пнорм

Функция pnorm возвращает значение кумулятивной функции плотности (cdf) нормального распределения с учетом определенной случайной величины q , среднего значения μ и стандартного отклонения населения σ.Синтаксис использования pnorm следующий:

pnorm(q, среднее, sd)

Проще говоря, pnorm возвращает площадь слева от заданного значения x в нормальном распределении. Если вас интересует область справа от заданного значения q , вы можете просто добавить аргумент lower.tail = FALSE

pnorm(q, среднее, стандартное отклонение, нижний.хвост = ЛОЖЬ)

В следующих примерах показано, как решать некоторые вероятностные вопросы с помощью pnorm.

Пример 1. Предположим, что рост мальчиков в определенной школе нормально распределен со средним значением μ = 70 дюймов и стандартным отклонением σ = 2 дюйма. Приблизительно какой процент мальчиков в этой школе выше 74 дюймов?

#find percentage of males that are taller than 74 inches in a population with
#mean = 70 and sd = 2
pnorm(74, mean=70, sd=2, lower.tail=FALSE)

# [1] 0.02275013

В этой школе 2,275% мальчиков выше 74 дюймов.

Пример 2. Предположим, что вес определенного вида выдр нормально распределен со средним значением μ = 30 фунтов и стандартным отклонением σ = 5 фунтов. Приблизительно какой процент этого вида выдр весит менее 22 фунтов?

#find percentage of otters that weight less than 22 lbs in a population with
#mean = 30 and sd = 5
pnorm(22, mean=30, sd=5)

# [1] 0.05479929

Приблизительно 5,4799% этого вида выдр весят менее 22 фунтов.

Пример 3. Предположим, что высота растений в определенном регионе нормально распределена со средним значением μ = 13 дюймов и стандартным отклонением σ = 2 дюйма. Примерно какой процент растений в этом регионе имеет высоту от 10 до 14 дюймов?

#find percentage of plants that are less than 14 inches tall, then subtract the
#percentage of plants that are less than 10 inches tall, based on a population
#with mean = 13 and sd = 2
pnorm(14, mean=13, sd=2) - pnorm(10, mean=13, sd=2)

# [1] 0.6246553

Приблизительно 62,4655% растений в этом регионе имеют высоту от 10 до 14 дюймов.

qнорма

Функция qnorm возвращает значение обратной кумулятивной функции плотности (cdf) нормального распределения с заданной случайной величиной p , средним значением μ и стандартным отклонением населения σ.Синтаксис использования qnorm следующий:

qnorm(p, среднее, sd)

Проще говоря, вы можете использовать qnorm , чтобы узнать, какова Z-оценка p -го квантиля нормального распределения.

Следующий код иллюстрирует несколько примеров использования qnorm в действии:

#find the Z-score of the 99th quantile of the standard normal distribution 
qnorm(.99, mean=0, sd=1)
# [1] 2.326348

#by default, R uses mean=0 and sd=1
qnorm(.99)
# [1] 2.326348

#find the Z-score of the 95th quantile of the standard normal distribution 
qnorm(.95)
# [1] 1.644854

#find the Z-score of the 10th quantile of the standard normal distribution 
qnorm(.10)
# [1] -1.281552

норм

Функция rnorm генерирует вектор нормально распределенных случайных величин с учетом длины вектора n , среднего значения μ и стандартного отклонения населения σ.Синтаксис использования rnorm следующий:

rnorm(n, среднее, sd)

Следующий код иллюстрирует несколько примеров использования rnorm в действии:

#generate a vector of 5 normally distributed random variables with mean=10 and sd=2
five <- rnorm(5, mean = 10, sd = 2)
five
# [1] 10.658117 8.613495 10.561760 11.123492 10.802768

#generate a vector of 1000 normally distributed random variables with mean=50 and sd=5
narrowDistribution <- rnorm(1000, mean = 50, sd = 15)

#generate a vector of 1000 normally distributed random variables with mean=50 and sd=25
wideDistribution <- rnorm(1000, mean = 50, sd = 25)

#generate two histograms to view these two distributions side by side, specify
#50 bars in histogram and x-axis limits of -50 to 150
par(mfrow=c(1, 2)) #one row, two columns
hist(narrowDistribution, breaks=50, xlim=c(-50, 150)) 
hist(wideDistribution, breaks=50, xlim=c(-50, 150))

В результате получаются следующие гистограммы:

Обратите внимание, что широкое распределение гораздо шире, чем узкое. Это связано с тем, что мы указали стандартное отклонение в широком распределении равным 25 по сравнению с 15 в узком распределении. Также обратите внимание, что обе гистограммы сосредоточены вокруг среднего значения 50.