R语言学习总结x_第1页
R语言学习总结x_第2页
R语言学习总结x_第3页
R语言学习总结x_第4页
R语言学习总结x_第5页
已阅读5页,还剩9页未读 继续免费阅读

付费下载

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、实用汇总报告R语言学习汇总报告经过接近一个学期的学习,从对R语言的完全陌生,到现在对其有了一些粗浅的认识,其中经历 了遇到困难苦思冥想的艰辛,也有解决问题以后豁然开朗的畅快。在学习的过程中,以前掌握的数理 基础给我带来了不少便利,而认真地态度和踏实的性格也使我获益匪浅。在这个学期中,我学会了 R语言的基本操作和语法,以及针对具体的统计学问题相应的解决方 法。并按时完成老师布置的课后作业,以达到学以致用的目的,也加强了对 R语言操作的 熟练度。一、初识R软件R软件是一套完整的数据处理、计算和制图软件系统。其功能包括:据存储和处理,数组运算,完整连贯的统计分析工具,优秀的统计制图功能已及简便而强大

2、编程语言。接触R语言以后,我的第一感觉就是方便和强大。R语言中有非常多的函数和包,我们几乎不用自己去编一些复杂的算法,而往往只需要短短几行代码就能解决很复杂的问题,这给我们的使 用带来了极大地方便。于此同时,它又可操纵数据的输入输出,实习分支、循环,使用 者可以自定义 功能,这就意味着当找不到合适的函数或包来解决所遇的问题时,我们又可以自己编程去实现各种具 体功能,这也正是R语言的强大之处。二、学习心得在学习该书的过程中,我不仅加深了对统计学方法的理解,同时也掌握了R软件的编程方法和基本技巧,了解了各种函数的意义和用法,并能把两者结合起来,解决实际中的统计问题。1、R语言的基本语法及技巧R语言

3、不仅可以进行基础的数字、字符以及向量的运算,内置了许多与向量运算有尖的函数。而 且还提供了十分灵活的访问向量元素和子集的功能。R语言中经常出现数组,它可以看作是定义了维数(dim属性)的向量。因此数组同样可以进行各种运算,以及访问数组元素和子集。二 维数组(矩阵)是比较重要和特殊的一类数组,R可以对矩阵进行内积、外积、乘法、求解、奇异值分解及最小二乘拟合等运算,以及进行矩阵的合并、拉直等。apply()函数可以在对矩阵的一维或若干维进行某种计算,例如apply(A31,mean)表示对A按行求和。R语言允许将不同类型的元素放在一个集合中,这个集合叫做一个列表,列表元素总可以用“列 表名下标”的

4、格式引用。而“列表名下标”表示的是一个子列表,这是一个很容易混淆 的地方。R语言中非常重要的一种数据结构是data.frame (数据框),它通常是矩阵形式的数据,但每列可以是不同类型,数据框每列是一个变量,每行是一个观测,要注意的是每一列必 须有相同的长度。数据框元素可以使用下标或者下标向量引用。用一个非常简单的例子来说明向量、矩阵和数据框的简单运用。输入:A-matrix(c(1:12),2,6,byrow=T) #A 为一个 2 行 6 列、按行排列的矩阵 Xv- as.data.frame(A) # 把A转化成数据框形式的XX1:2,seq(1,5,2) # 输出 X 的第 1、2 行

5、和 1、3、5 列输出:V1 V3 V511351 /10实用汇总报告2 79 11输入:attach(X);Rv-V1/V5;R #调用数据框X,计算并输出V5的比值输出:1 0.2000000 0.6363636与此同时R语言中也提供了其它高级程序语言共有的分支、循环等程序控制结构。比如if/else语 句,for循环等。因此R语言也可以很容易的根据情况编写自己所需要的函数。例:编写一个R程序,输入一个整数n,如果n小于等于0,中止运算,并输出:“要求输入一 个正整数”。否则,如果n是偶数,则将n除2赋值给n。否则将3n+1赋给n。不断循环,直到 停止,并输出:“运算成功解:新建一个程序脚

6、本,名为ChaPter2.R ”,写入代码:fv-fu nctio n(n)if(nv=0) list(”要求输入一个正整数”)elserepeatif(n=1) break #n=1 时终止 else if(n/2=eger(n/2) n-rv2 #n为偶数时除 2else n hp_per_cylv.function(hp,cyl,)hp/cyl splat(hp_per_cyl)(mtcars1,)1 18.33333- 一 SPIat(hp_per_cyl)(mtcars)1 18.33333 18.33333 23.25000 18.33333 21.87500 17.5

7、00002/10实用汇总报告30.62500 15.50000 23.7500010 20.50000 20.50000 22.50000 22.50000 22.50000 25.6250026.0 28.75000 16.5000019 13.00000 16.25000 24.25000 18.75000 18.75000 30.6250021.0 16.50000 22.7500028 28.25000 33.00000 29.16667 41.87500 27.25000等价于: hp_per_cyl(mtcars$hp,mtcars$Cyl)splat函数的优点就是可以不用拆分字段

8、,可以一起输入作为参数。(2)与plyr函数合用: fvfunction(mpg,wt,.) data.frame(mw=mpgvt) ddply(mtcars,.(cyl),splat (f)2 each函数作用:把多个函数汇聚成一个函数,当使用这个函数时,将分别作用多个函数。它的作用 结果是 把一个函数变成一个新函数。不足:不能给作用的函数指定附加参数,只能使用默认参数。例: funvfunction(x) c(min=min( x),max=max(x),mea n=mea n( x) fun (1:10)等价于: f f(1:10)3 CJOlWiSe 函数colwise(.f Un

9、,.cols,)说明:-fun :要转化的函数。.cols是测试数据框的列是否应包含的判别函数或者是要包含的列的名称。catcolwise(.fun,.)与colwise功能类似,只是对离散型变量有效numcolwise(.fun,.)与colwise功能类似,只是对数值型变量有效作用:把作用于数据框行向量的函数(如mean, median等)转化为作用于数据框列向量的函数。于Plyr函数一起使用十分方便。作用结果生成一个新的函数。例: nm iss in g colwise( nm iss in g)(baseball) colwise( nm iss in g,.(sb,cs,so)(ba

10、seball) ddply(baseball,.(year),colwise( nm iss in g,.(sb,cs,so) nu mcolwise( nm iss in g)(baseball)等价于:colwise( nm iss in g,is .nu meric)(baseball) catcolwise( nmissi ng)(baseball)等价于:colwise(nmissi ng,is.discrete)(baseball)4 failwith 函数failwith(default=NULL, f, quiet=FALSE)作用:修正一个函数,使得当该函数出现错误时返回一

11、个设定的默认值,默认为空。作用结果生成一个新的函数。 fv-function(x) if (x=1) stop(”Error”) else 13/10实用汇总报告f(1)Error in f(1) : Error SafefV-failwith(,f) Safef(l)Error in f():ErrorNULL SafefV-failwith(12,f,quiet=TRUE) Safef(l)1125 SUifilladSe(函数SummariSe(.data,.)作用:对数据框做统计汇总,为设定的统计方法或函数 例:summarise(baseball,durati On=max(year

12、) min (year), nteams=le ngth(u nique(team) durati On n teams1 136132374245head(ddply(baseball,id,summarise,durati On=max(year) mi n(year), nteams=le ngth(u nique(team) id duratio n n teams234561 aaro nha01 22abernte02 172013adairjeOl 12adamsbaOladamsbo03adcocjoOl 16数据集变量操作1变量排序:arrange函数arran ge(df,

13、 .(var1), .(var2)作用:按照指定列排序。注意:使用arrange函数排完序后行名会丢失,需要用Cbind补回 例: arra nge(mtcars,cyl,disp) CarSVCbi nd(vehicle=row. names(mtcars),mtcars) arran ge(cars,cyl,disp)-先把行名作为一个新的列加到数据框再排序2更改变量名ren ame(x, replace, Warn_missi ng=TRUE)作用:通过名字修改变量名字,不是根据它的位置 例:4/10实用汇总报告,mpg,=,avgpg,5Cly = new)3取行或列的数据take(x

14、, along, in dices, drop = FALSE)作用:在X中,按照某个维度取数。参数说明:X为取数的源数据,可以是array或者dataframe0 along:维度。1表示行,2表示列,3 表示数组快等等indices:具体维度所对应的指。drop:是否整合例: take(mtcars,2,1)-取第一列 take(mtcars,1,1)-取第一行 数据集操作1数据集链接1)match_df match_df(x, y, On=NULL)作用:;为原始的需要提取的数据框,y为条件数据框。On指定用来连接的变量,默认为两个数据框 中所有变量,可以为多个。通过On后面的字段,到X

15、数据框取选取数据,相当于inner join,区别为:前者结果集是X的一个子集。inn er join包括两个数据框中所 有字段。例:基础数据 avc(”aTb“,”cTd”) b CV-C(1,2,3,4) t1 t2v-dataJrame(a=c(,aHc,e,),b=c(naan;,abn;,cdM) match_df(t1 ,t2,o n=c(Man;,bn)abC1 a aa 12) join“leftM , match= “all ”)join(x, y, by=NULL, type=作用:连接两个数据框参数说明:X,y为数据框。by二为要连接的字段,type为连接类型:left、

16、right、full。 match : all(所有匹配上的其他属性值都带上)、first (只带上匹配上的第一个属性值) joi n(t1 ,t2,by=,x2,type=,i nner*) joi n(t1 ,t23by=nx2n,type=nleftH) joi n(t1 Jt2,by=,x2n,type=,righr) tt1 tt2 joi n(tt1 ,tt2,by=,x2,type=,i nn er,match=,air,)x1 x2 y1 126 102 2 6203 2 6304 2 6405/10实用汇总报告 joi n(tt1 ,tt2,by=,x2,type=,i nn

17、 er,match=,firstn) x2 x1 y1 262 102.1 62 102.2 62 102.3 62 10注意:merge和join相似,但是效率上join更优。3) merge例 x y merge(x,y)根据相同字段默认内连接 merge(x,y,all=TRUE) merge(x,y,all.x=TRUE)- merge(x,y,all.y=TRUE)- merge(x,y,by=c(”a”,”x”) merge(x,y,by.x=”a”,byy=”y”)一根据相同字段全链接左连接右连接根据a和X两个字段连接根据X表中a数据统计1 *ply函数作用:拆分数据,应用函数,

18、再组合函数作用后的数据输入:array、dataframe list输出:array、dataframe list、discarededInPUtoutputArrayData frameLiStDiscardedAiTaVMraaplyadplyalplya-P1yData framedaplyddplydlplyd-piyLiStIaPIyIdPIyi%iyl-Plya*ply(.data, .marg in s, .f Unprogress = ”non e)参数说 .data是要进行处理的数组 明:.margins是用哪种方式去切割数据,取值为1,2,c(1,2) .fun是对切割的数

19、据指定一个函数进行处理progress决定是否显示及用哪种方式显示进度条 aaply(a,1,mea n,.progressnon e”) aaply(a,1,mea n,.progress=,textn)以文本形式展示进度条 aaply(a,1,mea n,.progress=,wi nH) 一wi ndows窗口展示进度条d*ply(.data,variables, .f Ugress = ”non eH)参数说明:.variables指定要按其分割的变量名称daply(data,.(age),.fu n=amea n)daply(data,.(sex),.fu n=amea n

20、)daply(data,.(age5sex),.fu n=amea n)ddply(data,.(sex),.fu n=amea n)dlply(data,.(sex),.fu n=amea n)l*ply(.data, .fu n,.,progress = non e)说明:列表类型的数据是最简单的数据,因为它已经被分割成一个个了 (也就是列表数据的一个6/10实用汇总报告个元素),所以这类函数没有参数用来描述是按什么进行切分的。llply(list,mea n)laply(list,mea n)ldply(list,mea n)m*ply(.data,.fu n=NUL L,.i nfor

21、m=FALSE,)说明:把参数放到array或dataframe中整体输入作为参数,然后fun后面的函数运用-data中的 相应数值作为参数分别作用,得到dataframe ( mdply) , array (maply)或者list (mlply )。与 splat 相似:m*ply(a_matrix, FUN)的作用和 a*ply(a_matrix、 1,SPIat(FUN)样。data=data.frame( n=c(10,100,50),mea n=c(5,5,10),sd=c(1,2,1) datan mean sd3 50 10 1 mlply(data,r norm) 2观测值出

22、现个数(1) count 函数:count(df,VarS=NULL, Wt_Var=NULL)参数:df是要处理的数据框。VarS是要进行分组统计的变量。Wt_Var为权重。注意:该函 数的功能类似于table例:基础数据:a=data.frame( names=c(”,”比七”,9丁,七丁小丁比七”),皿=c(1,1,1,1,2,2,2,2,2,2) COun t(a,vars=, names”)单变量分组 COu nt(a,vars= names,wt_var=nwtn)力卩上权重 COUn t(a,c(n namesVW)-双变量分组使用R软件可以方便直观的对数据进行描述性分析。如使用

23、均值、中位数、顺序统计量等度量位 置。用方差、标准差、变异系数等度量分散程度。以及用峰度系数、偏度系数度量分布形状。例如在 窗口中输入:XV-Seq(1,589,3)len gth(x);mea n( x);Var(x);sd(x);media n( x);100*sd(x)/mea n(x)1197# 长度1295# 均值1 29254.5# 方差1 171.0395# 标准差1295 #中位数1 57.97948#样本标准差n-le ngth(x);mtA3( n*( n+1)X( n-1)*( n-2)*( n-3)*sum(x- m)A4yA4- (3*( n-1 )A2K( n-2)

24、* (n-3)10#偏度系数1-1.2#峰度系数R软件可以检验样本是不是来自某种分布总体,以正态分布为例,我们可以通过ShaPirO.test() 函数提供W统计量和相应的P值,并通过P值的大小判断样本是否来自正态分7/10实用汇总报告布的总体。经验分布的KS检验方法的应用范围则更加广泛,不仅可以判断样本是否来自正态总 体,也能判断是否来自其它类型的分布总体。除此之外,R语言还有强大的画图功能,例如我们可以通过作直方图、茎叶图和总体分析来描述 数据的分布。R中的高水平作图函数有:pbt()、PairSo、coplot()、qqnOrm()、hist()等等。当高水平作图函数并不能完全达到作图的

25、指标时,需要低水平的作图函数予以补充。低水 平作图函数有:points()、lines() 、text() 、polygon()、legend()、title()和axis()等。需要注意的是低水平作图函数必须是在高水平作图函数所绘图形的基础之上增加新的图 形。hist()函数可以做出已知数据的直方图,Stem。函数可以作茎叶图,boxplot()函数可用作箱线图, qqline()和qqmorm()可以做出正态QQ图和相应的直线。R语言同时还能对两组数据 进行相尖性检 验,cor.test()函数提供了 PearSOn相尖性检验,SPearman秩检验和Kendall秩检验。其原假设为两组数

26、据不相尖,通过P值的大小来判断是否拒绝原假设。我们还能用StarSO函数作出星图,来表示多元数据,以上用法都非常简单易用,这里就不再赘述。3、R语言在统计推断中的应用首先,R语言可以用来进行参数估计。统计学中我们应用矩估计和极大似然估计来进行点估计,矩估计是通过解正规方程组得到参数估 计的值。极大似然估计通过解极大似然函数的极值点得到参数估计的值。在R中我们可以使用NeWtOn迭代法求解正规方程组,获得矩估计。用OPtimiZe()函数求解极大似然函数,获得最大似然估计。由此可见,R语言能够很方便的解决参数点估计问题。点估计给出未知参数的近似值以后,并不能知道这种估计的精确性如何,可信程度如何

27、,为了解 决这些问题,就需要用到区间估计,在学习用R语言解决区间估计问题的过程中,我最大的思想到就是R软件中内置的一些函数极大地方便了我们处理具体问题。比如t.test()函数。对单个正态总体,向量X包含了来自该总体的一个样本,我们可以直接用t.test(x)指令得到均值U的点估计和区间估计。对于两个正态总体,向量y包含了来自第二个总体的一个样本我们可以用t.test(x,y)来得到均值差u1-u2的点估计和区间估计,其中当两个总体方差相同时, 只需要加上var.equakT (缺省值为F,即默认两个总体的方差是不同的)。同时t.test()函数不仅可以进行双侧置信区间估计,也能进行单侧置信区

28、间估计,只需要在括号内加上 al= ”或者al= ” gn。当数据不服从正态分布是,可以利用中心极限定理,取较大的样本量,构造近似服从正态分布的统计量进行估计。其次,R语言可以用来进行假设检验。假设检验也是统计推断中的一个重要的内容,在统计学中,我们用搜索到的数据对某个事先作出 的统计假设按照某种设计好的方法进行检验,来判断此假设是否正确。也就是说为了检验一个假设是 否成立,先假定它是成立的,看看由此会导致什么结果。如果导致一个不合理的 现象出现,就认为原 假设不正确,如果没有导出不合理的现象,则不能拒绝原假设。R软件给出了参数假设检验的方法。以正态总体为例, t.test()函数也可以用来进

29、行单个 或者两个正态总体的均值的假设检验。进行单边检验时可以加入指令alternative(备择假设),缺省时表示双边检验,less表示备择假设为uu6, greater则相反,用conf.level指 定置信水 -X|Z. oXv-c(78.1,72.4,76.2,74.3,77.4,78.4,76.0,75.5,76.7,77.3)Yv-c(79.1,81.0,77.3,79.1,80.0,79.1,79.1,77.3,80.2,82.1) t.test(X,Y,var.equal=T,al= n I ”)输出:Two SamPle t-testdata: X and Yt = -4.29

30、57, df = 18, P-Value = 0.0002176alter native hypothesis: true differe nee in mea ns is less tha n 095 PerCent Confidence interval:8/10实用汇总报告-Inf-1.908255SamPle estimates:mean Of X mean Of y76.23 79.43结果中我们不仅能得到X和丫的均值的点估计76.23和79.43、左侧区间估计、同时也能通过P 值的大小判断是否接受原假设该例中P0.05,认为拒绝原假设,即认为两总体方差不同。与均值假设检验相类似。R

31、语言中还可以用var.test()函数进行正态总体的方差假设检验。而且R语言不仅能就正 态总体 进行均值和方差检验,也能对其他总体分布进行检验。例如用bin om.test()进行二项分布的检验和估计。习题中检验铁剂和饮食两种方法治疗后患者病情表现有无差异:XV-C(113,120,138,120,100,118,138,123)yv-c(138,116,125,136,110,132,130,110)bi no m.test(sum(xy),8)EXaCt bi no mial testdata: SUm(X V y) and 8nu mber of SUCCeSSeS = 4, nu mb

32、er of trials = 8, P-ValUe = 1alter native hypothesis: true Probability of SUCCeSS is not equal to 0.595 PerCe nt con fide nee in terval:0.1570128 0.8429872SamPle estimates:Probability of SUCCeSS 0.5由结果我们可以判断两种诊断方法无显著差异(其中用到的统计学原理见下面的符号检验)。参数假设检验假定了总体分布的具体形式,但实际问题中我们往往不知道总体的分布,很难对总 体的分布做出假定,所有要尽量从样本本身获得所需要的信息,即非参数检验方法。R语言中有很多种非参数的检验方法,这里仅介绍几个较为重要的方法。PearSOn拟合优度的卡方检验:首先假设随机变量有某种分布,将数轴分成m个区间,然后用样本落在每个区间内的个数和

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论