R语言︱分布函数与概率密度+随机数产生
1、常见概率分布
##正态分布
pnorm(1.96) #P(x<=1.96)时的分布概率
pnorm(1.96,0,1) #上同
pnorm(1.96,lower.tail = F) #P(x>1.96)注意与pnorm的区别
qnorm(0.975) #已知分布概率求x值
dnorm(0) #f(0)概率密度值
rnorm(111) #产生符合正态分布的111个随机数##泊松分布 Possion(x,λ)
dpois(2,0.9) #等同概率密度
dpois(2.1,0.9) #x一定需要整数
ppois(2.1,0.9) #分布概率,取2.1的最小整数
其他一些分布函数:
一个利用概率分布解决问题的例子
1. 某人进行射击,每次击中目标的命中率为0.02,独立射击400次,求至少击中两次的概率。
解:400重伯努利试验,用二项分布求解。
P{X = k} = C400k * (0.02)^k * (0.0=98)^(400-k)
P{X≥2} = 1 – P{X = 0} - P{X = 1}
> 1 - sum(pbinom(0:1, 400, 0.02))
[1] 0.9968561
2、根据分布产生随机数
均匀分布、正态分布是比较常见的产生随机数的分布
> runif(10)[1] 0.961465376 0.007521925 0.193619234 0.137027246 0.739370654 0.072907082[7] 0.674551635 0.650777811 0.984664183 0.796723066
显著性水平为 5% 的正态分布的双侧临界值是:
> qnorm(0.025)
[1] -1.959964
> qnorm(0.975)
[1] 1.959964
随机数中产生的问题
问:set.seed设置了种子,但是每次产生的随机数还是不同?
解答:set.seed()只对运行该命令后的第一次随机产生结果有效。
- > set.seed(13)
- > rnorm(10)
- [1] 0.5543269 -0.2802719 1.7751634 0.1873201 1.1425261 0.4155261
- [7] 1.2295066 0.2366797 -0.3653828 1.1051443
- > set.seed(13)
- > rnorm(10)
- [1] 0.5543269 -0.2802719 1.7751634 0.1873201 1.1425261 0.4155261
- [7] 1.2295066 0.2366797 -0.3653828 1.1051443
- >
要得到相同的随机数,还得再“重写”一遍
set seed(123)
rnorm()
这样,每次得到的随机数就一样。
——————————————————————————————————
应用一:rep()和replicate()批量取随机数
来源公众号:砍柴问樵夫
问题:假设我想从符合正态分布的数据集中随机抽取2个数据,排序, 这样的数据我需要10对,你会怎么做?
很多人都会想到用rep()这个函数,我们来试试。
rep(sort(sample(rnorm(n=100,mean = 0,sd = 1),2)),10)
结果文件:
> rep(sort(sample(rnorm(n=100,mean = 0,sd = 1),2)),10)[1] 0.1188322 0.3224045 0.1188322 0.3224045 0.1188322 0.3224045 0.1188322[8] 0.3224045 0.1188322 0.3224045 0.1188322 0.3224045 0.1188322 0.3224045
[15] 0.1188322 0.3224045 0.1188322 0.3224045 0.1188322 0.3224045
很明显不符合我们的要求。
该怎么解决呢?
replicate()函数可以实现,具体如下:
replicate(n=10,expr=sort(sample(rnorm(n=100,mean = 0,sd = 1),2)))
结果文件:
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] -0.72719296 -0.9876203 -2.212692 -0.8753055 0.2981434 -1.2255357
[2,] -0.02896154 0.9458406 1.511990 1.9813026 1.2695440 -0.2565482[,7] [,8] [,9] [,10]
[1,] -0.21979065 -0.6226580 -0.2889041 0.566944
[2,] 0.09309426 0.4599596 0.5187426 1.602581
大家应该注意到:rep()返回的是向量,replicate()返回的是矩阵。
下面列出两个函数的用法:
rep():
rep(x, ...)
rep.int(x, times) #每个元素重复次数
rep_len(x, length.out) #生成向量长度
replicate(),replicate(n, expr, simplify = "array") #随机数生成器
R语言︱分布函数与概率密度+随机数产生相关推荐
- R语言β分布函数(dbeta、pbeta、qbeta、rbeta)实战
R语言β分布函数(dbeta.pbeta.qbeta.rbeta)实战 目录 R语言β分布函数(dbeta.pbeta.qbeta.rbeta)实战 # 计算β密度函数并可视化
- R语言处理数据——生成随机数
生成随机数 #如下连续生成16组1:3的随机不重复整数(每次3个),存储至repl中: repl <- NULL for(x in 1:16) {repl <- c(repl, sampl ...
- R语言:逆变换法生成随机数
逆变换法生成随机数: 一.概念解释 1.PDF 2.PMF 3.CDF 二.连续型情况举例 三.离散型情况举例 一.概念解释 1.PDF probability density function 概率 ...
- R语言的各种统计分布函数
转载自品略图书馆 http://www.pinlue.com/article/2018/09/1613/487222559948.html R语言的各种统计分布函数 1.二项分布Binomial di ...
- R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置
R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录
- R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项)、randomSequence函数创建不含重复项的随机序列数据集、创建随机字符串
R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项).randomSequence函数创建不含重复项的随机序列数据集.创建随机字符串 ...
- R语言威尔考克森秩和统计分布函数Wilcoxon rank Sum Statistic Distribution(dwilcox, pwilcox, qwilcox rwilcox)实战
R语言威尔考克森秩和统计分布函数Wilcoxon rank Sum Statistic Distribution(dwilcox, pwilcox, qwilcox & rwilcox)实战 ...
- R语言Wilcoxon Signed-rank统计分布函数(dsignrank, psignrank, qsignrank rsignrank )实战
R语言Wilcoxon Signed-rank统计分布函数(dsignrank, psignrank, qsignrank & rsignrank )实战 目录 R语言Wilcoxon Sig ...
- R语言威布尔分布函数F Distribution(dweibull, pweibull, qweibull rweibull )实战
R语言威布尔分布函数F Distribution(dweibull, pweibull, qweibull & rweibull )实战 目录 R语言威布尔分布函数F Distribution ...
最新文章
- JavaScript原型彻底理解2---继承中的原型链
- Job_search_collection
- 浅谈双人游戏的设计与魅力——由《双人成行》引发的思考
- 计蒜客 《程序设计竞赛体验课程》第一部分 快速提升代码能力
- Sharepoint COMException 0x81020037
- Webstorm React Nodejs 整合
- Final关键字和类的自动加载
- html if语句_轻量html模版渲染库 cJinja
- mysql分页原理_转:mysql分页原理和高效率的mysql分页查询语句
- 逆天闪存设备 居然能将数据保存至少百年
- Java -- JSP面试题及答案
- 计算机电源认证,80plus认证级别含义扫盲
- 远程访问openwrt路由器+配置动态DNS
- 下载喜马拉雅FM的音频
- arcgis for js4二维地图比例尺
- 利用GPS北斗卫星信号开发设计NTP网络时间服务器
- 使用HTML创建表单
- 自由软件之父抛弃OLPC,支持中国的龙梦:教孩子们使用Windows无异于教他们抽烟
- 谷歌浏览器chrom兼容问题
- linux禅道怎么改公司名字,在linux系统下一键部署禅道环境