模拟simulation

➢概率函数

概率函数通常用来生成特征已知的模拟数据,以及在统计函数中计算概率值。

对于任意分布有四种基本函数:

前缀 作用
d 产生随机数
r 估计概率分布的密度
p 估计累积分布
q 估计分位数

正态分布:rnorm( )、dnorm( )、pnorm( )、qnorm( ); Gamma分布:rgamma( )、dgamma( )、pgamma( )和 qgamma( ); 泊松分布:rpois( )、dpois( )、ppois( ) 和 qpois( )。

dnorm(x, mean = 0, sd = 1, log = FALSE) pnorm(q, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) qnorm(p, mean = 0, sd = 1, lower.tail = TRUE, log.p = FALSE) rnorm(n, mean = 0, sd = 1)

正态分布概率函数默认为标准正态分布。

・dnorm( ) 的log选项能求密度的对数值 (log of density) ・pnorm( ) 和 qnorm( ) 中log.p选项也可以对概率求对数 ・lower.tail选项默认计算分布的左尾 (lower tail) ・若Φ是标准正态分布的累积分布函数,则pnorm(q)=Φ(q)且qnorm(p)=Φ-1(p) (qnorm() 等于Φ的反函数)

set.seed( ) 设置随机数生成种子 (seed),可以重复生成相同的随机数。

set.seed(1)rnorm(5) #生成5个服从标准正态分布的随机数[1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078rnorm(5)[1] -0.8204684  0.4874291  0.7383247  0.5757814 -0.3053884set.seed(1)rnorm(5)[1] -0.6264538  0.1836433 -0.8356286  1.5952808  0.3295078

生成服从泊松分布的随机数

x10, x[1] 1 1 1 0 2 1 2 0 1 1summary(x)    Min. 1st Qu.  Median    Mean 3rd Qu.    Max.       0       1       1       1       1       2#泊松分布中,均值应该等于平均发生率

估计泊松分布的累积分布函数

ppois(2, 2)[1] 0.6766764#在平均发生率为2的泊松分布中出现小于等于2的随机变量的概率,Pr(x <= 2)ppois(4, 2)[1] 0.947347# Pr(x <= 4)ppois(6, 2)[1] 0.9954662# Pr(x <= 6)

➢从线性模型模拟随机值

假设线性模型y=β0+β1x+ε,其中β0等于0.5,β1等于2,随机噪声ε服从标准差为2的正态分布。

当x服从正态分布时:

set.seed(20)x <- rnorm(100) #生成服从正态分布的随机变量xe <- rnorm(100, 0, 2) #生成随机噪声y<-0.5+2*x+e summary(y)   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. -6.4084 -1.5402  0.6789  0.6893  2.9303  6.5052plot(x, y)

用回归模型模拟x和y,两者之间存在明显线性关系,符合回归模型。

当x服从二项分布时:

set.seed(10)x <- rbinom(100, 1, 0.5) e <- rnorm(100, 0, 2)y<-0.5+2*x+esummary(y)   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. -3.4936 -0.1409  1.5767  1.4322  2.8397  6.9410 plot(x, y)

x是二元变量时,y依旧是连续的且服从正态分布,x和y之间存在线性趋势。

➢从广义线性模型模拟随机值

假设y服从泊松分布,Y ~ Poisson(μ);log(μ)服从一个截距为β0,斜率为β1的线性函数,logμ=β0 +β1x;β0为0.5,β1为0.3。

set.seed(1)x <- rnorm(100) #生成服从正态分布的随机变量xlog.mu<-0.5+0.3*xy <- rpois(100, exp(log.mu)) #模拟生成100个服从泊松分布的随机变量summary(y)   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    0.00    1.00    1.00    1.55    2.00    6.00plot(x, y)

可以看到y不是连续变量,而是计数变量,但x和y之间存在线性关系,当x越大,y也增加。

➢随机抽样

sample函数可以从给定的一组对象中随机抽取样本。

set.seed(1)sample(1:10, 4)[1] 9 4 7 1  sample(1:10, 4)[1] 2 7 3 6  sample(letters, 5)[1] "r" "s" "a" "u" "w"

默认为无放回抽样,不会得到重复的元素。

sample(1:10)[1] 10  6  9  2  1  5  8  4  3  7

如果不指定其他参数,返回这些整数重新排列后的结果,向量里1到10的顺序被随机重新排列。

sample(1:10, replace = TRUE)[1]  5  5  2 10  9  1  4  3  6 10

指定replace=TRUE,函数进行10次有放回抽样。

分析器profiler

在开发规模较大的程序或者做大型数据分析时,运行代码可能耗费很长时间,分析器可以分析代码的运行时间并提供一些建议解决问题,优化代码。

➢system.time( )

system.time( ) 取出并分析任意一条R语句,返回运行语句所需时间。如果执行分析时代码有错误,返回代码运行直到错误发生所用的时间。

用户时间 (user time):运行这行语句需要占用中央处理器的时间。

运行时间 (elapsed time):所经历的时间,也称时钟时间 (wall clock time)。

・通常情况下,用户时间和运行时间是比较接近的,计算机执行函数或者语句所需时间大致上等于等待的时间。

・运行时间比用户时间长,说明中央处理器实际可能耗费很多时间在其它后台事项上。

・运行时间比用户时间短,通常是因为机器有多核或多处理器且都处于可利用状态。

#运行时间比用户时间长system.time(readLines("http://www.google.cn")) #readLines() 从远程服务器读取网页 user  system  elapsed 0.002   0.002    0.305 

中央处理器实际上没有耗费很多时间运行代码,大部分时间用在等待网络,等待数据经过网络传递到计算机里,等待网络对数据的来回处理上。

#运行时间比用户时间短hilbert function(n) {    i<-1:n   1/outer(i-1,i,"+")}x 1000) system.time(svd(x)) #svd()计算这个矩阵的奇异值分解  用户  系统   流逝 1.605 0.094 0.742

svd函数使用苹果机的 Accelerate 框架,一个多线程线性代数库,把计算任务分给两个核进行。

#运行时间与用户时间大致相等system.time({    n    r    for(i in 1:n){     x      r[i]    } })  用户  系统  流逝 0.099 0.006 0.109

不需要多线程或网络活动的简单表达式,用户时间和运行时间基本相同。

➢Rprof( )

Rprof( ) 启动R中的分析器,可以在规律的样本区间内记录追踪函数调用栈,即每过0.02秒打印输出函数的调用栈。(当函数运行时间少于0.02秒时无效)

system.time函数适用于较小型、较简单、很明确问题发生位置的程序。如果不明确问题在哪里,可以用Rprof函数。(注意,不可以同时使用Rprof( )和sysyem.time( )。)

summaryRprof( )总结分析器的原始输出结果,计算每个函数各自耗费的时间。

library(ISLR)Wage Rprof(tmp lm(wage~age + jobclass + education,data=Wage) #运行lm函数Call:lm(formula = wage ~ age + jobclass + education, data = Wage)Coefficients:                (Intercept)                          age                      59.5800                       0.5554       jobclass2. Information          education2. HS Grad                       4.5107                      11.2009     education3. Some College     education4. College Grad                      23.3304                      38.3862  education5. Advanced Degree                      62.9115 Rprof()summaryRprof(tmp)$by.self #真正耗时的函数                       self.time self.pct total.time total.pct"model.matrix.default"      0.02       25       0.04        50""               0.02       25       0.02        25"conditionCall"             0.02       25       0.02        25"stop"                      0.02       25       0.02        25$by.total #顶层函数为lm,耗费0.06s                       total.time total.pct self.time self.pct"lm"                         0.06        75      0.00        0"model.matrix.default"       0.04        50      0.02       25"model.matrix"               0.04        50      0.00        0""                0.02        25      0.02       25"conditionCall"              0.02        25      0.02       25"stop"                       0.02        25      0.02       25".External2"                 0.02        25      0.00        0"[[.data.frame"              0.02        25      0.00        0"[["                         0.02        25      0.00        0"base::try"                  0.02        25      0.00        0"contrasts                0.02        25      0.00        0"eval"                       0.02        25      0.00        0"model.frame.default"        0.02        25      0.00        0……$sample.interval[1] 0.02$sampling.time[1] 0.08unlink(tmp)

sysyem.time( )将从R分析器中得到的数据规范化的方式:

・by total:把每个函数依照总运行时间排序,第一个通常是顶层函数

因为lm位于顶层,耗费75%的时间,但它只是调用真正进行运算的辅助函数,因此知道顶层函数使用的时间用处不大

・by self:先减去调用栈中低级函数花的时间再进行排序,即每个函数真正的耗费时间

编辑:李雪纯 冯文清 校审:张健 罗鹏

R plot图片背景设置为透明_数据科学06 | R语言程序设计模拟和R分析器相关推荐

  1. R plot图片背景设置为透明_一文学会网络分析——Cooccurrence网络图在R中的实现...

    作者:陈亮  单位:中科院微生物所 编者按:在菌群月坛,在军科院听取王军组陈亮博士分享网络分析的经验,不仅使我对网络的背景知识有了更全面的认识,更使我手上一个关于菌根的课题有极大的启示.这么好的知识, ...

  2. R plot图片背景设置为透明_学习健明老师发布的R语言练习题的学习笔记(一)...

    学习者:骆栢维 题目来源:生信基石之R语言 初级10 个题目:http://www.bio-info-trainee.com/3793.html 备注:本文为笔者学习健明老师GitHub答案代码的学习 ...

  3. R plot图片背景设置为透明_R语言绘图:使用主题提高图片的美感

    作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量.机器学习.数据可视化.应用统计建模.知识图谱等,著有& ...

  4. R plot图片背景设置为透明_R语言入门第十二讲:基础绘图(二)------plot与par函数(1)...

    上一次给大家简单展示了plot函数的用法,以及par函数的使用.今天我们继续应用这两个函数,看看它的其他功能. 下面这个图是数据的一部分[1].我一直认为,作图简单,但关键是要知道数据在数据库中的格式 ...

  5. R plot图片背景设置为透明_R语言实战 牛国庆

    [toc] 第一章 1.3.2 R中帮助函数 R中用于管理R工作空间的函数 函数setwd()不会自动创建一个不存在的目录.如果必要的话,可以使用函数dir.create()来创建新目录,然后使用se ...

  6. R plot图片背景设置为透明_R语言数据可视化基因名称转换及KEGG/GO富集分析

    01 - 简介 BiocManager是生物信息分析必不可少的R包之一,主要用来分析基因相关的各种问题,但是通常再R上安装这个程序包都挺麻烦的,搜索引擎上有非常多的关于如何安装的,因此这里只给个建议, ...

  7. R plot图片背景设置为透明_matplotlib设置颜色、标记、线条,让你的图像更加丰富...

    今天是数据处理专题的第11篇文章,我们继续来介绍matplotlib这个包的使用方法. 在上一篇文章当中我们介绍了matplotlib当中subplot的概念以及用法,今天我们将会来介绍matplot ...

  8. Photoshop简单案例(7)——利用对象选择工具将图片背景设置为透明

    目录 一.项目介绍 二.基本流程 三.效果演示 四.拓展 一.项目介绍 工具栏中第四个工具包括三个工具:对象选择工具.快速选择工具和魔棒工具.这三个工具主要用于智能抠图,而本文中的将图片背景设置为透明 ...

  9. 用ps将图片背景设置为透明

    下载的图片周围或许有一大片背景颜色,如何将之设置成透明呢?方法如下:. 在网页制作中,往往会发生这种事情,当你把辛辛苦苦制作好的图像插到网页中后,会发现这幅图像的背景颜色和网页背景颜色怎么看也不协调. ...

最新文章

  1. 2020-08-20 CountVectorizer 包含示例 API
  2. [导入]伍迷创意随想集 之 聚众广告创精品
  3. Spring For All 顶级Spring综合社区服务平台
  4. Android Studio (6)---Gradle
  5. 大数据之-Hadoop3.x_MapReduce_WordCount案例集群运行---大数据之hadoop3.x工作笔记0093
  6. 怎样在Delphi中屏蔽Flash控件的右键弹出菜单
  7. non linear processor
  8. Ubuntu下 Tomcat + JSF + Ant + eclipse 开发环境搭建
  9. activiti bpmn 安装不上_OTC弧焊工作站问题集-Win7 64位系统安装Step7 MicroWIN
  10. 一副对联,送给所有创业小公司
  11. 深入理解C语言指针的奥秘
  12. Single Image Haze Removal Using Dark Channel Prior(使用暗通道先验去除单张图像雾霾)
  13. 调试记录:基于NCN5120芯片的KNX-485桥接模块
  14. Windows 开机自动拨号上网
  15. win10 SystemParametersInfo 设置屏保 不好使_[教程]win10 ,ubuntu双系统安装避坑指南
  16. 自己diy的一个简单的家居管理系统
  17. 字符串流stringstream--<sstream>
  18. Ubuntu之[福昕pdf安装与卸载]
  19. 案例 | 中央企业数字化转型实践
  20. Android四大组件之Content Provider

热门文章

  1. 2022年全球市场高空作业平台总体规模、主要生产商、主要地区、产品和应用细分研究报告
  2. 2021年,我推荐你学习的编程语言,各类语言横向对比
  3. PHP人才匮乏,月入万元不是梦
  4. 屏幕亮度无法调节问题解决
  5. 自己的应用跳转到应用宝评分界面
  6. 像哆啦A梦懂大雄一样懂客户,我们也会拥有百宝箱
  7. avatar Logo
  8. minio服务器在win10的上传与下载,以及修改头像Minio速看免费本地文件服务器
  9. 光线追踪(RayTracing)算法理论与实践(三)光照
  10. JavaScript JS 如何定义多行文本