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

  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语言中的四类统计分布函数

    R语言中提供了四类有关统计分布的函数(密度函数,累计分布函数,分位函数,随机数函数).分别在代表该分布的R函数前加上相应前缀获得(d,p,q,r).如: 1)正态分布的函数是norm,命令dnorm( ...

  2. [转]概率基础和R语言

    概率基础和R语言 R的极客理想系列文章,涵盖了R的思想,使用,工具,创新等的一系列要点,以我个人的学习和体验去诠释R的强大. R语言作为统计学一门语言,一直在小众领域闪耀着光芒.直到大数据的爆发,R语 ...

  3. R语言与非参数统计(核密度估计)

    R语言与非参数统计(核密度估计) 核密度估计是在概率论中用来估计未知的密度函数,属于非参数检验方法之一,由Rosenblatt (1955)和Emanuel Parzen(1962)提出,又名Parz ...

  4. R语言实战(二)数据管理

    本文对应<R语言实战>第4章:基本数据管理:第5章:高级数据管理 创建新变量 #建议采用transform()函数 mydata <- transform(mydata, sumx ...

  5. 数据分析与R语言

    数据结构 创建向量和矩阵 函数c(), length(), mode(), rbind(), cbind() 求平均值,和,连乘,最值,方差,标准差 函数mean(), sum(), min(), m ...

  6. 数据分析R语言1

    数据分析R语言 无意中发现网上的一个数据分析R应用教程,看了几集感觉还不错,本文做一个学习笔记(知识点来源:视频内容+R实战+自己的理解),视频详细的信息请参考http://www.itao521.c ...

  7. R语言函数总结(转)

    R语言特征 对大小写敏感 通常,数字,字母,. 和 _都是允许的(在一些国家还包括重音字母).不过,一个命名必须以 . 或者字母开头,并且如果以 . 开头,第二个字符不允许是数字. 基本命令要么是表达 ...

  8. R语言编程艺术(4)R对数据、文件、字符串以及图形的处理

    本文对应<R语言编程艺术> 第8章:数学运算与模拟: 第10章:输入与输出: 第11章:字符串操作: 第12章:绘图 =================================== ...

  9. 【R】R语言常用函数

    R语言常用函数 基本 一.数据管理vector:向量 numeric:数值型向量 logical:逻辑型向量character:字符型向量 list:列表 data.frame:数据框c:连接为向量或 ...

随机推荐

  1. DVWA安装问题(phpStudy)

    安装过程出现的问题: 1.PHP function allow_url_include disabled 注意DVWA的版本    PHP version: 5.4.45 打开/phpStudy/ph ...

  2. git修改目录名称

    同步代码 $ git pull origin master 修改某个目录名称 $ git mv doc docs 把doc目录修改为docs 提交至远程仓库 $ git push origin mas ...

  3. Hello 2018

    愈发觉得写技术博客对于自己写作能力的提升会很有帮助,于是在今天终于用Github+Jekyll的方式搭建了自己的博客,从今往后就在这里记录自己在技术上成长的点滴,希望自己的总结和思考也能帮助到其他人. ...

  4. 使用redis所维护的代理池抓取微信文章

    搜狗搜索可以直接搜索微信文章,本次就是利用搜狗搜搜出微信文章,获得详细的文章url来得到文章的信息.并把我们感兴趣的内容存入到mongodb中. 因为搜狗搜索微信文章的反爬虫比较强,经常封IP,所以要 ...

  5. Linux tail,cat,head命令

    tail命令用于将文件的最后部分输出到标准设备,通常是终端,也可以支持更新操作,当文档内容发生变化时,tail会自己主动刷新,确保你看到最新的档案内容. 1.tail -f filename 监视fi ...

  6. BZOJ 4269: 再见Xor [高斯消元 线性基]

    4269: 再见Xor Description 给定N个数,你可以在这些数中任意选一些数出来,每个数可以选任意多次,试求出你能选出的数的异或和的最大值和严格次大值. 我太愚蠢了连数组开小了以及$2^{ ...

  7. strcpy和strcat易忽略点

    首先来看一段C程序: #include <stdio.h> #include <string.h> #include <stdlib.h> void GetMem( ...

  8. Windows 定时任务对数据库进行操作

    定时对数据库进行操作可以用mysql的event事件来完成,但是只有mysql5.1后的才支持,所以有一定的局限性,也可以通过其他的mysql管理软件实现,而我发现Windows本身就有个定时任务的功 ...

  9. Mac 上安装 GCC

    https://www.zhihu.com/question/20588567 安装 添加bin路径到$PATH变量

  10. gitlab10.0安装手记

    + +exec chpst -e /opt/gitlab/etc/gitlab-workhorse/env -P \ + -U git \ + -u git \ + /opt/gitlab/embed ...