在R语言中使用概率分布:dnorm,pnorm,qnorm和rnorm

简介: 在R语言中使用概率分布:dnorm,pnorm,qnorm和rnorm

在这里,我将讨论哪些函数可用于处理正态分布:dnorm,pnorm,qnorm和rnorm。

R中的分布函数

有四个关联的函数, 四个正态分布函数是:

  • d范数:正态分布的密度函数
  • p范数:正态分布的累积密度函数
  • q范数:正态分布的分位数函数
  • r范数:从正态分布中随机抽样


概率密度函数:dnorm

概率密度函数(PDF,简称:密度)表示观察具有特定值的测量值的概率,因此密度上的积分始终为1。XX,正常密度定义为


使用密度,可以确定事件的概率。例如,您可能想知道:一个人的IQ恰好为140的可能性是多少?。在这种情况下,您将需要检索IQ分布在值140处的密度。可以用100的平均值和15的标准差对IQ分布进行建模。相应的密度为:

sample.range <- 50:150
iq.mean <- 100
iq.sd <- 15
iq.dist <- dnorm(sample.range, mean = iq.mean, sd = iq.sd)
iq.df <- data.frame("IQ" = sample.range, "Density" = iq.dist)
library(ggplot2)
ggplot(iq.df, aes(x = IQ, y = Density)) + geom_point()


通过这些数据,我们现在可以回答初始问题以及其他问题:

# likelihood of IQ == 140?
pp(iq.df$Density[iq.df$IQ == 140])
## [1] "0.076%"# likelihood of IQ >= 140?
 
## [1] "0.384%"# likelihood of 50 < IQ <= 90?
 
## [1] "26.284%"

累积密度函数:pnorm

累积密度(CDF)函数是单调增加的函数,因为它通过


为了直观了解CDF,让我们为IQ数据创建一个图:


ggplot(iq.df, aes(x = IQ, y = CDF_LowerTail)) + geom_point()


如我们所见,所描绘的CDF显示了IQ小于或等于给定值的可能性。这是因为pnorm默认情况下计算低尾巴,即P[ X< = x ]P[X<=X]。利用这些知识,我们可以以略有不同的方式获得一些先前问题的答案:

# likelihood of 50 < IQ <= 90?
 
## [1] "25.249%"# set lower.tail to FALSE to obtain P[X >= x]
 # Probability for IQ >= 140? same value as before using dnorm!
 
## [1] "0.383%"

请注意,pnorm的结果与手动汇总通过dnorm所获得的概率所得的结果相同。此外,通过设置lower.tail = FALSEdnorm可用于直接计算p值,该p值用于衡量观察值的可能性至少与获得的值一样高。


分位数功能:qnorm

分位数函数只是累积密度函数(iCDF)的反函数。因此,分位数函数从概率映射到值。让我们看一下分位数函数P[ X< = x ]:

# input to qnorm is a vector of probabilities
 
ggplot(icdf.df, aes(x = Probability, y = IQ)) + geom_point()


使用分位数函数,我们可以回答与分位数有关的问题:

# what is the 25th IQ percentile?
 
## [1] 89.88265# what is the 75 IQ percentile?
 
## [1] 110.1173# note: this is the same results as from the quantile function
 
##        0%       25%       50%       75%      100%
##      -Inf  89.88265 100.00000 110.11735       Inf

随机采样函数:rnorm

当您想从正态分布中抽取随机样本时,可以使用rnorm。例如,我们可以rnorm用来模拟IQ分布中的随机样本。


# show one facet per random sample of a given size
ggplot() + geom_histogram(data = my.df, aes(x = IQ)) + facet_wrap(.~SampleSize, scales = "free_y")

ggplot(my.sample.df, aes(x = IQ)) + geom_histogram()

请注意,我们进行调用set.seed是为了确保随机数生成器始终生成相同的数字序列以实现可重复性。

相关文章
|
6天前
|
数据可视化 数据挖掘 API
【R语言实战】聚类分析及可视化
【R语言实战】聚类分析及可视化
|
6天前
|
机器学习/深度学习 数据可视化
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为2
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
6天前
|
Web App开发 数据可视化 数据挖掘
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
利用R语言进行聚类分析实战(数据+代码+可视化+详细分析)
|
6天前
|
数据采集 数据可视化
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
利用R语言进行因子分析实战(数据+代码+可视化+详细分析)
|
6天前
利用R语言进行典型相关分析实战
利用R语言进行典型相关分析实战
|
6天前
|
机器学习/深度学习 算法
R语言分类回归分析考研热现象分析与考研意愿价值变现
R语言分类回归分析考研热现象分析与考研意愿价值变现
|
6天前
|
数据可视化 定位技术
R语言贝叶斯INLA空间自相关、混合效应、季节空间模型、SPDE、时空分析野生动物数据可视化
R语言贝叶斯INLA空间自相关、混合效应、季节空间模型、SPDE、时空分析野生动物数据可视化
|
6天前
|
机器学习/深度学习 数据可视化 算法
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为1
R语言逻辑回归logistic模型ROC曲线可视化分析2例:麻醉剂用量影响、汽车购买行为
|
6天前
|
机器学习/深度学习 数据可视化 算法
R语言聚类分析、因子分析、主成分分析PCA农村农业相关经济指标数据可视化|数据分享
R语言聚类分析、因子分析、主成分分析PCA农村农业相关经济指标数据可视化|数据分享
|
6天前
|
机器学习/深度学习 监控 数据可视化
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例2
R语言SOM神经网络聚类、多层感知机MLP、PCA主成分分析可视化银行客户信用数据实例

热门文章

最新文章