R中的概率分布函数及可视化

 

R中拥有众多的概率函数,既有概率密度函数,也有概率分布函数,可以调用函数,也可以产生随机数,其使用规则如下所示:

其中前面字母为函数类型,含义如下:


[dpqr]distribution_abbreviation()

d=密度函数(density)

p=分布函数(distributionfunction)

q=分位数函数(quantilefunction)

r=生成随机数(随机偏差)

distribution_abbreviation为概率分布名称的缩写,R中的概率分布类型如下所示:

对于概率密度函数和分布函数,其使用方法举例如下:例如正态分布概率密度函数为dnorm(),概率分布函数pnorm(),生成符合正态分布的随机数rnorm()。

x=pretty(c(-3,3),100)y=dnorm(x)plot(x, y)

作图结果如下所示:

对于生成随机数,其使用方法举例如下:

rnorm(n, mean=0, sd=1) #产生n个正态分布的数,mena平均值,sd标准差
runif(n, min=0, max=1) #产生n个均匀分布的数,min最小值,max最大值

接下来我们产生符合正态分布的随机数并作图:
 

library(ggplot2)

y=rnorm(10000, mean=0, sd=1)
x=1:10000
data=data.frame(x=x, y=y)
ggplot(data, aes(x=y)) + 
  geom_histogram(position='identity', alpha=0.5, binwidth=0.1, aes(y=..density..), fill="cyan") +
  stat_density(geom='line', position='identity', color="cyan4")

作图结果如下所示:

可以看到数据分布图像与正态函数图像基本相同。R也可以产生多维随机变量,例如MASS包中的mvrnorm()函数可以产生一维或者多维正态分布的随机变量,其使用方法如下所示:

mvrnorm(n=1, mu, Sigma...)

其中n为随机数的个数,mu为数值向量,给出均值,Sigma为对称的数值矩阵给出协方差矩阵。

当有多个随机变量都服从正态分布时,为多元正态性。接下来我们产生相关系数不同(1、0.75、0.25、0)的二维正太随机变量,并绘制其密度图,来观察区别,具体如下:

library(MASS) 
#相关系数1
Sigma1=matrix(c(1, 1, 1, 1), 2, 2) 
X1=mvrnorm(n=1000, c(0, 0), Sigma1) #总共1000个点
K1=kde2d(X1[,1], X1[,2], n=100) #n为估计密度所用点数,不能太大
col.palette=colorRampPalette(c("white","red")) #自定义颜色
filled.contour(K1, color=col.palette)
#相关系数0.75
Sigma2=matrix(c(1, 0.75, 0.75, 1), 2, 2) 
X2=mvrnorm(n=1000, c(0, 0), Sigma2)
K2=kde2d(X2[,1], X2[,2], n=100)
filled.contour(K2, color=col.palette)
#相关系数0.25
Sigma3=matrix(c(1, 0.25, 0.25, 1), 2, 2) 
X3=mvrnorm(n=1000, c(0, 0), Sigma3)
K3=kde2d(X3[,1], X3[,2], n=100)
filled.contour(K3, color=col.palette)
#相关系数0
Sigma4=matrix(c(1, 0, 0, 1), 2, 2) 
X4=mvrnorm(n=1000, c(0, 0), Sigma4)
K4=kde2d(X4[,1], X4[,2], n=100)
filled.contour(K4, color=col.palette)

​​​​​​​作图结果如下所示:

上面程序中kde2d()函数根据二维坐标来估计数据点的分布密度,并画出等密度线(可以使用contour(K4, lwd=1,add=T, xlim, ylim...)函数添加边界线并标注数据比例),然后自定义颜色并并填充进去形成图像,实际上展示了三维信息。但是我们仍可以用persp()函数来展示出3D图:

persp(K1, col="orange", theta=95, phi=30, d=2)

  • 5
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

wangchuang2017

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值