统计建模与R软件 第二讲课件.ppt
《统计建模与R软件 第二讲课件.ppt》由会员分享,可在线阅读,更多相关《统计建模与R软件 第二讲课件.ppt(150页珍藏版)》请在三一办公上搜索。
1、第2章 R软件的使用,郭广报 统计计算,讲解大纲,2.1R软件简介2.2数字、字符与向量2.3对象和它的模式与属性2.4因子2.5多维数组和矩阵2.6列表与数据框2.7读写数据文件2.8控制流2.9编写自己的函数2.10图形功能2.11程序打包,2.1R软件简介,R软件是一个开放的统计编程环境,是一种语言,是S语言的一种实现;R软件是完全免费的,http:/www.r-project.org;,2.1.1R软件的下载与安装,http:/cran.r-project.org下载与安装Demo,2.1.2初识R软件,例2.1某学校在体检时测得12名女中学生体重X1(kg)和胸围X2(cm)资料如表
2、2.1所示,试计算体重与胸围的均值与标准差。表2.1 学生体检资料,2.1.2初识R软件(续),解:# 输入体重X1-c(35, 40, 40, 42, 37, 45, 43, 37, 44, 42, 41, 39)# 计算体重的均值和标准差mu1-mean(X1); sigma1-sd(X1) # 输入胸围X2-c(60, 74, 64, 71, 72, 68, 78, 66, 70, 65, 73, 75)# 计算胸围的均值和标准差mu2-mean(X2); sigma2-sd(X2);,2.1.2初识R软件(续),例2.2绘出例2.1中12名学生体重与胸围的散点图和体重的直方图。解:Pl
3、ot(X1,X2)hist(X1) # 绘出体重的直方图hist(X1, probability = TRUE,main = paste(Histogram of , weight), xlab = weight),2.1.2初识R软件(续),例2.3设有文本文件exam0203.txt,其内容与格式参见文件,其中第一行相当于表头,说明变量的属性,即说明各列的内容,如第一列是姓名,第二列是性别,第三列是年龄,第四列是身高(cm),第五列是体重(lb),从第二行到最后一行是变量的内容,试从该文件中读出数据,并对身高和体重作回归分析。,2.1.2初识R软件(续),解:rt-read.table(e
4、xam0203.txt, head=TRUE); rtlm.sol-lm(WeightHeight, data=rt)summary(lm.sol),2.1.3R软件主窗口与快捷方式,2.1.3R软件主窗口与快捷方式,其它菜单Demo,2.2数字、字符与向量,1、向量的赋值R软件中最简单的运算是向量赋值,有三种形式:xx,2.2.2向量的运算(续),2、向量的运算对于向量可以作加(+)、减(-)、乘(*)、除(/)和乘方()运算,其含义是对向量的每一个元素进行运算,如:x-c(-1,0,2);y-c(3,8,2)v-2*x+y+1;vx*yx/yx2yx5%/%3#整数除法5%3#求余数,2.
5、2.2向量的运算(续),exp(x)sqrt(y)3、与向量运算有关的函数(1)求向量的最小值、最大值和范围的函数x-c(10,6,4,7,8)min(x)max(x)range(x)which.min(x)which.max(x),2.2.2向量的运算(续),(2)求和函数、求乘积函数#求和sum(x)#求分量连乘积prod(x)#求向量长度length(x),2.2.2向量的运算(续),(3)中位数、均值、方差、标准差和顺序统计量#求中位数median(x)#求均值mean(x)#求方差var(x)#求标准差sd(x)#排序,得到和x长度相同的sort(x),2.2.2产生有规律的序列,1
6、.等差数列a:b2.316:64:7.62.等间隔函数seq()函数是更一般的函数它产生等距间隔的数列其基本形式为:seq(from=value1, to= value2, by=value3)seq(-5, 5, by=.2) - s1对于seq函数还有另一种使用方式 seq(length=value2, from=value1, by=value3) s2 -seq(length=51, from=-5, by=.2),2.2.2产生有规律的序列,3.重复函数rep()是重复函数它可以将某一向量重复若干次再放入新的变量中如 : s -rep(x, times=3)#即将变量重复3倍放在变量
7、s中如x -c(1, 4, 6.25); xs -rep(x, times=3); s,2.2.3逻辑向量,与其它语言一样R软件允许使用逻辑操作当逻辑运算为真返值为TRUE,当逻辑运算为假返值为FALSE.例如x 3逻辑运算符有, =, = (表示TRUE等于)和TRUE!=(表TRUE示不等TRUE)all(c(1, 2, 3, 4, 5, 6, 7) 3) any(c(1, 2, 3, 4, 5, 6, 7) 3),2.2.4 缺失数据,用NA表示某处的数据缺省缺失如z -c(1:3, NA); z函数is.na()是检测缺失数据的函数,如果返回值为真(TRUE),则说明此数据是确实数据,
8、如果返回值为假(FALSE),则此数据不是缺失数据,如:ind-is.na(z);ind#将缺失数据改为0zis.na(z)-0is.nan(),is.finite(),2.2.5 字符型向量,向量元素可以字符串值,例如: y-c(er,sdf,dim,haha,good)可用paste函数把它的自变量连成一个字符串,中间用空格分开,例如:paste(My, Job)labs-paste(X,1:6,sep=)paste(result.,1:4,sep=)paste(1:10) #same as as.character(1:10)paste(Today is ,date()paste(c(a
9、,b),collapse=.),2.2.6 复数向量,R 支持复数运算,复数常量只要用通常的格式,如3.5+2.1i,complex模式的向量为复数元素的向量,可以用complex()函数生成复数向量,如x z plot(z) lines(z)对于复数运算,Re()是计算复数的实部,Im()是计算复数的虚部,Mod()是计算复数的模,Arg()是计算复数的幅角。,2.2.7向量下标运算,R软件提供了十分灵活的访问向量元素和向量子集的功能。向量中的某一个元素可以用xi的格式访问,其中x是一个向量名,或一个取向量值的表达式,如x-c(1,4,7)x2(c(1,3,5)+5)2可以单独改变一个或多个
10、元素的值,如:x2-125xc(1,3)-c(144,169);x,2.2.7向量下标运算,1、逻辑向量v为和x等长的逻辑向量,xv表示取出所有v为真值得元素,如:x-c(1,4,7)x5xx5可以将向量中缺失数据赋值为0z-c(-1,1:3,NA)zis.na(z)-0,#or(z+1)is.na(z)x# others,2.2.7向量下表运算,2、下标的正整数运算v为一个向量,下标取值在1到length(v)之间,取值允许重复,如:v-10:20vc(1,3,5,9)v1:5vc(1,2,3,2,1)# other,2.2.7向量下表运算,3、下标的负整数运算注:表示扣除相应的元素v为一个
11、向量,下标取值在- length(v) ,到-1之间v-c(1:5)4、取字符型值得下标向量在定义向量时可以给元素加上名字,如ages-c(Li=33,Zhang=29,Liu=18)#元素可以通过下标和名字来进行访问agesZhang#元素的名字也可以后加fruit-c(5,10,2,20)names(fruit)-c(orange,banana,apple,peach); fruit,2.3对象和它的模式与属性,R是一种基于对象的语言,R的对象包括了若干元素作为其数据,另外,还可以有一些特殊数据称为属性(attribute),并规定了一些特定的操作(如打印、绘图);R对象分为:单纯对象、复
12、合对象单纯对象:所有元素都是一种基本类型,复合对象的元素可以是不同类型的对象;,2.3.1固有属性:mode和length,R对象都有两个基本的属性: mode(类型)属性和length(长度)属性,比如向量的类型为logical(逻辑型)、numeric(数值型)、 complex(复数型)、character(字符型),比如:mode(c(1,3, 5)5)R对象有一种特别的null(空值型)型,只有一个特殊的NULL值为这种类型,表示没有值(不同于NA,NA是一种特殊值,而NULL根本没有对象值),2.3.1固有属性:mode和length,要判断某对象是否某类型,有许多个类似于is.n
13、umeric()的函数可以完成 is.numeric (x)用来检验对象x是否为数值型,它返回一个逻辑型结果is.character()可以检验对象是否为字符型,等等如:z - 0:9is.numeric (z)is.character(z)长度属性表示R对象元素的个数,比如length(2:4)length(z),2.3.1固有属性:mode和length,R可以强制进行类型转换,例如digits-as. character(z);digitsd-as.numeric(digits); d,2.3.2 修改对象的长度,对象可以取0长度或正整数为长度 R允许对超出对象长度的下标赋值,这时对象长
14、度自动伸长以包括此下标,未赋值的元素取缺失值(NA),例如:x-numeric()x3-17;x要增加对象的长度只需作赋值运算就可以了,如x-1:3x-1:4要缩短对象的长度又怎么办呢?只要给它赋一个长度短的子集就可以x-xl:2;xalpha-1:10alpha-alpha2*1:5alpha length(alpha); alpha,2.3.3 attributes()和attr()函数,attributes(object)返回对象object的各特殊属性组成的列表,不包括固有属性mode和length.例如:x-c(apple=2.5,orange=2.1);xattributes(x)
15、可以用attr(object,name)的形式存取对象object的名为name的属性,例如,attr (x, names) 也可以把attr()函数写作赋值的左边以改变属性值或定义新的属性,例如,attr(x, names)-c(applel, grapes); xattr(x,type)-fruit; xattr(x,type),2.3.4对象的class属性,在R中可以用特殊的class属性来支持面向对象的编程风格,对象的class属性用来区分对象的类,可以写出通用函数根据对象类的不同进行不同的操作,比如,print()函数对于向量和矩阵的显示方法就不同,plot()函数对不同类的自变量
16、作不同的图形。为了暂时去掉一个有类的对象的class属性,可以使用unclass (object)函数。,2.4因子,统计中的变量有几种重要类别:区间变量、名义变量和有序变量,区间变量取连续的数值,可以进行求和、平均值等运算,名义变量和有序变量取离散值;可以用数值代表,也可以是字符型值,其具体数值没有加减乘除的意义,不能用来计算,而只能用来分类或计数,名义变量如性别、省份、职业,有序变量如班级、名次。,2.4.1 factor()函数,因为离散变量有各种不同表示方法,在R软件中,为了统一起见,使用因子(factor)来表示这种类型的变量,例如,知道5位学生的性别,用因子变量表示sex-c(M,
17、F,M,M, F)sexf -factor(sex); sexf可用函数levels()得到因子的水平,如sex.level-levels(sexf);sex.level对于因子向量可用函数table()来统计各类数据的频数sex.tab-table(sexf);sex.tab,2.4.2tapply()函数,tapply()函数形式tapply(X, INDEX, FUN = NULL, ., simplify = TRUE) 其中X是一对象,通常是一向量,INDEX是与X有同样长度的因子,FUN是需要计算的函数,simplify 是逻辑变量,取为TRUE(缺省)或FALSEheight-c
18、(174,165,180,171,160) tapply(height,sex,mean),2.4.3gl()函数,gl(n, k, length = n*k, labels = 1:n, ordered = FALSE)其中n为水平数,k为重复的次数, length为结果的长度, labels是一个n维向量,表示因子水平,ordered是逻辑变量,表示是否为有序因子,缺省值为FALSEgl(3,5)gl(3,1,15),2.5 多维数组和矩阵,2.5.1 生成数组或矩阵数组(array)可以看成是带多个下标的类型相同的元素的集合,常用的是数值型的数组如矩阵,也可以有其它类型(如字符型、逻辑型
19、、复数型)R可以很容易地生成和处理数组,特别是矩阵(二维数组)数组有一个特征属性叫做维数向量(dim属性),维数向量是一个元素取正整数值的向量,其长度是数组的维数,比如维数向量有两个元素时数组为二维数组(矩阵)维数向量的每一个元素指定了该下标的上界,下标的下界总为1,2.5.1 生成数组或矩阵,1将向量定义成数组向量只有定义了维数向量(dim属性)后才能被看作是数组,比如:z-1:12dim(z)-c(3,4)注意:矩阵的元素是按列存放的,也可以把向量定义为一维数组,例如:dim (z)-12,2.5.1 生成数组或矩阵,2用array()函数构造多维数组 R软件可以用array()函数直接构
20、造数组,其构造形式为array(data=NA, dim=length(data), dimnames=NULL)其中data是一个向量数据,dim是数组各维的长度,缺省时为原向量的长度dimnames是数组维的名字,缺省时为空,如 x-array(1:20,dim=c(4,5)产生一个4x5的二维数组(矩阵),2.5.1 生成数组或矩阵,另一种方式为z-array(0,dim=c(3,4,2)它定义了一个3*4*2的三维数组,其元素均为0这种方法常用来对数组作初始化3用matrix()函数构造矩阵 函数matrix()是构造矩阵(二维数组)的函数,其构造形式为 matrix(data=NA,
21、 nrow=l, ncol=l,byrow=FALSE, dimnames=NULL),2.5.1 生成数组或矩阵,其中data是一个向量数据,nrow是矩阵的行数,ncol是矩阵的列数,当byrow=TRUE时,生成矩阵的数据按行放置,缺省时相当于byrow=FALSE,数据按列放置 dimnames是数组维的名字,缺省时为空,如构造一个3x5阶的矩阵A-matrix(1:15,nrow=3,ncol=5,byrow=TRUE),2.5.2 数组下标,数组与向量一样,可以对数组中的某些元素进行访问,或进行运算。1数组下标 要访问数组的某个元素,只要写出数组名和方括号内的用逗号分开的下标即可,
22、如a2,1,2如 a-1:24 dim(a)-c(2,3,4) a2,1,2,2.5.2 数组下标,更进一步还可以在每一个下标位置写一个下标向量,表示这一维取出所有指定下标的元素,如a1,2:3,2:3取出所有第一下标为1,第二下标为2或3,第三下标为2或3的元素,如a1,2:3,2:3注意,因为第一维只有一个下标,所以退化了,得到的是一个维数向量为22的数组,另外,如果略写某一维的下标,则表示该维全选,例如,a1,2.5.2 数组下标,a,或a都表示整个数组,比如a-0可以在不改变数组维数的条件下把元素都赋成0还有一种特殊下标办法是对于数组只用一个下标向量(是向量,不是数组),比如a3:10
23、 这时忽略数组的维数信息把表达式看作是对数组的数据向量取子集,2.5.2 数组下标,2不规则的数组下标在R语言中,甚至可以把数组中的任意位置的元素作为数组访问,其方法是用一个二维数组作为数组的下标,二维数组的每一行是一个元素的下标,列数为数组的维数,例如,要把上面的形状为2x3x4的数组a的第1,1,1,2,2,3,1,3,4,2,1,4号共四个元素作为一个整体访问,先定义一个包含这些下标作为行的二维数组:b-matrix(c(1,1,1,2,2,3,1,3,4,2,1,4),ncol=3,byrow=T)ab注意取出的是一个向量,我们还可以对这几个元素赋值,如:ab-c(101,102,10
24、3,104)或ab-0,2.5.3 数组的四则运算,可以对数组之间进行四则运算(+、一、*、),这时进行的是数组对应元素的四则运算,参加运算的数组一般应该是相同形状的(dim属性完全相同)例如:A-matrix(1:6,nrow=2,byrow=T);AB - matrix(1:6, nrow=2) ; BC - matrix (c (1, 2, 2 ,3,3,4) , nrow=2) ; CD - 2*C+A/B; D,2.5.3 数组的四则运算,形状不一致的向量(或数组)也可以进行四则运算,一般的规则是将向量(或数组)中的数据与对应向量(或数组)中的数据进行运算,把短向量(或数组)的数据循
25、环使用,从而可以与长向量(或数组)数据进行匹配,并尽可能保留共同的数组属性,例如,x1-c(100,200)x2-1:6x1+x2x3-matrix(1:6, nrow=3)x1+x3,2.5.4 矩阵的运算,1转置运算对于矩阵A,函数t(A)表示矩阵4的转置,即AT.如A-matrix(1:6,nrow=2); A2求方阵的行列式函数det()是求方阵行列式的值,如det(matrix(1:4, ncol=2),2.5.4 矩阵的运算,3向量的内积对于n维向量x,可以看成n*l阶矩阵或1*n阶矩阵,若x与y是相同维数的向量,则x%*%y表示x与y作内积例如,x-1:5;y-2*1:5x%*%
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 统计建模与R软件 第二讲课件 统计 建模 软件 第二 讲课
链接地址:https://www.31ppt.com/p-1455420.html