ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:41.67KB ,
资源ID:5127077      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/5127077.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(R语言学习总结.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

R语言学习总结.docx

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

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

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

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

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

6、n)if(n=0) list(要求输入一个正整数)elserepeatif(n=1) break #n=1时终止 else if(n/2=as.integer(n/2) n-n/2 #n为偶数时除2 else n hp_per_cyl splat(hp_per_cyl)(mtcars1,)1 18.33333 splat(hp_per_cyl)(mtcars) 1 18.33333 18.33333 23.25000 18.33333 21.87500 17.50000 30.62500 15.50000 23.7500010 20.50000 20.50000 22.50000 22.500

7、00 22.50000 25.62500 26.87500 28.75000 16.5000019 13.00000 16.25000 24.25000 18.75000 18.75000 30.62500 21.87500 16.50000 22.7500028 28.25000 33.00000 29.16667 41.87500 27.25000等价于: hp_per_cyl(mtcars$hp,mtcars$cyl)splat函数的优点就是可以不用拆分字段,可以一起输入作为参数。(2)与plyr函数合用: f ddply(mtcars,.(cyl),splat(f)2 each函数作用

8、:把多个函数汇聚成一个函数,当使用这个函数时,将分别作用多个函数。它的作用结果是把一个函数变成一个新函数。不足:不能给作用的函数指定附加参数,只能使用默认参数。例: fun fun(1:10)等价于: f f(1:10)3 colwise函数colwise(.fun,.cols,.)说明:.fun:要转化的函数。.cols是测试数据框的列是否应包含的判别函数或者是要包含的列的名称。catcolwise(.fun,.) 与colwise功能类似,只是对离散型变量有效numcolwise(.fun,.) 与colwise功能类似,只是对数值型变量有效作用:把作用于数据框行向量的函数(如mean,m

9、edian等)转化为作用于数据框列向量的函数。于plyr函数一起使用十分方便。作用结果生成一个新的函数。例: nmissing colwise(nmissing)(baseball) colwise(nmissing,.(sb,cs,so)(baseball) ddply(baseball,.(year),colwise(nmissing,.(sb,cs,so) numcolwise(nmissing)(baseball)等价于:colwise(nmissing,is.numeric)(baseball) catcolwise(nmissing)(baseball)等价于:colwise(nm

10、issing,is.discrete)(baseball)4 failwith函数failwith(default=NULL, f, quiet=FALSE) 作用:修正一个函数,使得当该函数出现错误时返回一个设定的默认值,默认为空。作用结果生成一个新的函数。 f f(1)Error in f(1) : Error safef safef(1)Error in f(.) : ErrorNULL safef safef(1)1 125 summarise()函数summarise(.data, .) 作用:对数据框做统计汇总,为设定的统计方法或函数 例:summarise(baseball,du

11、ration=max(year)-min(year),nteams=length(unique(team) duration nteams1 136 132head(ddply(baseball,id,summarise,duration=max(year)-min(year),nteams=length(unique(team) id duration nteams1 aaronha01 22 32 abernte02 17 73 adairje01 12 44 adamsba01 20 25 adamsbo03 13 46 adcocjo01 16 5数据集变量操作1 变量排序:arran

12、ge函数arrange(df, .(var1), .(var2)作用:按照指定列排序。注意:使用arrange函数排完序后行名会丢失,需要用cbind补回。例: arrange(mtcars,cyl,disp) cars arrange(cars,cyl,disp)-先把行名作为一个新的列加到数据框再排序2 更改变量名rename(x, replace, warn_missing=TRUE) 作用:通过名字修改变量名字,不是根据它的位置。例:head(rename(tmt,replace=c(mpg=avgpg,”cly”=”new”)3 取行或列的数据take(x, along, indic

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

14、相当于inner join,区别为:前者结果集是x的一个子集。inner join包括两个数据框中所有字段。例:基础数据 a b c t1 t2 match_df(t1,t2,on=c(a,b) a b c1 a aa 12)joinjoin(x, y, by=NULL, type=“left”, match=“all”) 作用:连接两个数据框 参数说明:x,y为数据框。by=为要连接的字段,type为连接类型:left、right、full。match:all(所有匹配上的其他属性值都带上)、first(只带上匹配上的第一个属性值) join(t1,t2,by=x2,type=inner)

15、join(t1,t2,by=x2,type=left) join(t1,t2,by=x2,type=right) tt1 tt2 join(tt1,tt2,by=x2,type=inner,match=all) x1 x2 y11 2 6 102 2 6 203 2 6 304 2 6 40 join(tt1,tt2,by=x2,type=inner,match=first) x2 x1 y12 6 2 102.1 6 2 102.2 6 2 102.3 6 2 10注意:merge和join相似,但是效率上join更优。3)merge例: x y merge(x,y) -根据相同字段默认内连

16、接 merge(x,y,all=TRUE) -根据相同字段全链接 merge(x,y,all.x=TRUE) -左连接 merge(x,y,all.y=TRUE) -右连接 merge(x,y,by=c(a,x) -根据a和x两个字段连接 merge(x,y,by.x=a,by.y=y) -根据x表中a和y表中y连接数据统计1 *ply函数作用:拆分数据,应用函数,再组合函数作用后的数据输入:array、dataframe、list输出:array、dataframe、list、discarededa*ply(.data, .margins, .fun, ., .progress = none

17、)参数说明:.data是要进行处理的数组.margins是用哪种方式去切割数据,取值为1,2,c(1,2).fun是对切割的数据指定一个函数进行处理.progress决定是否显示及用哪种方式显示进度条 aaply(a,1,mean,.progress=none) aaply(a,1,mean,.progress=text) -以文本形式展示进度条 aaply(a,1,mean,.progress=win) -windows窗口展示进度条d*ply(.data, .variables, .fun, ., .progress = none)参数说明:.variables指定要按其分割的变量名称da

18、ply(data,.(age),.fun=amean)daply(data,.(sex),.fun=amean)daply(data,.(age,sex),.fun=amean)ddply(data,.(sex),.fun=amean)dlply(data,.(sex),.fun=amean)l*ply(.data, .fun, ., .progress = none)说明:列表类型的数据是最简单的数据,因为它已经被分割成一个个了(也就是列表数据的一个个元素),所以这类函数没有参数用来描述是按什么进行切分的。llply(list,mean)laply(list,mean)ldply(list,

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

20、 5 23 50 10 1 mlply(data,rnorm)2 观测值出现个数(1)count函数:count(df,vars=NULL, wt_var=NULL) 参数:df是要处理的数据框。vars是要进行分组统计的变量。wt_var为权重。 注意:该函数的功能类似于table例:基础数据:a=data.frame(names=c(a,b,c,d,a,a,a,b,b,c),wt=c(1,1,1,1,2,2,2,2,2,2) count(a,vars=names) -单变量分组 count(a,vars=names,wt_var=wt) -加上权重 count(a,c(names,wt)

21、-双变量分组使用R软件可以方便直观的对数据进行描述性分析。如使用均值、中位数、顺序统计量等度量位置。用方差、标准差、变异系数等度量分散程度。以及用峰度系数、偏度系数度量分布形状。例如在窗口中输入:x-seq(1,589,3)length(x);mean(x);var(x);sd(x);median(x);100*sd(x)/mean(x)1 197 #长度1 295 #均值1 29254.5 #方差1 171.0395 #标准差1 295 #中位数1 57.97948 #样本标准差n-length(x);m-mean(x);s-sd(x)n/(n-1)*(n-2)*sum(x-m)3)/s3;

22、(n*(n+1)/(n-1)*(n-2)*(n-3)*sum(x-m)4)/s4- (3*(n-1)2)/(n-2)*(n-3)1 0 #偏度系数1 -1.2 #峰度系数R软件可以检验样本是不是来自某种分布总体,以正态分布为例,我们可以通过shapiro.test()函数提供W统计量和相应的p值,并通过p值的大小判断样本是否来自正态分布的总体。经验分布的K-S检验方法的应用范围则更加广泛,不仅可以判断样本是否来自正态总体,也能判断是否来自其它类型的分布总体。除此之外,R语言还有强大的画图功能,例如我们可以通过作直方图、茎叶图和总体分析来描述数据的分布。R中的高水平作图函数有:plot()、pa

23、irs()、coplot()、qqnorm()、hist()等等。当高水平作图函数并不能完全达到作图的指标时,需要低水平的作图函数予以补充。低水平作图函数有:points()、lines()、text()、polygon()、legend()、title()和axis()等。需要注意的是低水平作图函数必须是在高水平作图函数所绘图形的基础之上增加新的图形。hist()函数可以做出已知数据的直方图,stem()函数可以作茎叶图,boxplot()函数可用作箱线图,qqline()和qqmorm()可以做出正态QQ图和相应的直线。R语言同时还能对两组数据进行相关性检验,cor.test()函数提供了

24、Pearson相关性检验,Spearman秩检验和Kendall秩检验。其原假设为两组数据不相关,通过p值的大小来判断是否拒绝原假设。我们还能用stars()函数作出星图,来表示多元数据,以上用法都非常简单易用,这里就不再赘述。3、R语言在统计推断中的应用首先,R语言可以用来进行参数估计。统计学中我们应用矩估计和极大似然估计来进行点估计,矩估计是通过解正规方程组得到参数估计的值。极大似然估计通过解极大似然函数的极值点得到参数估计的值。在R中我们可以使用Newton迭代法求解正规方程组,获得矩估计。用optimize()函数求解极大似然函数,获得最大似然估计。由此可见,R语言能够很方便的解决参数

25、点估计问题。点估计给出未知参数的近似值以后,并不能知道这种估计的精确性如何,可信程度如何,为了解决这些问题,就需要用到区间估计,在学习用R语言解决区间估计问题的过程中,我最大的思想到就是R软件中内置的一些函数极大地方便了我们处理具体问题。比如t.test()函数。对单个正态总体,向量x包含了来自该总体的一个样本,我们可以直接用t.test(x)指令得到均值u的点估计和区间估计。对于两个正态总体,向量y包含了来自第二个总体的一个样本,我们可以用t.test(x,y)来得到均值差u1-u2的点估计和区间估计,其中当两个总体方差相同时,只需要加上var.equal=T(缺省值为F,即默认两个总体的方

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

27、出了参数假设检验的方法。以正态总体为例,t.test()函数也可以用来进行单个或者两个正态总体的均值的假设检验。进行单边检验时可以加入指令alternative(备择假设),缺省时表示双边检验,less表示备择假设为uu0,greater则相反,用conf.level指定置信水平。X-c(78.1,72.4,76.2,74.3,77.4,78.4,76.0,75.5,76.7,77.3)Y-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=”l”)输出:Two Sample t-testdata: X and Yt = -4.2957, df = 18, p-value = 0.0002176alternative hypothesis: true difference in means is less than 095 percent confidence interval:-In

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1