R语言中实现随机分布
非常多的应用需要用到随机数,而R语言在simulating random numbers非常的有强大的工具可供使用。
在R中各种概率函数都有统一的形式,即一套统一的 前缀+分布函数名:
如:
1. r*** function (for "random"随机函数), a d*** function (for "density"密度函数), a p*** (for "probability"分布函数), and q*** (for "quantile"分位数函数).
dbinom(x, size, prob, log = FALSE)
pbinom(q, size, prob, lower.tail = TRUE, log.p = FALSE)
qbinom(p, size, prob, lower.tail = TRUE, log.p = FALSE)
rbinom(n, size, prob)
2. 不同的分布函数:
rnorm(n, mean=0, sd=1) #正态分布 | rf(n, df1, df2, ncp) #f 分布 |
rexp(n, rate=1) #指数 | rchisq(n, df, ncp=0) #卡方分布 |
rgamma(n, shape, rate=1, scale=1/rate) #r 分布 | rbinom(n, size, prob) #二项分布 |
rpois(n, lambda) #泊松 | rweibull(n, shape, scale=1) #weibull 分布 |
rt(n, df, ncp) #t 分布 | rbata(n, shape1, shape2) #bata 分布 |
下面会具体介绍几个非常实用的 函数:
sample()
首先介绍sample()随机抽样函数:
> sample
function (x, size, replace = FALSE, prob = NULL)
{if (length(x) == 1L && is.numeric(x) && is.finite(x) && x >= 1) {if (missing(size)) size <- xsample.int(x, size, replace, prob)}else {if (missing(size)) size <- length(x)x[sample.int(length(x), size, replace, prob)]}
}
<bytecode: 0x000000001598a310>
<environment: namespace:base>
x(范围),size(抽样个数),replace有无放回的抽样,prob概率设置
用个例子:试用R编写 模拟扔骰子四次:
得到的是:
>sample(1:6, 4,replace = TRUE)
[1] 3 1 3 3
再来一次:
>sample(1:6, 4,replace = TRUE)
[1] 1 2 3 2
可以明显知道,每一次都不一样!
在尝试一些不同的参数变化,看看有什么不一样:
sample(c(0,1), 100, replace = TRUE,prob = c(0.3, 0.7))
而涉及sample来进行数据抽样的问题,详细还可以看:
rbinom()
rbinom(n, size, prob) 是生成二项分布随机数的函数:n表示生成的随机数数量,size表示进行贝努力试验的次数,prob表示一次贝努力试验成功的概率。
二项分布是指n次独立重复贝努力试验成功的次数的分布,每次贝努力试验的结果只有两个,成功和失败,记成功的概率为p
> rbinom(1, size = 100, prob = 0.7)
[1] 76
> flips2<-rbinom(100,1,0.7)
> flips2[1] 1 1 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 0 1[22] 0 1 0 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 0[43] 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 1 1[64] 0 1 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0[85] 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1
> sum(flips2)
[1] 69
rnorm()
正态分布随机数的生成函数是 rnorm(n,mean=0,sd=1) :n表示生成的随机数数量,mean是正态分布的均值,默认为0,sd是正态分布的标准差,默认时为1;
泊松分布 Poisson Distribution
> rpois
function (n, lambda)
下面是生成5个均值为10的PD:
> rpois(5,10)
[1] 13 10 12 9 11
用 replicate函数去重复100次.
> my_pois <-replicate(100, rpois(5, 10))> my_pois[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
[1,] 18 16 8 12 3 9 8 6
[2,] 6 13 13 7 10 6 9 12
[3,] 10 4 10 13 9 6 9 17
[4,] 12 6 14 15 8 9 7 15
[5,] 8 7 7 7 14 8 7 8[,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,] 13 10 9 6 11 8 8
[2,] 10 9 13 13 9 12 11
[3,] 11 12 8 9 7 12 8
[4,] 5 8 5 7 9 14 10
[5,] 8 5 9 11 15 10 12[,16] [,17] [,18] [,19] [,20] [,21] [,22]
[1,] 8 5 4 18 13 12 9
[2,] 8 11 9 13 12 10 4
[3,] 12 12 7 6 12 6 7
[4,] 12 7 12 10 12 7 10
[5,] 11 10 7 10 9 9 17[,23] [,24] [,25] [,26] [,27] [,28] [,29]
[1,] 13 10 7 11 12 5 14
[2,] 8 5 11 11 15 5 11
[3,] 11 7 13 11 12 11 11
[4,] 5 14 8 8 8 8 8
[5,] 8 9 8 19 9 11 12[,30] [,31] [,32] [,33] [,34] [,35] [,36]
[1,] 13 10 11 8 8 14 10
[2,] 8 18 12 8 10 9 6
[3,] 11 9 14 12 8 6 5
[4,] 12 9 10 4 6 13 10
[5,] 8 13 7 10 12 8 5[,37] [,38] [,39] [,40] [,41] [,42] [,43]
[1,] 13 10 15 11 10 4 12
[2,] 6 14 8 12 14 9 5
[3,] 4 9 7 8 11 7 6
[4,] 16 9 9 11 6 9 10
[5,] 9 6 11 10 13 10 11[,44] [,45] [,46] [,47] [,48] [,49] [,50]
[1,] 10 8 10 12 9 9 10
[2,] 12 13 17 8 11 10 10
[3,] 7 9 10 13 7 16 10
[4,] 8 4 11 12 14 14 7
[5,] 10 11 10 8 15 9 7[,51] [,52] [,53] [,54] [,55] [,56] [,57]
[1,] 10 6 9 12 7 11 7
[2,] 8 7 7 8 14 11 12
[3,] 15 8 11 7 7 10 7
[4,] 8 8 11 9 11 11 7
[5,] 11 5 13 14 14 10 12[,58] [,59] [,60] [,61] [,62] [,63] [,64]
[1,] 11 7 7 7 11 11 7
[2,] 8 7 9 8 11 14 6
[3,] 18 12 11 14 14 6 8
[4,] 19 11 7 9 10 8 12
[5,] 10 10 9 10 13 10 10[,65] [,66] [,67] [,68] [,69] [,70] [,71]
[1,] 10 8 14 11 13 8 17
[2,] 12 13 11 6 12 11 10
[3,] 4 7 11 14 8 11 9
[4,] 10 15 15 15 7 8 13
[5,] 4 14 8 9 11 9 11[,72] [,73] [,74] [,75] [,76] [,77] [,78]
[1,] 9 15 10 10 11 13 5
[2,] 6 12 11 9 13 8 12
[3,] 15 10 7 8 10 13 6
[4,] 9 8 14 17 7 6 11
[5,] 11 5 9 9 11 10 11[,79] [,80] [,81] [,82] [,83] [,84] [,85]
[1,] 17 5 15 8 16 13 11
[2,] 4 9 6 17 11 8 8
[3,] 10 12 13 8 11 11 12
[4,] 10 8 6 12 8 8 15
[5,] 11 13 11 5 8 8 5[,86] [,87] [,88] [,89] [,90] [,91] [,92]
[1,] 10 6 7 5 13 4 6
[2,] 9 8 4 8 10 7 6
[3,] 11 6 7 12 10 11 10
[4,] 8 7 12 11 9 12 6
[5,] 8 10 9 10 13 8 11[,93] [,94] [,95] [,96] [,97] [,98] [,99]
[1,] 10 12 6 10 11 11 11
[2,] 11 8 3 4 5 12 7
[3,] 9 3 15 6 9 8 7
[4,] 13 7 8 7 8 9 11
[5,] 9 12 9 7 15 5 10[,100]
[1,] 14
[2,] 4
[3,] 5
[4,] 7
[5,] 7
有关replicate()
它可以将某个函数重复运行N次,常常用来生成较复杂的随机数。
而有关replicate()函数几个实例用法,可以参照:https://blog.gtwang.org/r/r-advanced-loops/
最后看看生成的直方图:
> cm<-colMeans(my_pois)
> hist(cm)
R语言中实现随机分布相关推荐
- R语言中实现随机森林建模的包randomForest
文章目录 介绍 randomForest()的用法 参数介绍 输出参数 实例 varImpPlot()的用法 参数介绍 实例 介绍 randomForest 使用 Breiman 的随机森林算法(ba ...
- R语言 非中心化F分布
R语言 非中心化F分布 非中心化F分布的定义 R语言中的非中心化F分布 非中心化F分布的定义 非中心化的F分布有两种不同的定义方式,这两种不同的定义方式源于两种不同的非中心化卡方分布的定义. 定义一( ...
- c语言比率分布 函数 rate(m),R语言中统计分布和模拟_R语言培训
R语言中统计分布和模拟 前言 很多应用都需要随机数.像interlink connection,密码系统.视频游戏.人工智能.优化.问题的初始条件,金融等都需要生成随机数.但实际上目前我们并没有&qu ...
- R语言中如何进行PCA分析?利用ggplot和prcomp绘制基因表达量分析图
学习笔记的主要内容是在R语言中利用ggplot2进行PCA分析和绘图,包括简单分析与操作流程,对比不同方式得到的结果差异,提供脚本代码供练习. PCA分析的原理 在处理基因差异表达数据时,有时候需要分 ...
- 用r语言画出y = ax^2 + bx + c,R语言中如何使用最小二乘法
这里只是介绍下R语言中如何使用最小二乘法解决一次函数的线性回归问题. 代码如下: > x > y > lsfit(x,y) 结果如下: $coefficients Intercept ...
- 白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2)
上一篇,讲了R语言中的空间权重矩阵的结构,这一节讲讲R语言里面空间权重矩阵的自定义. 与ArcGIS自定义空间权重矩阵一样,R语言的空间权重矩阵如果纯粹从零开始自定义生成,是非常麻烦的事情,所以我们一 ...
- moran指数 r语言_白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2):不同空间关系对莫兰指数的影响...
原标题:白话空间统计之二十五:空间权重矩阵(四)R语言中的空间权重矩阵(2):不同空间关系对莫兰指数的影响 上一篇,讲了R语言中的空间权重矩阵的结构,这一节讲讲R语言里面空间权重矩阵的自定义. 与Ar ...
- R语言中使用非凸惩罚函数回归(SCAD、MCP)分析前列腺数据
原文链接:http://tecdat.cn/?p=20828 本文使用lasso或非凸惩罚拟合线性回归,GLM和Cox回归模型的正则化,特别是_最小_最_大凹_度_惩罚_函数_(MCP)_和光滑切片绝 ...
- r语言中正定矩阵由于误差不正定_R语言之数据处理(一)
在上一篇小文中,提到了关于R语言导入数据的一些方法,之后的重点就转向了数据的处理上.数据处理其实在整个数据分析项目中所占用的时间是比较多的,所以根据处理的目的不同,也有不同的处理方法.在R语言中,我通 ...
最新文章
- R语言使用ggplot2包geom_jitter()函数绘制分组(strip plot,一维散点图)带状图(添加箱图、带缺口的小提琴图、小提琴图)实战
- one方法报错 select_【总结】Pandas DataFrame 使用方法
- [20171227]表的FULL_HASH_VALUE值的计算2
- 初探swift语言的学习笔记七(swift 的关健词)
- FPGA学习之路—接口(2)—I2C协议详解+Verilog源码分析
- 麦克劳林展开式_数学家麦克劳林与牛顿的故事
- shell 两时间之差
- 170 亿参数加持,微软发布史上最大 Transformer 模型 T-NLG!
- phoneGap实际开发中的某些雷区
- HDU 5979 2016ICPC大连 I: Convex
- 天朝四大不正经社交软件 第一名“亮了”
- 在线阅读各版本android系统源代码
- luogu P5290 [十二省联考2019]春节十二响 优先队列 + 启发式合并
- win7命令提示符下关闭IPv6隧道的方法
- 1.4.4 Performance Measures
- 莫比乌斯反演专题题解
- Python AST node转为string(source code)
- ajax请求是宏任务还是微任务_好程序员web前端学习路线分享了解AJAX是什么
- 深入浅出讲解FOC控制与SVPWM技术
- linux 开机进入initramfs