R语言学习总结.docx
《R语言学习总结.docx》由会员分享,可在线阅读,更多相关《R语言学习总结.docx(7页珍藏版)》请在冰豆网上搜索。
![R语言学习总结.docx](https://file1.bdocx.com/fileroot1/2023-2/6/147cd7ee-0a1c-4d76-9d33-3fd44e2cff7c/147cd7ee-0a1c-4d76-9d33-3fd44e2cff7c1.gif)
R语言学习总结
R语言学习总结
一、初识R软件R软件是一套完整的数据处理、计算和制图软件系统。
其功能包括:
据存储和处理,数组运算,完整连贯的统计分析工具,优秀的统计制图功能已及简便而强大编程语言。
接触R语言以后,我的第一感觉就是方便和强大。
R语言中有非常多的函数和包,我们几乎不用自己去编一些复杂的算法,而往往只需要短短几行代码就能解决很复杂的问题,这给我们的使用带来了极大地方便;于此同时,它又可操纵数据的输入输出,实习分支、循环,使用者可以自定义功能,这就意味着当找不到合适的函数或包来解决所遇的问题时,我们又可以自己编程去实现各种具体功能,这也正是R语言的强大之处。
二、学习心得在学习该书的过程中,我不仅加深了对统计学方法的理解,同时也掌握了R软件的编程方法和基本技巧,了解了各种函数的意义和用法,并能把两者结合起来,解决实际中的统计问题。
1、R语言的基本语法及技巧R语言不仅可以进行基础的数字、字符以及向量的运算,内置了许多与向量运算有关的函数。
而且还提供了分灵活的访问向量元素和子集的功能。
R语言中经常出现数组,它可以看作是定义了维数(dim属性)的向量。
因此数组同样可以进行各种运算,以及访问数组元素和子集。
二维数组(矩阵)是比较重要和特殊的一类数组,R可以对矩阵进行内积、外积、乘法、求解、奇异值分解及最小二乘拟合等运算,以及进行矩阵的合并、拉直等。
apply()函数可以在对矩阵的一维或若干维进行某种计算,例如apply(A,1,mean)表示对A按行求和。
R语言允许将不同类型的元素放在一个集合中,这个集合叫做一个列表,列表元素总可以用“列表名[[下标]]”的格式引用。
而“列表名[下标]”表示的是一个子列表,这是一个很容易混淆的地方。
R语言中非常重要的一种数据结构是data、frame(数据框),它通常是矩阵形式的数据,但每列可以是不同类型,数据框每列是一个变量,每行是一个观测,要注意的是每一列必须有相同的长度。
数据框元素可以使用下标或者下标向量引用。
用一个非常简单的例子来说明向量、矩阵和数据框的简单运用。
输入:
A<-matrix(c(1:
12),2,6,byrow=T)
#A为一个2行6列,按行排列的矩阵X<-as、data、frame(A)
#把A转化成数据框形式的XX[1:
2,seq(1,5,2)]#输出X的第1、2行和
1、3、5列结果为:
V1V3V5113527911输入:
attach(X);R<-V1/V5;R#调用数据框X,计算并输出V1和V5的比值结果为:
[1]0、0、与此同时R语言中也提供了其它高级程序语言共有的分支、循环等程序控制结构。
比如if/else语句,for循环等。
因此R语言也可以很容易的根据情况编写自己所需要的函数。
以习题
2、7为例:
编写一个R程序,输入一个整数n,如果n小于等于0,中止运算,并输出:
“要求输入一个正整数”;否则,如果n是偶数,则将n除2赋值给n;否则将3n+1赋给n。
不断循环,直到n=1停止,并输出:
“运算成功”解:
新建一个程序脚本,名为chapter
2、R”,写入代码:
f<-function(n){if(n<=0)
list("要求输入一个正整数")else{repeat{if(n==1)
break#n=1时终止elseif(n/2==as、integer(n/2))
n<-n/2#n为偶数时除2elsen<-3*n+1}list("运算成功")}}在R窗口中输入:
Source(“chapter
2、R”);f(32)输出:
[1]"运算成功"输入:
f(-5)输出:
[1]"要求输入一个正整数"
2、R在统计描述中的应用使用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]292
54、5#方差[1]1
71、0395#标准差[1]295#中位数[1]
57、97948#样本标准差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]S检验方法的应用范围则更加广泛,不仅可以判断样本是否来自正态总体,也能判断是否来自其它类型的分布总体。
以习题
3、3为例:
分别用W检验方法和Kolmogorov-Smirnov检验方法检验习题
3、1的数据是否服从正态分布;首先将一百个数据存入”data、txt”中(此文件要放在工作空间目录中)x<-read、table(“data、txt”);shaoiro、test(x)Shapiro-Wilknormalitytestdata:
xW=0、9901,p-value=0、6708可见该样本来自正态总体ks、test(x,pnorm,mean(x),sd(x))One-sampleKolmogorov-Smirnovtestdata:
xD=0、073,p-value=0、6611alternativehypothesis:
two-sided结果与W检验相同除此之外,R语言还有强大的画图功能,例如我们可以通过作直方图、茎叶图和总体分析来描述数据的分布。
R中的高水平作图函数有:
plot()、pairs()、coplot()、qqnorm()、hist()等等。
当高水平作图函数并不能完全达到作图的指标时,需要低水平的作图函数予以补充。
低水平作图函数有:
points()、lines()、text()、polygon()、legend()、title()和axis()等。
需要注意的是低水平作图函数必须是在高水平作图函数所绘图形的基础之上增加新的图形。
hist()函数可以做出已知数据的直方图,stem()函数可以作茎叶图,boxplot()函数可用作箱线图,qqline()和qqmorm()可以做出正态QQ图和相应的直线。
R语言同时还能对两组数据进行相关性检验,cor、test()函数提供了Pearson相关性检验,Spearman秩检验和Kendall秩检验。
其原假设为两组数据不相关,通过p值的大小来判断是否拒绝原假设。
我们还能用stars()函数作出星图,来表示多元数据,以上用法都非常简单易用,这里就不再赘述。
3、R语言在统计推断中的应用首先,R语言可以用来进行参数估计;统计学中我们应用矩估计和极大似然估计来进行点估计,矩估计是通过解正规方程组得到参数估计的值;极大似然估计通过解极大似然函数的极值点得到参数估计的值。
在R中我们可以使用Newton迭代法求解正规方程组,获得矩估计;用optimize()函数求解极大似然函数,获得最大似然估计;由此可见,R语言能够很方便的解决参数点估计问题。
点估计给出未知参数的近似值以后,并不能知道这种估计的精确性如何,可信程度如何,为了解决这些问题,就需要用到区间估计,在学习用R语言解决区间估计问题的过程中,我最大的体会就是R软件中内置的一些函数极大地方便了我们处理具体问题。
比如t、test()函数。
对单个正态总体,向量x包含了来自该总体的一个样本,我们可以直接用t、test(x)指令得到均值u的点估计和区间估计;对于两个正态总体,向量y包含了来自第二个总体的一个样本,我们可以用t、test(x,y)来得到均值差u1-u2的点估计和区间估计,其中当两个总体方差相同时,只需要加上var、equal=T(缺省值为F,即默认两个总体的方差是不同的);同时t、test()函数不仅可以进行双侧置信区间估计,也能进行单侧置信区间估计,只需要在括号内加上al=”l”或者al=”g”。
当数据不服从正态分布是,可以利用中心极限定理,取较大的样本量,构造近似服从正态分布的统计量进行估计。
其次,R语言可以用来进行假设检验。
假设检验也是统计推断中的一个重要的内容,在统计学中,我们用搜索到的数据对某个事先作出的统计假设按照某种设计好的方法进行检验,来判断此假设是否正确。
也就是说为了检验一个假设是否成立,先假定它是成立的,看看由此会导致什么结果。
如果导致一个不合理的现象出现,就认为原假设不正确,如果没有导出不合理的现象,则不能拒绝原假设。
R软件给出了参数假设检验的方法。
以正态总体为例,t、test()函数也可以用来进行单个或者两个正态总体的均值的假设检验。
进行单边检验时可以加入指令alternative(备择假设),缺省时表示双边检验,less表示备择假设为uX<-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”)输出:
TwoSamplet-testdata:
XandYt=value=0、alternativehypothesis:
truedifferenceinmeansislessthan095percentconfidenceinterval:
-Infc(113,120,138,120,100,118,138,123)y<-c(138,116,125,136,110,132,130,110)binom、test(sum(xsum(xand8numberofsuccesses=4,numberoftrials=8,p-value=1alternativehypothesis:
trueprobabilityofsuccessisnotequalto0、595percentconfidenceinterval:
0、0、sampleestimates:
probabilityofsuccess0、5由结果我们可以判断两种诊断方法无显著差异(其中用到的统计学原理见下面的符号检验)。
参数假设检验假定了总体分布的具体形式,但实际问题中我们往往不知道总体的分布,很难对总体的分布做出假定,所有要尽量从样本本身获得所需要的信息,即非参数检验方法。
R语言中有很多种非参数的检验方法,这里仅介绍几个较为重要的方法。
Pearson拟合优度的卡方检验:
首先假设随机变量有某种分布,将数轴分成m个区间,然后用样本落在每个区间内的个数和其期望构造K统计量,当n很大是,K依分布收敛于自由度为m-1的卡方分布。
然后进行参数假设检验。
在R语言中可以用chisq、test()函数来实现。
符号检验可以用来检验一个样本是否来自某个总体,或者检验两个总体是否有显著区别。
对于前者,如果样本中位数等于假设的总体的中位数,我们就认为样本来自该假设,此时每个样本中位数和总体中位数的差额应该正负各一半,所以可以用p=0、5的二项分布来检验。
对于后者,如果认为两个总体无显著差异,则对应的两个样本观测值正负差额的个数应该大体相当,即正负各占一半,像单个样本一样,检验其是否来自p=0、5的二项分布。
这在R语言中只需要用binom、test()函数就能实现。
秩统计量检验是一种经常被用来检验分布无关性的非参数检验,R语言提供了Spearman、Kendall和Wilcoxon三种秩检验方法,前两种可以用cor、test()函数实现,最后一种可以用wilcox、test()函数实现。
最后,R语言还可以用来处理回归分析问题对于普通的多元线性回归模型,已知被解释变量y和i个解释变量的样本数据,利用R语言中的lm()函数可以非常方便的求出各解释变量的回归参数,并做相应的检验。
以y=β0+β1x+β2z+ε为例,将数据赋给各个变量后,只需要输入lm<-lm(y~1+x+z)
;summary(lm)就能得到参数估计值、每个参数估计值的标准差、参数显著性的t检验和总体显著性的F检验,以及模型的拟合优度等信息。
然后我们可以用predict()函数非常方便的求出预测值和预测区间,同样我们还能用前面介绍过的plot()和abline()等函数做出各种图形来进行回归分析。
当然之前讲的都是比较理想的情况,而现实中往往影响被解释变量y的因素很多,我们希望找出若干个比较关键的变量建立回归方程,这便涉及变量选择的问题。
选择“最优”变量的方法有很多,比较常用的一种是逐步回归法。
它以我是一个做事非常认真地人,这个学期除了上课时间,我还会利用课余时间练习R语言的操作,俗话说的好,动眼部动手,什么都学不走。
很多时候看书上的内容觉得非常简单,实际操作中却会遇到很多小问题,往往也正是这些小问题导致我们的程序无法运行或者无法得出想要的结果。
期间我就遇到过一些这样的问题,例如没有把数据文件放在工作空间目录里,导致“read、table”指令读不出数据,或者是一些符号输错导致错误。
正是我认真细致的将每个用法都尝试一遍,才掌握了很多不起眼的小细节,也正是因为这一点,当其他两名同学遇到问题问我的时候我才能迅速地找出问题所在。
总的来说,R语言归根到底只是我们解决问题的工具,而我们对问题的分析首先是要根据理论进行的,例如参数估计、假设检验以及线性回归、时间序列方面的知识,我们只有深刻理解这些理论背后的意义,才能用对R语言中的各个方法,就好比战场上如果R是利刃,理论知识就是我们的身体和战术素养,只有我们学好了理论知识,才能面对一个个问题迎刃而解。
这个学期获得的收获则更多,不仅加深了对统计和计量方面知识的进一步理解,更对R软件有了初步的了解和认识。
而其实最重要的,是这种全力以赴做一件事情的状态和收获的喜悦。
我相信这种经历会让我在以后的学习和工作中获益匪浅。
这个学期的学习让我对R语言产生了浓厚的兴趣,而我现在对R语言也仅仅是学到了些皮毛,我一定要再努力学习,希望能够在今后的实习中学到更多的东西,为自己大四时期找工作打下基础。