R语言学习总结.docx

上传人:b****6 文档编号:8055166 上传时间:2023-01-28 格式:DOCX 页数:13 大小:24.26KB
下载 相关 举报
R语言学习总结.docx_第1页
第1页 / 共13页
R语言学习总结.docx_第2页
第2页 / 共13页
R语言学习总结.docx_第3页
第3页 / 共13页
R语言学习总结.docx_第4页
第4页 / 共13页
R语言学习总结.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

R语言学习总结.docx

《R语言学习总结.docx》由会员分享,可在线阅读,更多相关《R语言学习总结.docx(13页珍藏版)》请在冰豆网上搜索。

R语言学习总结.docx

R语言学习总结

R语言学习总结

通过接近一个学期的学习,从对R语言的完全陌生,到此刻对其有了一些粗浅的熟悉,其中经历了碰着困难苦思冥想的艰辛,也有解决问题以后豁然爽朗的畅快。

在学习的进程中,以前把握的数理基础给我带来了很多便利,而认真地态度和踏实的性格也使我获益匪浅。

在那个学期中,我学会了R语言的大体操作和语法,和针对具体的统计学问题相应的解决方式。

并按时完成教师布置的课后作业,以达到学以致用的目的,也增强了对R语言操作的熟练度。

一、初识R软件

R软件是一套完整的数据处置、计算和制图软件系统。

其功能包括:

据存储和处置,数组运算,完整连贯的统计分析工具,优秀的统计制图功能已及简便而壮大编程语言。

接触R语言以后,我的第一感觉确实是方便和壮大。

R语言中有超级多的函数和包,咱们几乎不用自己去编一些复杂的算法,而往往只需要短短几行代码就能够够解决很复杂的问题,这给咱们的利用带来了极大地址便;于此同时,它又可操纵数据的输入输出,实习分支、循环,利用者能够自概念功能,这就意味着当找不到适合的函数或包来解决所遇的问题时,咱们又能够自己编程去实现各类具体功能,这也正是R语言的壮大的地址。

二、学习心得

在学习该书的进程中,我不仅加深了对统计学方式的明白得,同时也把握了R软件的编程方式和大体技术,了解了各类函数的意义和用法,并能把二者结合起来,解决实际中的统计问题。

一、R语言的大体语法及技术

R语言不仅能够进行基础的数字、字符和向量的运算,内置了许多与向量运算有关的函数。

而且还提供了十分灵活的访问向量元素和子集的功能。

R语言中常常显现数组,它能够看做是概念了维数(dim属性)的向量。

因此数组一样能够进行各类运算,和访问数组元素和子集。

二维数组(矩阵)是比较重要和特殊的一类数组,R能够对矩阵进行内积、外积、乘法、求解、奇异值分解及最小二乘拟合等运算,和进行矩阵的归并、拉直等。

apply()函数能够在对矩阵的一维或假设干维进行某种计算,例如apply(A,1,mean)表示对A按行求和。

R语言许诺将不同类型的元素放在一个集合中,那个集合叫做一个列表,列表元素总能够用“列表名[[下标]]”的格式引用。

而“列表名[下标]”表示的是一个子列表,这是一个很容易混淆的地址。

R语言中超级重要的一种数据结构是(数据框),它一样是矩阵形式的数据,但每列能够是不同类型,数据框每列是一个变量,每行是一个观测,要注意的是每一列必需有相同的长度。

数据框元素能够利用下标或下标向量引用。

用一个超级简单的例子来讲明向量、矩阵和数据框的简单运用。

输入:

A<-matrix(c(1:

12),2,6,byrow=T)#A为一个2行6列,按行排列的矩阵X<#把A转化成数据框形式的X

X[1:

2,seq(1,5,2)]#输出X的第一、2行和一、3、5列

输出:

V1V3V5

1135

27911

输入:

attach(X);R<-V1/V5;R#挪用数据框X,计算并输出V1和V5的比值

输出:

[1]

与此同时R语言中也提供了其它高级程序语言共有的分支、循环等程序操纵结构。

比如if/else语句,for循环等。

因此R语言也能够很容易的依照情形编写自己所需要的函数。

例:

编写一个R程序,输入一个整数n,假设是n小于等于0,中止运算,并输出:

“要求输入一个正整数”;不然,假设是n是偶数,那么将n除2赋值给n;不然将3n+1赋给n。

不断循环,直到n=1停止,并输出:

“运算成功”

解:

新建一个程序脚本,名为”,写入代码:

f<-function(n){

if(n<=0)list("要求输入一个正整数")

else{repeat{

if(n==1)break#n=1时终止elseif(n/2==(n/2))n<-n/2#n为偶数时除2elsen<-3*n+1

}

list("运算成功")

}

}

在R窗口中

输入:

Source(“”);f(32)

输出:

[1]"运算成功"

输入:

f(-5)

输出:

[1]"要求输入一个正整数"

二、R在统计描述中的应用

数据框操作(plyr包)

辅助小函数

1splat函数:

作用:

把原函数中多个参数打包为一个list作为参数,然后输出新的函数。

也确实是说本来某个函数需要输入多个参数,此刻套上splat后,只要输入一个参数list就能够够够了,不需要单独地输入参数。

它的作用结果是把一个函数变成一个新函数。

m*ply(a_matrix,FUN)的作用和a*ply(a_matrix,1,splat(FUN))一样

例:

(1)参数利用

>hp_per_cyl<-function(hp,cyl,...)hp/cyl

>splat(hp_per_cyl)(mtcars[1,])

1]

>splat(hp_per_cyl)(mtcars)

[1]

[10]

[19]

[28]

等价于:

>hp_per_cyl(mtcars$hp,mtcars$cyl)

splat函数的优势确实是能够不用拆分字段,能够一路输入作为参数。

(2)与plyr函数合用:

>f<-function(mpg,wt,...)(mw=mpg/wt)

>ddply(mtcars,.(cyl),splat(f))

2each函数

作用:

把多个函数汇聚成一个函数,当利用那个函数时,将别离作用多个函数。

它的作用结果是把一个函数变成一个新函数。

不足:

不能给作用的函数指定附加参数,只能利用默许参数。

例:

>fun<-function(x)c(min=min(x),max=max(x),mean=mean(x))

>fun(1:

10)

等价于:

>f<-each(min,max,mean)

>f(1:

10)

3colwise函数

colwise(.fun,.cols,...)

说明:

.fun:

要转化的函数;.cols是测试数据框的列是不是应包括的判别函数或是·要包括的列的名称。

catcolwise(.fun,...)与colwise功能类似,只是对离散型变量有效

numcolwise(.fun,...)与colwise功能类似,只是对数值型变量有效

作用:

把作用于数据框行向量的函数(如mean,median等)转化为作用于数据框列向量的函数。

于plyr函数一路利用十分方便。

作用结果生成一个新的函数。

例:

>nmissing<-function(x)sum(x))

>colwise(nmissing)(baseball)

>colwise(nmissing,.(sb,cs,so))(baseball)

>ddply(baseball,.(year),colwise(nmissing,.(sb,cs,so)))

>numcolwise(nmissing)(baseball)

等价于:

colwise(nmissing,(baseball)

>catcolwise(nmissing)(baseball)

等价于:

colwise(nmissing,(baseball)

4failwith函数

failwith(default=NULL,f,quiet=FALSE)

作用:

修正一个函数,使适当该函数显现错误时返回一个设定的默许值,默以为空。

作用结果生成一个新的函数。

>f<-function(x)if(x==1)stop("Error")else1

>f

(1)

Errorinf

(1):

Error

>safef<-failwith(,f)

>safef

(1)

Errorinf(...):

Error

NULL

>safef<-failwith(12,f,quiet=TRUE)

>safef

(1)

[1]12

5summarise()函数

summarise(.data,...)

作用:

对数据框做统计汇总,…为设定的统计方式或函数

例:

>summarise(baseball,duration=max(year)-min(year),nteams=length(unique(team)))

durationnteams

1136132

>head(ddply(baseball,"id",summarise,duration=max(year)-min(year),nteams=length(unique(team))))

iddurationnteams

1aaronha01223

2abernte02177

3adairje01124

4adamsba01202

5adamsbo03134

6adcocjo01165

数据集变量操作

1变量排序:

arrange函数

arrange(df,.(var1),.(var2)…)

作用:

依照指定列排序。

注意:

利用arrange函数排完序后行名会丢失,需要用cbind补回。

例:

>arrange(mtcars,cyl,disp)

>cars<-cbind(vehicle=(mtcars),mtcars)

>arrange(cars,cyl,disp)

------先把行名作为一个新的列加到数据框再排序

2更改变量名

rename(x,replace,warn_missing=TRUE)

作用:

通过名字修改变量名字,不是依照它的位置。

例:

>head(rename(tmt,replace=c("mpg"="avgpg",”cly”=”new”)))

3取行或列的数据

take(x,along,indices,drop=FALSE)

作用:

在x中,依照某个维度取数。

参数说明:

x为取数的源数据,能够是array或dataframe;

along:

维度。

1表示行,2表示列,3表示数组快等等;

indices:

具体维度所对应的指;

drop:

是不是整合

例:

>take(mtcars,2,1)--取第一列

>take(mtcars,1,1)--取第一行

数据集操作

1数据集链接

1)match_df

match_df(x,y,on=NULL)

作用:

x为原始的需要提取的数据框,y为条件数据框;on指定用来连接的变量,默以为两个数据框中所有变量,能够为多个。

通过on后面的字段,到x数据框取选取数据,相当于innerjoin,区别为:

前者结果集是x的一个子集;innerjoin包括两个数据框中所有字段。

例:

基础数据

>a<-c("a","b","c","d")

>b<-c("aa","bb","aa","dd")

>c<-c(1,2,3,4)

>t1<(a,b,c)

>t2<(a=c("a","c","e"),b=c("aa","ab","cd"))

>match_df(t1,t2,on=c("a","b"))

abc

1aaa1

2)join

join(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")

>join(t1,t2,by="x2",type="left")

>join(t1,t2,by="x2",type="right")

>tt1<(x1=c(1,2,3,4),x2=c(5,6,7,8))

>tt2<(y1=c(1,2,3,4)*10,x2=c(6,6,6,6))

>join(tt1,tt2,by="x2",type="inner",match="all")

x1x2y1

12610

22620

32630

42640

>join(tt1,tt2,by="x2",type="inner",match="first")

x2x1y1

26210

6210

6210

6210

注意:

merge和join相似,可是效率上join更优。

3)merge

例:

>x<(a=c(1,2,4,5,6),x=c(9,12,14,21,8))

>y<(a=c(1,3,4,6),y=c(8,14,19,2),x=c(2,3,4,5))

>merge(x,y)----依照相同字段默许内连接

>merge(x,y,all=TRUE)---依照相同字段全链接

>merge(x,y,=TRUE)--左连接

>merge(x,y,=TRUE)--右连接

>merge(x,y,by=c("a","x"))--依照a和x两个字段连接

>merge(x,y,="a",="y")--依照x表中a和y表中y连接

数据统计

1**ply函数

作用:

拆分数据,应用函数,再组合函数作用后的数据

输入:

array、dataframe、list

输出:

array、dataframe、list、discareded

a*ply(.data,.margins,.fun,...,.progress="none")

参数说明:

.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指定要按其分割的变量名称

>daply(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,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=(n=c(10,100,50),mean=c(5,5,10),sd=c(1,2,1))

>data

nmeansd

11051

210052

350101

>mlply(data,rnorm)

2观测值显现个数

(1)count函数:

count(df,vars=NULL,wt_var=NULL)

参数:

df是要处置的数据框;vars是要进行分组统计的变量;wt_var为权重。

注意:

该函数的功能类似于table

例:

基础数据:

>a=(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"))----双变量分组

利用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]#方差

[1]#标准差

[1]295#中位数

[1]#样本标准差

n<-length(x);m<-mean(x);s<-sd(x)

n/((n-1)*(n-2))*sum((x-m)^3)/s^3;((n*(n+1))/((n-1)*(n-2)*(n-3))*sum((x-m)^4)/s^4-(3*(n-1)^2)/((n-2)*(n-3)))

[1]0#偏度系数

[1]#峰度系数

R软件能够查验样本是不是来自某种散布整体,以正态散布为例,咱们能够通过()函数提供W统计量和相应的p值,并通过p值的大小判定样本是不是来自正态散布的整体。

体会散布的K-S查验方式的应用范围那么加倍普遍,不仅能够判定样本是不是来自正态整体,也能判定是不是来自其它类型的散布整体。

除此之外,R语言还有壮大的画图功能,例如咱们能够通过作直方图、茎叶图和整体分析来描述数据的散布。

R中的高水平作图函数有:

plot()、pairs()、coplot()、qqnorm()、hist()等等。

当高水平作图函数并非能完全达到作图的指标时,需要低水平的作图函数予以补充。

低水平作图函数有:

points()、lines()、text()、polygon()、legend()、title()和axis()等。

需要注意的是低水平作图函数必需是在高水平作图函数所画图形的基础之上增加新的图形。

hist()函数能够做出已知数据的直方图,stem()函数能够作茎叶图,boxplot()函数可用作箱线图,qqline()和qqmorm()能够做出正态QQ图和相应的直线。

R语言同时还能对两组数据进行相关性查验,()函数提供了Pearson相关性

查验,Spearman秩查验和Kendall秩查验。

其原假设为两组数据不相关,通过p值的大小来判定是不是拒绝原假设。

咱们还能用stars()函数作出星图,来表示多元数据,以上用法都超级简单易用,那个地址就再也不赘述。

3、R语言在统计推断中的应用

第一,R语言能够用来进行参数估量;

统计学中咱们应用矩估量和极大似然估量来进行点估量,矩估量是通过解正规方程组取得参数估量的值;极大似然估量通过解极大似然函数的极值点取得参数估量的值。

在R中咱们能够利用Newton迭代法求解正规方程组,取得矩估量;用optimize()函数求解极大似然函数,取得最大似然估量;由此可见,R语言能够很方便的解决参数点估量问题。

点估量给出未知参数的近似值以后,并非能明白这种估量的精准性如何,可信程度如何,为了解决这些问题,就需要用到区间估量,在学习用R语言解决区间估量问题的进程中,我最大的体会确实是R软件中内置的一些函数极大地址便了咱们处置具体问题。

比如()函数。

对单个正态整体,向量x包括了来自该整体的一个样本,咱们能够直接用(x)指令取得均值u的点估量和区间估量;关于两个正态整体,向量y包括了来自第二个整体的一个样本,咱们能够用(x,y)来取得均值差u1-u2的点估量和区间估量,其中当两个整体方差相同时,只需要加上=T(缺省值为F,即默许两个整体的方差是不同的);同时()函数不仅能够进行双侧置信区间估量,也能进行单侧置信区间估量,只需要在括号内加上al=”l”或al=”g”。

当数据不服从正态散布是,能够利用中心极限定理,取较大的样本量,构造近似服从正态散布的统计量进行估量。

第二,R语言能够用来进行假设查验。

假设查验也是统计推断中的一个重要的内容,在统计学中,咱们用搜索到的数据对某个事前作出的统计假设依照某种设计好的方式进行查验,来判定此假设是不是正确。

也确实是说为了查验一个假设是不是成立,先假定它是成立的,看看由此会致使什么结果。

假设是致使一个不合理的现象显现,就以为原假设不正确,假设是没有导出不合理的现象,那么不能拒绝原假设。

R软件给出了参数假设查验的方式。

以正态整体为例,()函数也能够用来进行单个或两个正态整体的均值的假设查验。

进行单边查验时能够加入指令alternative(备择假设),缺省时表示双边查验,less表示备择假设为u

X<-c,,,,,,,,,

Y<-c,,,,,,,,,

(X,Y,=T,al=”l”)

输出:

TwoSamplet-test

data:

XandY

t=,df=18,p-value=

alternativehypothesis:

truedifferenceinmeansislessthan0

95percentconfidenceinterval:

-Inf

sampleestimates:

meanofxmeanofy

结果中咱们不仅能取得X和Y的均值的点估量和、左侧区间估量、同时也能通过p值的大小判定是不是同意原假设,该例中p<,以为拒绝原假设,即以为两整体方差不同。

与均值假设查验相类似。

R语言中还能够用()函数进行正态整体的方差假设查验。

而且R语言不仅能就正态整体进行均值和方差查验,也能对其他整体散布进行查验。

例如用()进行二项散布的查验和估量。

习题中查验铁剂和饮食两种方式医治后患者病情表现有无不同:

x<-c(113,120,138,120,100,118,138,123)

y<-c(138,116,125,136,110,132,130,110)

(sum(x

Exactbinomialtest

data:

sum(x

numberofsuccesses=4,numberoftrials=8,p-value=1

alternativehypothesis:

trueprobabilityofsuccessisnotequalto

95percentconfidenceinterval:

sampleestimates:

probabilityofsuccess

由结果咱们能够判定两种诊断方式无显著不同(其顶用到的统计学原理见下面的符号查验)。

参数假设查验假定了整体散布的具体形式,但实际问题中咱们往往不明白整体的散布,很难对整体的散布做出假定,所有要尽可能从样本本身取得所需要的信息,即非参数查验方式。

R语言中有

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 农林牧渔 > 农学

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

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