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()只对运行该命令后的第一次随机产生结果有效。

[plain] view plaincopyprint?
  1. > set.seed(13)
  2. > rnorm(10)
  3. [1]  0.5543269 -0.2802719  1.7751634  0.1873201  1.1425261  0.4155261
  4. [7]  1.2295066  0.2366797 -0.3653828  1.1051443
  5. > set.seed(13)
  6. > rnorm(10)
  7. [1]  0.5543269 -0.2802719  1.7751634  0.1873201  1.1425261  0.4155261
  8. [7]  1.2295066  0.2366797 -0.3653828  1.1051443
  9. >

要得到相同的随机数,还得再“重写”一遍
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语言︱分布函数与概率密度+随机数产生相关推荐

  1. R语言β分布函数(dbeta、pbeta、qbeta、rbeta)实战

    R语言β分布函数(dbeta.pbeta.qbeta.rbeta)实战 目录 R语言β分布函数(dbeta.pbeta.qbeta.rbeta)实战 # 计算β密度函数并可视化

  2. R语言处理数据——生成随机数

    生成随机数 #如下连续生成16组1:3的随机不重复整数(每次3个),存储至repl中: repl <- NULL for(x in 1:16) {repl <- c(repl, sampl ...

  3. R语言:逆变换法生成随机数

    逆变换法生成随机数: 一.概念解释 1.PDF 2.PMF 3.CDF 二.连续型情况举例 三.离散型情况举例 一.概念解释 1.PDF probability density function 概率 ...

  4. R语言的各种统计分布函数

    转载自品略图书馆 http://www.pinlue.com/article/2018/09/1613/487222559948.html R语言的各种统计分布函数 1.二项分布Binomial di ...

  5. R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集、并启动Rattle图形用户界面、数据集变量重命名,为数据集结果变量添加标签、数据划分(训练集、测试集、验证集)、随机数设置

    R语言图形用户界面数据挖掘包Rattle:加载UCI糖尿病数据集.并启动Rattle图形用户界面.数据集变量重命名,为数据集结果变量添加标签.数据划分(训练集.测试集.验证集).随机数设置 目录

  6. R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项)、randomSequence函数创建不含重复项的随机序列数据集、创建随机字符串

    R语言使用random包生成随机数或者随机字符串实战:randomNumbers函数创建随机整数的数据集(包含重复项).randomSequence函数创建不含重复项的随机序列数据集.创建随机字符串 ...

  7. R语言威尔考克森秩和统计分布函数Wilcoxon rank Sum Statistic Distribution(dwilcox, pwilcox, qwilcox rwilcox)实战

    R语言威尔考克森秩和统计分布函数Wilcoxon rank Sum Statistic Distribution(dwilcox, pwilcox, qwilcox & rwilcox)实战 ...

  8. R语言Wilcoxon Signed-rank统计分布函数(dsignrank, psignrank, qsignrank rsignrank )实战

    R语言Wilcoxon Signed-rank统计分布函数(dsignrank, psignrank, qsignrank & rsignrank )实战 目录 R语言Wilcoxon Sig ...

  9. R语言威布尔分布函数F Distribution(dweibull, pweibull, qweibull rweibull )实战

    R语言威布尔分布函数F Distribution(dweibull, pweibull, qweibull & rweibull )实战 目录 R语言威布尔分布函数F Distribution ...

最新文章

  1. JavaScript原型彻底理解2---继承中的原型链
  2. Job_search_collection
  3. 浅谈双人游戏的设计与魅力——由《双人成行》引发的思考
  4. 计蒜客 《程序设计竞赛体验课程》第一部分 快速提升代码能力
  5. Sharepoint COMException 0x81020037
  6. Webstorm React Nodejs 整合
  7. Final关键字和类的自动加载
  8. html if语句_轻量html模版渲染库 cJinja
  9. mysql分页原理_转:mysql分页原理和高效率的mysql分页查询语句
  10. 逆天闪存设备 居然能将数据保存至少百年
  11. Java -- JSP面试题及答案
  12. 计算机电源认证,80plus认证级别含义扫盲
  13. 远程访问openwrt路由器+配置动态DNS
  14. 下载喜马拉雅FM的音频
  15. arcgis for js4二维地图比例尺
  16. 利用GPS北斗卫星信号开发设计NTP网络时间服务器
  17. 使用HTML创建表单
  18. 自由软件之父抛弃OLPC,支持中国的龙梦:教孩子们使用Windows无异于教他们抽烟
  19. 谷歌浏览器chrom兼容问题
  20. linux禅道怎么改公司名字,在linux系统下一键部署禅道环境

热门文章

  1. winform 拖动无边框窗体(调用Windows API)
  2. C#中的问号运算符简介
  3. 使用C#调用Java带MIME附件WebService方法的初步设想
  4. 实时数据库中的二级压缩技术
  5. 应届生还是研究生?与大学生的MSN谈话二
  6. 用JS开发跨平台桌面应用,从原理到实践
  7. 2018--Linux面试题
  8. 【转】NGUI创建UIRoot后报NullReferenceException的解决办法
  9. [201511118]发生系统错误86.txt
  10. 查看eclipse使用的jre版本