R 中 dnorm、pnorm、qnorm 和 rnorm 指南


正态分布是统计学中最常用的分布。本教程介绍如何使用 R 中的dnormpnormrnormqnorm函数来使用正态分布。

正常的

dnorm函数返回给定某个随机变量x 、总体平均值μ和总体标准差σ的正态分布的概率密度函数 (pdf) 的值。使用 dnorm 的语法如下:

dnorm(x, 均值, 标准差)

以下代码演示了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函数返回给定某个随机变量q 、总体平均值μ和总体标准差σ的正态分布的累积密度函数 (cdf) 的值。使用 pnorm 的语法如下:

pnorm(q, 均值, 标准差)

简单来说, pnorm返回正态分布中给定值x左侧的面积。如果您对给定q值右侧的区域感兴趣,您可以简单地添加参数lower.tail = FALSE

pnorm(q, 平均值, sd, lower.tail = FALSE)

以下示例说明如何使用 pnorm 解决一些概率问题。

示例 1:假设某所学校的男生身高服从正态分布,平均值为标准差为

 #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:假设某种水獭的重量服从正态分布,平均值为标准差为

 #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:假设某个区域的植物高度呈正态分布,平均值为标准差为

 #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函数返回给定某个随机变量p 、总体平均值μ和总体标准差σ的正态分布的逆累积密度函数 (cdf) 的值。使用 qnorm 的语法如下:

qnorm(p、平均值、标准差)

简单来说,您可以使用qnorm找出正态分布的第 p 个分位数的 Z 分数是多少。

以下代码演示了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, 平均值, 标准差)

以下代码演示了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 的平均值为中心。

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注