《《R语言入门》PPT课件.ppt》由会员分享,可在线阅读,更多相关《《R语言入门》PPT课件.ppt(70页珍藏版)》请在三一办公上搜索。
1、R 语言入门,Xu,Da-Lei PS GDC,主题,R 语言的简介R 语言的工具R 语言编程R 语言中的数学,R 语言的简介,什么是 R 语言 一个开放(GPL)的统计编程环境 一种语言,是由语言发展而来,S语言的另一个发展方向为S-Plus 一种软件,是集统计分析与图形直观显示于一体的统计分析软件,R 语言的简介,R 项目 R 作为一个项目,最早(1995年)是由Auckland大学统计系的Robert Gentleman和Ross Ihaka开始编制 目前由核心开发小组(R Development Core Team 以后用R DCT表示)维护 可以通过项目的网站(http:/www.r
2、-project.org)了解有关的最新信息和使用说明,得到最新版本的软件和基于的应用统计软件包 资源网站:CRAN(Comprehensive R Archive Network)http:/cran.r-project.org 我们可以编制自己的函数来扩展现有的语言,R 语言的简介,R 的安装 为了显示图形,需要安装libX11-devel相关rpm包 创建R的安装目录/usr/R 从CRAN社区下载最新的R源码R-3.1.3.tar.gz 将R源码文件R-3.1.3.tar.gz上传到Linux,例如放在dbadmin用户的home目录下 使用命令tar-zxvf R-3.1.3.tar
3、.gz解压文件 进入解压后目录,运行./configure-enable-R-shlib-prefix/usr/R 命令执行配置 在解压目录中,运行make命令执行编译 在解压目录中,运行make install命令执行安装,R 语言的简介,与其它语言的对比 S-Plus 是完全免费的,而S-Plus是收费的我们将程序容易地移植到S-Plus程序中,反之的许多过程直接或稍作修改用于 MatlabMatlab的语法更适合于矩阵操作,界面更加美观R有大量的新的且高质量的包可用,R 工具/运行平台,R GUI 平台:Windows 安装:在Windows平台通过双击.exe文件来安装 组成部分 主菜
4、单 工具条 R Console,R 工具/运行平台,R Commander 平台:Windows,Linux 安装:通过 install.packages(“Rcmdr”)命令来安装 功能 R Commander是一个交互式菜单/对话框系统,用于进行数据的读、写、转换及常用的统计分析 添加了线性与广义线性模型等统计分析工具,R 工具/运行平台,R WinEdit 平台:Windows 安装:在Windows平台通过双击.exe文件来安装 主要功能 提供一个类似UltraEdit的编辑工具 提供 LaTex/CTex 的功能支持,R 工具/运行平台,R Studio 平台:Windows,Lin
5、ux,Mac 目前最好的R开发平台 Linux下建议使用CentOS6 HP Vertica Distributed R 将会用到,R 语言编程,基本原理 同Matlab一样,R是一种解释性语言,语法非常的简单和直观,来看一些规则 R的函数总是带有圆括号,例如:lm(yx)表示以x为自变量,y为响应变量来拟合的一个线性模型 如果直接输入函数名,则会显示该函数的一些具体内容 所有的变量、数据、函数、结果,都是以对象的形式存入内存 所有的函数都被包含于一个库内,该库存放在R安装目录的library子目录 名为base的包,是R的核心包 包在使用之前,必须要加载,核心包不用,R 语言编程,赋值 输入
6、一个对象名字,显示内容:n1 10 其中:方括号中的数字1表示从n的第一个元素开始显示 该命令的功能,等于函数print(n),R 语言编程,赋值 为对象赋值:n n1 10 10-n n1 10 其中:该符合可以是从左到右,也可以相反 该命令的功能,等于函数assign(),还可以使用等号“=”,R 语言编程,赋值 只是输入函数或者表达式,而不把它的结果赋给某个对象,这样结果只在窗口展示,而不保存到内存,例如:(10+2)*5-24)/41 13 sqrt(3)+exp(-2)1 1.867386,R 语言编程,数据结构 R 是通过一些对象来运行的 所有的对象都有两个内在的属性:类型和长度,
7、例如:mode(x)1 numeric“length(x)1 1,R 语言编程,数据结构 浏览对象的信息,例如:name ls()1 m n1 n2 name ls.str()m:num 0.5 n1:num 10 n2:num 100 name:chr Carmen M print(ls.str(pat=M),max.level=-1)M:data.frame:1 obs.of 3 variables:,R 语言编程,数据结构 向量:一组类型相同的变量组成的集合 向量的建立 seq():创建规律简单的向量 rep():创建规律复杂的向量 c():创建没有规律的向量 scan():通过键盘逐个
8、输入,R 语言编程,数据结构 因子向量 变量可能的值 离散的 有序的,无序的,R 语言编程,数据结构 因子向量的建立,例如:factor(x,levels=sort(unique(x),na.last=TRUE),labels=levels,exclude=NA,ordered=is.ordered(x)a a-factor(a)a1 green blue green yellowLevels:blue green yellow,R 语言编程,数据结构 向量的计算 向量与一个常数的加、减、乘、除,为向量的每一个元素与该常数的加、减、乘、除 向量的乘方、开方、log,exp,sin,cos,ta
9、n等,为每一个元素的相应运算 同样长度向量的加、减、乘、除,为位置相同的元素的加、减、乘、除 不同长度的向量,长度必须是倍数关系,才能进行相应的运算,R 语言编程,数据结构 数组是一个k维的数据表,矩阵是k=2的数组,向量是k=1的数组 数组的建立,例如:A A-array(1:8,dim=c(2,2,2),R 语言编程,数据结构 矩阵的代数运算:转置函数 t()提取对角元 diag()矩阵的行合并rbind()矩阵的列合并cbind()矩阵的逐元乘积*矩阵的代数乘积%*%方阵的行列式det(),R 语言编程,数据结构 矩阵的统计运算:m apply(m,MARGIN=1,FUN=mean)#
10、求各行的均值1-0.2540148 0.5474583 0.1493290 apply(m,MARGIN=2,FUN=mean)#求各列的均值1-0.5389053 0.4731592 0.7821656-0.1260561 row.med sweep(m,MARGIN=1,STATS=row.med,FUN=”-”)#求各行减去中位数,R 语言编程,数据结构 数据框统计分析中一个完整的数据集,通常是由若干个变量的若干个观测值组成的 数据框的建立 x=c(42,7,64,9)y=1:4 z.df=data.frame(INDEX=y,VALUE=x),R 语言编程,数据结构 列表可以包含任何类
11、型的对象 列表的建立 L2-list(x=1:6,y=matrix(1:4,nrow=2),R 语言编程,数据结构 由函数ts()通过一向量或者矩阵,创建一个一员的或多元的时间序列 时间序列的建立ts(data=NA,start=1,end=numeric(0),frequency=1,deltat=1,ts.eps=getOption(ts.eps),class,names)ts(1:47,frequency=12,start=c(1959,2),R 语言编程,来看一个例子 该例使用R内嵌的数据集mtcars.它位于datasets程序包,该程序包象base程序包一样,随R的启动自动加载 数
12、据集的浏览与编辑?mtcars#数据的描述 mtcars#显示全部的32个观测值 head(mtcars)#仅显前6个观测值 names(mtcars)#显示11个指标 data.entry(mtcars)#通过R的二维图形,编辑数据集 MTcars xnew fix(mtcars)#直接修改数据集,R 语言编程,来看一个例子 属性(指标)的分析 attach(mtcars)#挂接上数据集 mtcars$mpg#显示mpg指标下的值 table(cyl)#显示cyl指标的分布 barplot(table(cyl)#显示cyl指标的频率直方图,R 语言编程,来看一个例子 数值型数据的分析 ste
13、m(mpg)#画茎叶图 hist(mpg)#画直方图 boxplot(mpg)#画框须图 mean(mpg)#计算平均值 mean(mpg,trim=.1)#计算截去10%的平均值 tapply(mpg,cyl,mean)#按照分组变量cyl计算mpg的分组的平均值 mean(mpgcyl=4)#计算cyl为4的那些mpg的平均值 IQR(mpg)#计算四分位数的极差,R 语言编程,来看一个例子 数值型数据的分析 quantile(mpg)#计算样本常用的分位数 fivenum(mpg)#极大、极小、中位数、两个四分位数 probs=c(0.1,0.5,99.5)/100.#计算由prob给定
14、的各概率处的样本分位数 quantile(mpg,probs)summary(mpg)#计算常用的描述性统计量 sd(mpg)#计算标准差 mad(mpg)#计算中位绝对离差,R 语言编程,来看一个例子 寻找二元关系 plot(cyl,mpg)#画二维散点图 plot(hp,mpg,pch=cyl)#画三维效果的散点图 legend(250,30,pch=c(4,6,8),legend=c(4 cylinders,6 cylinders,8 cylinders)z cor(cyl,mpg)#相关系数考查回归拟合好坏的程度 lm.res lm.resids plot(lm.resids)#考查残
15、差的散点图 hist(lm.resids)#考查残差的直方图 qqnorm(lm.resids)#残差的QQ图是否落在直线上,R 语言编程,结构控制 条件语句 if(x=0)sqrt(x)else NA ifelse(x=0,sqrt(x),NA)循环 for(i in 1:5)print(1:i)i=1 while(i=5)print(1:i)i=i+1,R 语言编程,Workspace R 运行的内存区域,可以保存到硬盘 每个R Console中的操作,都在Workspace中进行 在 R Console 里使用的变量、定义的函数,都保存在Workspace中 常用命令 save.imag
16、e()ls()rm(list=ls(all=TRUE)gc(),R 语言编程,程序包 程序包提供了一个加载所需代码、数据和文件的集合。R软件自身就包含大约30种不同功能的包,这些基本包提供了R软件的基本功能 区分两个重要的概念 安装 加载,R 语言编程,程序包 程序包的基本结构package(包的名字)|-DESCRIPTION(描述文件,包括包名、版本号、标题、描述、依赖关系等)|-NAMESPACE(包的命名空间文件)|-R(函数源码)|-function1.R|-function2.R|-.|-man(帮助文档,存放函数说明文件的目录)|-function1.Rd|-Package.Rd
17、|-.|-.,R 语言编程,程序包 制作R包的工具软件 Rtools CYGWIN:用以在windows环境模拟UNIX环境MinGW编译器:用以编译C和Fortran语言Perl编译器,用以编译Perl语言,R 语言编程,程序包 编辑源代码编写.r函数源代码,也就是用来生成R程序包的函数脚本。在本文的演示中,假如现在我们已经有了一个编好的R函数Hello,用来在屏幕上输出问候:hello-function(name)print(paste(“Hello”,name)存成了r脚本的格式,文件名为 Hello.r,R 语言编程,程序包 生成相关帮助文件 rm(list=ls()#清空R工作内存
18、setwd(D:/R-Pkg-Produce)#设定工作目录 package.skeleton(name=hello,code_files=D:/R-Pkg-Produce/hello.r)#将待打包函数装载进工作内存,构建R包文件结构,生成相应的文件夹及其下面的文件,包名为“hello”,文件是“hello.r”,R 语言编程,程序包 相关文件的编辑在目录D:R-Pkg-Produce下,会自动生成一个与R包名字相同的文件夹该文件夹下的内容就是R包的基本框架,包括Read-and-delete-me,DESCRIPTION文件,Rd文件用文本编辑器,或者RStudio 打开相应的文件,按要求
19、将其填写完整,再进行相应的编译,R 语言编程,程序包 生成zip文件或者.tar.gzcd D:/R-Pkg-Produce#将工作目录更改至先前设定的R包路径下R CMD check D:/R-Pkg-Produce/hello#检查r包helloR CMD build D:/R-Pkg-Produce/hello#编译生成zip或.tar.gz文件,R 语言编程,程序包 测试程序包 install.packages(“/home/dbadmin/hello_1.0.tar.gz,repos=NULL,type=source)#安装新生成的程序包 library(hello)#加载程序包 h
20、ello(“world”)#调用函数1 Hello world,R 语言编程,程序包 常用命令.libPaths()#查看程序包的安装目录 library()#查看已经安装的程序包的目录 load(mypackage)#加载名为mypackage的程序包 remove.packages(mypackage)#卸载名为mypackage的程序包 installed.packages()#查看已安装程序包的信息 installed.packages(“mypackage”)#安装mypackage程序包 library(“mypackage”)#载入名为mypackage的程序包 getOptio
21、n(defaultPackages)#查看启动R时自动载入的程序包 help(package=mypackage)#查看程序包mypackage的帮助 demo(mypackage)#展示名为mypackage的程序包中demo RSiteSearch(mypackage)#搜索名为mypackage的程序包的相关信息 search()#查看当前载入的程序包 sessionInfo()#查看当前载入的程序包,R 语言编程,绘图 绘图函数points(x,y):添加点lines(x,y):添加线text(x,y,labels):在(x,y)处添加用labels指定的文字abline(a,b):绘
22、制斜率为b和截距为a的直线rect(x1,y1,x2,y2):绘制长方形,R 语言编程,绘图 绘图函数plot(x):以x的元素的值为纵坐标、以序号为横坐标绘图plot(x,y):在x轴上的x,与在y轴上的y的二元作图sunflowerplot(x,y):类似plot(x,y),但是以相似坐标的点作为花朵,其花瓣数目为点的个数pie(x):饼图boxplot(x):盒图stripchart(x):把x的值华在一条线段上coplot(xy|z):关于z的每个数值(或数值区间),绘制x与y的二元图,R 语言编程,绘图 绘图函数的参数add=FALSE:如果是TRUE,叠加图形到前一个图上axes=
23、TRUE:如果是FALSE,不绘制轴与边框type=”p”:指定图形的类型xlim=,ylim=:指定轴的上下限xlab=,ylab=:坐标轴的标签main=:主标题sub=:副标题,R 语言编程,绘图的例子 R的数据集Puromycin dim(Puromycin)1 23 3 head(Puromycin)conc rate state1 0.02 76 treated2 0.02 47 treated,R 语言编程,绘图的例子 散点图 PuroA plot(rate conc,data=PuroA)u plot(u 1,pch=u,col=u,cex=3)plot(rate conc,d
24、ata=PuroA,pch=2,col=4,cex=2.5,xlim=c(0,1.2),ylim=c(40,210),ylab=Concentration,xlab=Rate,cex.lab=2)title(main=Puromycin,cex.main=3),R 语言编程,绘图的例子 画线 library(doBy)plot(rate conc,data=PuroA)PuroA.mean plot(rate conc,data=PuroA,pch=16,col=4,cex=1.5)points(rate.mean conc,data=PuroA.mean,col=cyan,lwd=10,pc
25、h=x)lines(rate.mean conc,data=PuroA.mean,col=blue),R 语言编程,绘图的例子 保存绘图到文件 setwd(“/home/dbadmin)future1=paste(“test01,.jpg)jpeg(file=future1)dev.off(),R 语言编程,数据的存储与读取 保存到文本例如有一个数据框 d write.table(d,file=c:/data/foo.txt,row.names=F,quote=F)保存为逗号分割的文本文件 write.csv(d,file=c:/data/foo.csv,row.names=F,quote=F
26、)保存为R格式文件 save(d,file=c:/data/foo.Rdata),R 语言编程,数据的存储与读取 文本文件的读取使用函数read.table()setwd(“/home/dbadmin/data)HousePrice mydata-scan(data.dat,+what=list(Sex=,Weight=0,Height=0),R 语言编程,数据的存储与读取 文本文件的读取我们先建立的文件A1.501.2B1.601.4C1.701.6函数read.fwf()可以用来读取文件中一些固定宽度格式的数据 mydata-read.fwf(data.txt,widths=c(1,4,3
27、),col.names=c(X,Y,Z)X Y Z1 A 1.50 1.22 B 1.60 1.43 C 1.70 1.6,R 语言编程,数据的存储与读取 Excel文件的读取 使用RODBC程序包 library(RODBC)z foo close(z),R 语言编程,数据的存储与读取 数据库的访问 library(RMySQL)#will load DBI as well#open a connection to a MySQL database con dbListTables(con)#load a data frame into the database,deleting any e
28、xisting copy data(USArrests)dbWriteTable(con,arrests,USArrests,overwrite=TRUE)TRUE dbListTables(con)1 arrests,R 语言编程,数据的存储与读取 数据库的访问#get the whole table dbReadTable(con,arrests)Murder Assault UrbanPop RapeAlabama 13.2 236 58 21.2.#Select from the loaded table dbGetQuery(con,paste(select row_names,Mu
29、rder from arrests,where Rape 30 order by Murder)row_names Murder1 Colorado 7.92 Arizona 8.1 dbRemoveTable(con,arrests)dbDisconnect(con),R 语言编程,在线帮助 通过help.start()来打开帮助 模糊匹配相关的帮助,例如:help.search(char)rebuild 选项如果有一些包是刚刚安装的,则必须使用rebuild选项来重新编制索引 help.search(tree,rebuild=TRUE)只在加载的包里进行,对函数名进行模糊匹配 apropo
30、s(help),R 语言编程,在线帮助 获取函数的帮助,例如:help(myfunction)?myfunction try.all.packages 选项默认情况下,我们只在加载的包中进行搜索 如果要在所有的包中进行搜索,则使用该选项,例如:help(“bs”,try.all.packages=TRUE)#该搜索只是指出函数所作包 package 选项 可以在指定的package里进行搜索,例如:help(“bs”,package=“splines”)#该搜索返回函数详细信息,R 语言编程,在线帮助 查找没有载入程序包内的函数,例如:help(“myfunction”,package=“my
31、package)查找函数所在的程序包,例如:find(“myfunction”)查函数的变量,例如:args(“myfunction”),R 语言中的数学,概率论与数理统计 概率刻画事件(随机现象)出现的可能性大小的一种数量指标本身固有,客观 概率论研究随机现象数量规律的数学分支 数理统计研究如何用有效的方法,去收集、整理、分析、推断数据资料的数学分支,R 语言中的数学,概率论与数理统计 分析问题的思路 建模 探索型数据分析 参数估计 方差分析 回归分析,R 语言中的数学,概率论与数理统计 随机试验概率论中的试验可重复的、条件相同的、多个结果的试验 样本点每个随机试验的的结果 样本空间所有的样
32、本点组成的集合,R 语言中的数学,概率论与数理统计 随机事件随机试验的样本空间中的子集 随机变量设试验 E 的样本空间为,如果对每一个样本点 属于,都有唯一的实数X()与之对应,则称X=X()为样本空间上的随机变量,R 语言中的数学,概率论与数理统计 分布函数假设 X 是一个随机变量,x 是任意一实数,则函数 F(X)=PX=x 称为随机变量 X 的概率分布函数 密度函数假设随机变量 X 的分布函数为 F(X),如果存在一个函数f(x),对于任意的实数 x,都有 则称 X 为连续型随机变量,f(x)为 X 的概率密度函数,R 语言中的数学,概率论与数理统计 常见分布贝努力分布 二项分布 泊松分
33、布 指数分布 正态分布,R 语言中的数学,概率论与数理统计 正态分布正态分布是概率论与数理统计中最重要的一个分布.中心极限定理表明,一个变量如果是由大量微小的、独立的随机因素的叠加结果,那么这个变量已定是正态分布,因此许多随机变量可以用正态分布描述正态分布的定义:若随机变量X的概率密度函数为:其中 x 是负无穷到正无穷的任一实数,,为常数,且0,则称随机变量X服从参数,的正态分布,记为 XN(,2).,R 语言中的数学,概率论与数理统计 数学期望我们在研究随机变量的平均值的时候,不仅要考虑它的取值,还应该考虑到取值对应的概率,即:数学期望,记为 E(X)方差设 X 为随机变量,如果 E X-E
34、(X)2 存在,则称它为 X 的方差,即为 D(X),即:D(X)=E X E(X)2,R 语言中的数学,概率论与数理统计 回归分析 假设随机变量 Y 与变量 X 的关系非常密切,但不是确定的函数关系,变量之间的这种关系称为相关关系 回归分析就是研究相关关系的数理统计方法 线性回归 假设随机变量 Y 的值有两部分组成:一部分是由 X 决定的,它是 X 的函数,一部分是由众多其它因素决定的(随机或非随机)我们可以得到模型 Y=f(X)+,该模型称为一元线性回归,R 语言中的数学,概率论与数理统计 分位数分位数(Quantile),亦称分位点,是指将一个随机变量的概率分布范围分为几个等份的数值点 常用的有中位数、四分位数、百分位数等 四分位数四分位数(Quartile)是统计学中分位数的一种,即把所有数值由小到大排列并分成四等份,处于三个分割点位置的数值就是四分位数 极差 随机变量的最大值与最小值之间的差距 残差 在回归分析中,测定值与按回归方程预测的值之差,Questions&Answers,HP Vertica Distributed R,To be continued,