R-语言基础知识及可视化介绍课件_第1页
R-语言基础知识及可视化介绍课件_第2页
R-语言基础知识及可视化介绍课件_第3页
R-语言基础知识及可视化介绍课件_第4页
R-语言基础知识及可视化介绍课件_第5页
已阅读5页,还剩295页未读 继续免费阅读

下载本文档

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

文档简介

R语言基础知识

R语言基础知识测试R对于你有什么用?你属于下面的哪一类?A.只需要做基础的交叉表和最简单的模型,最喜欢按按钮。

B.需要用一些复杂的模型或者最新的方法,有时在只需按按钮的软件中找不到你要的结果,可以忍受打字.C.经常在傻瓜软件中找不到你要的方法,想自己写又无处下手,喜欢打字,甚至有点编程基础.测试R对于你有什么用?答案R对于你有什么用?属于A类的同学:R在你的事业中不会起到重要的作用,可以考虑把宝贵的时间花在个人娱乐方面。属于B类的同学:R可以在你偶尔找不到需要的统计方法时成为你的救命稻草。但是由于你对按按钮有一定的喜爱,你对R会产生畏惧心理。请衡量你的需求程度以及对于打字的厌恶程度来判断你今晚的活动。属于C类的同学:R就是为你而生的.你会有命中注定的感觉。答案R对于你有什么用?为什么?R基本没有几个可以按的按钮,全部结果都需要输入命令才可得到R不会自动作出漂亮的交叉表格,需要输入命令找到相应值,输入到word中作出的表格中。但是!R有最全的,最前沿的,最快更新的统计方法R有最直观的帮助文件,可以自学R免费的R非常灵活,可以作为一个独自的编程语言.是做数据模拟的最好的选择.为什么?R基本没有几个可以按的按钮,全部结果都需要输入命令才入门必备:R语言官方网站:/Rstudio:http:///–simpler推荐:Rcommander:http:///RGUI:http:///_rgui/统计之都:/入门必备:推荐的参考资料AnIntroductiontoR/doc/manuals/R-intro.pdf/manuals.htmlHSAUR:AHandbookofStatisticalAnalysesUsingR/web/packages/HSAUR/R(andS-PLUS)ManualtoAccompanyAgresti’sCategoricalData/~lthompson221/Splusdiscrete2.pdfJ.MaindonaldandJ.Braun(2003),“DataAnalysisandGraphicsUsingR:AnExample-BasedApproach”,CambridgeUniversityPress,

.au/~johnm/.R语言实战(第2版),2016年,卡巴科弗(RobertI.Kabacoff)(作者),王小宁(译者),刘撷芯(译者),黄俊文(译者),等(译者),人民邮电出版社推荐的参考资料AnIntroductiontoR一、R基础应用二、R统计分析三、R可视化操作一、R基础应用(一)软件介绍R系统是一个用于数据处理,分析和作图的统计计算环境。R系统主要包括基础R系统和补充软件包(Packages)两个部分。一个软件包一般专门解决一个统计问题。R最大的特点是代码开源:R基础系统程序的代码,和所有软件包程序的代码都可以自由下载。R系统和所有补充包全部免费,同时可以自己制作补充包供大众下载使用。一、R基础应用(一)软件介绍一、R基础应用R系统的特点 -有效快速的数据储存和数据操作 -齐备的数据分析和处理的系统工具 -灵活的画图显示工具 -有完善的,简单并有效的编程语言

-含有最前沿,最快更新的统计方法OfficialHomepage:http://www.R-可以在其他操作系统上安装对应R系统,像Unixsystems,WindowsplatformsandMacOSX。R在windows上的安装:http:///CRAN/bin/windows/base/R-3.4.0-win.exe运行R:程序->R->R3.4.0R系统的特点(二)、R界面介绍与常用编辑器10基本菜单控制台(二)、R界面介绍与常用编辑器10基本菜单控制台R界面介绍脚本文件用于储存R命令及其注释工作空间可储存现有的数据库及变量改变路径可以设定打开文件,读取文件所用的路径所有的菜单命令都可以通过在控制台输入相应的R命令来实现R界面介绍脚本文件用于储存R命令及其注释R界面介绍对于不同的统计问题可选用不同的补充包处理安装完补充包后,每次打开R还要导入补充包到现有的环境下才可使用里面的函数(functions):也可直接输入

library(packageName)在基础系统上已装好了一些常用的补充包察看已经安装的补充包:library()察看已经导入的补充包:Misc->ListSearchPath或者输入search()R界面介绍对于不同的统计问题可选用不同的补充包处理R常用编辑器2.1Notepad++window操作系统下的最佳选择,完全开源和免费,默认支持R语言的高亮显示,便于中文编码和文本操作。

在windows系统中,直接把.R的后缀名设为使用Notepad++打开是一种最方便的方式。13R常用编辑器2.1Notepad++1314142.2RStudio

目前最流行的R语言编辑器,可以高亮显示代码、主动联想命令,提供R的图形设备、对象管理器、调试工具等高级功能。

如果只进行R语言的开发,RStudio是不二之选。152.2RStudio1516程序编辑窗口工作空间与历史信息程序运行与输出窗口(主界面)画图和函数包帮助窗口16程序编辑窗口工作空间与历史信息程序运行与输出窗口(主界面2.3包的载入

包的安装是指从某个CRAN镜像站点下载它并将其放入库中的过程。要在R会话中使用它,还需要使用library()命令载入这个包。例如,要使用ggplot2包,执行两行命令install.packages(“ggplot2”)library(ggplot2)可以使用help查看包,如,help(package="gclus")#帮助查看gclus包172.3包的载入17代码练习1(包的下载与打开):

install.packages("vcd")#安装vcd包(一个用于可视化类别数据的包)help(package="vcd")#列出此包中可用的函数和数据集library(vcd)#载入这个包18代码练习1(包的下载与打开):

18(三)、R的基础命令和变量类型3.1R的基础命令R系统区分大小写,(注意:在使用R时调整为英文输入法)R可取的变量名字在不同操作系统下要求不同。一般任何数字和字母,以及’.’‘_’,都可用于组成变量名字。但是名字第一个字母不可为数字或’_’.如,A32,.a1基础命令包括表达命令(expressions)和转让命令(assignments).表达命令:输入变量名字后会被计算并打印出来。转让命令:输入后会先计算右边的公式结果,并导入到左边的变量名字里。结果不会被打印出来。(三)、R的基础命令和变量类型3.1R的基础命令控制台每行第一个符号’>’表示你可开始输入命令:>a<-2不同命令可用’;’或者enter(新一行)来隔开可用

键来查找控制台上输入过的命令Comments(注释)要用’#’开头,整行会变为comments,无法运行可以把所有要输入的命令存到一个R的脚本(scriptxx.R)文件之中。R有一个简易的脚本文件编辑器。在脚本里运行命令可以先选择需要运行的命令,然后按’F5’.结果在控制台(console)里显示。‘Esc’键可停止正在运行的命令.控制台每行第一个符号’>’表示你可开始输入命令:>a<-23.2变量和赋值

R中的赋值符号有两种方式:<-和=

x<-1

1->x

x=1

assign("x",1)R语句由函数和赋值构成。通常,R使用<-,而不是传统的=作为赋值符号。213.2变量和赋值 213.3函数:函数一般用来获取一个对象的信息,得到需要的计算结果,或者令R执行特定的命令.如:sum(objectName)取得objectName这个对象的总数每一个函数包括函数名称。如,sum和一些用户可设定的变量(如objectName),变量会放在括号中.每一个函数的功能是不同的每一个函数中的变量的类型是不同的,是被建立这个函数的编程者定义好的(如,对于sum这个函数,objectName里面的值必须得是数字).如:length(a)mode(a)mean(a)了解一个函数的用法:?functionName

(如:?sum)223.3函数:22假如我们要创建一个含有五个数值的向量x,且这五个值分别为10、5、8、9和21,则R 中的命令为x<-c(10,5,8,9,21)请问c()是一个什么函数,如何了解它?

23假如我们要创建一个含有五个数值的向量x,且这五个值分别为10代码练习2:X<-rnorm(10)#创建了一个名为x的向量对象,它包含10个来自标准正态分布的随机偏差。mode(x)#现实向量属性head(x)#显示x向量中第一行list(x)#显示x向量中的全部数据尝试写y<-c(1:20)请自己试着看一下y的属性、全部数据,并打开Rstudio右上方的environment,能发现什么?24代码练习2:2425253.4对象(objects)在R中任何储存信息的个体都叫做对象(objects)如:A<-2他们可以是变量(variables),含有的数字的矩阵(arrayofnumbers),字符串(characterstrings),函数(functions),或者其他更复杂的包含多个objects的结构。如何察看已储存的objects:尝试输入objects()函数消除已储存的objects:rm(objectName)可以用saveworkspace来保存现环境下已有的Objects供下次使用。会存为(.Rdata)文件。3.4对象(objects)在R中任何储存信息的个体都叫做3.5数据结构R拥有许多用于存储数据的对象类型,包括标量、向量、矩阵、数组、数据框和列表。它们在存储数据的类型、创建方式、结构复杂度,以及用于定位和访问其中个别元素的标记等方面均有所不同。273.5数据结构273.5.1向量向量是用于存储数值型、字符型或逻辑型数据的一维数组。执行组合功能的函数c()可用来创建向量。各类向量如下例所示:

#创建向量a<-c(1,2,5,3,6,-2,4)a#显示向量ab<-c("one","two","three")b#显示向量bc<-c(TRUE,TRUE,TRUE,FALSE,TRUE,FALSE)c#显示向量c283.5.1向量282929如何访问向量中的元素,比如,我只想看一个向量中的某几个数,怎么做?通过在方括号中给定元素所处位置的数值,可以访问向量中的元素。代码练习2:#抽取向量中的数a<-c(1,2,5,3,6,-2,4)a[3]#抽取向量中的第3个数a[c(1,3,5)]#抽取向量中的第1、3、5个数a[2:7]#抽取哪几个数,你知道么?试一试,并思考此处冒号的用处30如何访问向量中的元素,比如,我只想看一个向量中的某几个数,怎31313.5.2矩阵矩阵是一个二维数组,只是每个元素都拥有相同的模式(数值型、字符型或逻辑型)。可通过函数matrix创建矩阵。可以用?matrix(),或者help(matrix)来了解矩阵是什么,如何表达3232代码练习3:#创建矩阵y<-matrix(1:40,nrow=5,ncol=4)#随机创建一个行为5×4的矩阵y#以下将分别创建按行与按列填充的2×2的矩阵cells<-c(8,31,12,17)#先构建一个向量rnames<-c("R1","R2")#赋值行cnames<-c("C1","C2")#赋值列mymatrix<matrix(cells,nrow=2,ncol=2,byrow=TRUE,dimnames=list(rnames,cnames))#创建一个按行填充的2×2的矩阵mymatrixmymatrix<-matrix(cells,nrow=2,ncol=2,byrow=FALSE,dimnames=list(rnames,cnames))#创建一个按列填充的2×2的矩阵mymatrix33代码练习3:#创建矩阵33代码练习4:x<-matrix(1:20,nrow=2)#创建一个2行的矩阵xx[2,]#抽取第2行x[,2]#抽取第2列x[1,4]#抽取第1行,第4列x[1,c(7,8)]#抽取第1行,第7、8列x[2,c(4,5)]#先不要看结果,你认为是抽取哪一行哪一列,结果如何?34代码练习4:343.5.3数组数组(array)与矩阵类似,但是维度可以大于2。什么是数组?到这里先停下来,想一想,我们可以通过什么方式了解数组。?array()或者help(array)。353.5.3数组35代码练习5:创建数组dim1<-c("A1","A2")#创建向量dim2<-c("B1","B2","B3")#创建向量dim3<-c("C1","C2","C3","C4")#创建向量z<-array(1:24,c(2,3,4),dimnames=list(dim1,dim2,dim3))#创建三维数值型数组(2×3×4)数值型数组z36代码练习5:创建数组363.5.4数据框矩阵+向量(各种类型)数据框可通过函数data.frame()创建

mydata<-data.frame(col1,col2,col3)373.5.4数据框37数据框通常是由数据构成的一个矩形数组,行表示观测,列表示变量。表1-1提供了一个假想的微信使用与孤独感情况的数据集。表1-1:大学生微信使用与孤独感38学生编号年龄性别微信使用频次孤独感122252221144320153419132518145619223注:性别1代表女,2代表男;微信使用情况“从不到经常”,赋值为“1到5”;孤独感“从不到经常”,赋值为“从1到5”。数据框通常是由数据构成的一个矩形数组,行表示观测,列表示变量代码练习6:创建数据框#将表1-1大学生微信使用与孤独感做一个数据框studentsID<-c(1,2,3,4,5,6)#学生编号age<-c(22,21,20,19,18,19)#学生年龄gendertype<-c("男","女","女","女","女","男"")#性别loneliness<-c(2,4,3,2,5,3)#孤独感studentsdata<-data.frame(studentsID,age,gendertype,loneliness)#形成数据框studentsdata39代码练习6:创建数据框39想一想,如果我们要选取数据框中的元素该怎么做?代码练习7:#有三种方法可以选取数据框中的元素studentsdata[1:2]#方括号抽取studentsdata[c("gendertype","loneliness")]#分别列出变量名studentsdata$age#数据集加变量名40想一想,如果我们要选取数据框中的元素该怎么做?403.5.5列表列表(list)是R的数据类型中为复杂的一种。等于向量+矩阵+数据框+其他列表的组合。可以使用函数list()创建列表:

mylist<-list(object1,object2,_)413.5.5列表41代码练习8:创建列表mylist<-list(object1,object2,_)a<-"MyFirstList"#创建一个名称为MyFirstList的列表,列表包括b、c、db<-c(25,26,18,39)c<-matrix(1:10,nrow=5)d<-c("one","two","three")mylist<-list(title=a,lists=b,c,d)mylistmylist[[2]]#调用数据集中的2mylist[[3]]#调用数据集中的342代码练习8:创建列表42课堂练习一:v1<-c(1,6,7,8)

v2<-c(2,4)m<-matrix(1,2,4)L<-list(v1,v2,m)43课堂练习一:433.5.6数据集的标签如果我想修改已有数据集中变量名的标签,该怎么做?方法一:使用fix()函数,调出并可视化数据集,可以直接在上面修改。试一下代码:fix(studentsdata)fix()函数有许多妙用,大家可以尝试!443.5.6数据集的标签443.6如何从现有的文本、excel表格或者统计软件中导入数据

读取excel文件的推荐三种方式:第一种,首先,将其另存或者导入为一个逗号分隔文件(csv),

其次,写如下代码:read.csv(file.choose(),header=T)#选取csv文件,并读取,最后,选择你要读取的文件,在R中显示。第二种,直接在R中写入代码:data<-read.csv("C:/Users/admin/Desktop/myfile.csv")#data#看文件中的数据453.6如何从现有的文本、excel表格或者统计软件中导入数第三种,直接在Rstudio右上方的,environment当中的importdatabase,选取要导入的文件。注意:所有的文件名都应为英文4646导入SPSS数据install.packages("foreign")library(foreign)install.packages("Hmisc")library(Hmisc)mydataframe<-spss.get("C:/Users/admin/Desktop/mydata.sav",use.value.labels=T)mydataframe方法二:直接在Rstudio右上方的,environment当中的importdatabase,选取要导入的spss文件。47导入SPSS数据47其他基本函数:48其他基本函数:483.7执行语句控制流:通常情况下,R程序中的语句是从上至下顺序执行。但有时你可能希望重复执行某些语句,或是仅在满足特殊条件下执行一定的语句。这就需要控制流发挥作用。493.7执行语句49R是一种表达式语言,也就是说其命令类型只有函数或表达式,并由它们返回一个结果。

语句组由花括号‘{}’确定,此时结果是该组中最后一个能返回值的语句的结果。50R是一种表达式语言,也就是说其命令类型只有函数或表达式,并由R拥有一般现代编程语言中都有的标准控制结构。我们将首先看到用于条件执行的结构,而后是用于循环执行的结构。语句(statement)是一条单独的R语句或一组复合语句(包含在花括号{}中的一组R语句,使用分号分隔);

条件(cond)是一条终被解析为真(TRUE)或假(FALSE)的表达式;

表达式(expr)是一条数值或字符串的求值语句;序列(seq)是一个数值或字符串序列。注意:学会控制流将帮助我们自己编写函数!51R拥有一般现代编程语言中都有的标准控制结构。我们将首先看到用3.7.1重复和循环循环结构重复地执行一个或一系列语句,直到某个条件不为真为止。循环结构包括for和while结构。1)

for结构

for循环重复地执行一个语句,直到某个变量的值不再包含在序列seq中为止。语法为:for(varinseq)statement如:for(iin1:10)print("IloveR")i:我们要去循环的变量523.7.1重复和循环52试一下for(iin8:10)print("IloveR")?>for(iin1:3){print(i^2)}53试一下for(iin8:10)print("Ilov>for(iin1:3){+print(i^2)+}54>for(iin1:3){+print(i^2)2).while结构while循环重复地执行一个语句,直到条件不为真为止。语法为:While(cond)statement作为第二个例子,代码:i<-10while(i>0){print("IloveR");i<-i-1}又将单词IloveR输出了10次。请确保括号内while的条件语句能够改变,即让它在某个时刻不再为真——否则循环将永不停止!在上例中,语句:

i<-i-1552).while结构while循环重复地执行一个语句,直x<-10while(i>0){print("IloveR");i<-x-1}56x<-1056在每步循环中为对象i减去1,这样在十次循环过后,它就不再大于0了。反之,如果在每步循环都加1的话,R将不停地输出IloveR。这也是while循环可能较其他循环结构更危险的原因。在处理大数据集中的行和列时,R中的循环可能比较低效费时。apply族函数能够较好地解决这一问题。57573.7.2条件执行在条件执行结构中,一条或一组语句仅在满足一个指定条件时执行。条件执行结构包括if-else、ifelse和switch。if-else结构控制结构if-else在某个给定条件为真时执行语句。也可以同时在条件为假时执行另外的语句。语法为:

if(cond)statementif(cond)statement1elsestatement2583.7.2条件执行58示例如下:

if(is.character(grade))grade<-as.factor(grade)如果grade是一个字符向量,它就会被转换为一个因子if(!is.

character(grade))grade<-as.factor(grade)elseprint(“gradealreadyisafactor”)两个语句择其一执行。如果grade不是一个因子(注意符号!),它就会被转换为一个因子。如果它是一个因子,就会输出一段信息。59示例如下:59Ifelse结构,是if-else结构比较紧凑的向量化版本。语法为:ifelse(cond,statement1,statement2)若cond为TURE,则执行第一个语句;若cond为FALSE,则执行第二个语句。如:ifelse(score>0.5,print(“passed”),print(“Failed”))Outcome<-

ifelse(score>0.5,“passed”,“Failed)在程序的行为是二元时,或者希望结构的输入和输出均为向量时,适合用ifelse60Ifelse结构,是if-else结构比较紧凑的向量化版本。Switch结构根据一个表达式的值选择语句执行。语法为:Switch(expr,……..)其中……..表示与expr的各种可能输出值绑定的语句。61Switch结构61feelings=c("sad","afraid")for(iinfeelings)print(switch(i,happy="Iamgladyouarehappy",afraid="Thereisnothingtofear",sad="Cheerup",angry="Calmdownnow"))62feelings=c("sad","afraid")623.7.3用户自编函数R的一个最大优点之一就是用户可以自行添加函数。事实上,R中的许多函数都是由已有函数构成的。一个函数的结构看起来大致如此:myfunction<-function(arg1,arg2,...){statements

return(object)

}633.7.3用户自编函数R的一个最大优点之一就是用户可以自行比如,自定义一个函数:通过给出直角三角形的两条直边,得到斜边的长度slopeLength=function(a,b){

y=sqrt(a^2+b^2)

return(y)

}slopeLength(3,4)64比如,自定义一个函数:通过给出直角三角形的两条直边,得到斜边二、R统计分析(一)、基本统计分析描述性统计分析频数表和列联表相关系数和协方差t检验65二、R统计分析(一)、基本统计分析651.描述性统计分析连续变量的中心趋势、变化性和分布形状使用自带数据库车辆路试(mtcars)数据集。我们的关注焦点是每加仑汽油行驶英里数(mpg)、马力(hp)和车重(wt)。代码:vars<-c("mpg","hp","wt")head(mtcars[vars])661.描述性统计分析66多种方法进行描述性统计分析:(1)通过summary()计算描述性统计量代码:summary(mtcars[vars])67多种方法进行描述性统计分析:(1)通过summary()计算描述性统计分析:(2)通过sapply()计算描述性统计量68描述性统计分析:(2)通过sapply()计算描述性统计量6mystats<-function(x,na.omit=FALSE){if(na.omit)#如果设定na.omit=TRUE则移除缺失值x<-x[!is.na(x)]m<-mean(x)n<-length(x)s<-sd(x)skew<-sum((x-m)^3/s^3)/n#计算偏度kurt<-sum((x-m)^4/s^4)/n–3#计算峰度return(c(n=n,mean=m,stdev=s,skew=skew,kurtosis=kurt))}sapply(mtcars[vars],mystats)69mystats<-function(x,na.omit描述性统计分析(3)Hmisc、pastecs和psych包也提供了计算描述性统计量的函数,由于这些包并未包括在基础安装中,所以需要在首次使用之前先进行安装。Hmisc包中的describe()函数可返回变量和观测的数量、缺失值和唯一值的数目、平均值、分位数,以及五个最大的值和五个最小的值。70描述性统计分析(3)Hmisc、pastecs和psych包代码:install.packages("Hmisc")library(Hmisc)describe(mtcars[vars])71代码:71描述性统计分析(4)还有更多:如,pastecs包中名为stat.desc()的函数,它可以计算种类繁多的描述性统计量。如,计算非缺失值的数量、平均数、标准差、中位数、截尾均值、绝对中位差、最小值、最大值、值域、偏度、峰度和平均值的标准误。72描述性统计分析(4)还有更多:72代码:install.packages("psych")library(psych)describe(mtcars[vars])73代码:73描述性统计分析742.分组计算描述性统计量在比较多组个体或观测时,关注的焦点经常是各组的描述性统计信息,而不是样本整体的描述性统计信息。同样地,在R中完成这个任务有若干种方法。可以使用aggregate()函数,doBy包中的summaryBy()函数,psych包中的describe.by()函数等等,来分组获取描述性统计量描述性统计分析742.分组计算描述性统计量如:使用psych包中的describe.by()分组计算概述统计量代码:

library(psych)describe.by(mtcars[vars],mtcars$am)75如:使用psych包中的describe.by()分组计算概描述性统计分析(1)频数列表和列联表学习类别型变量的频数表和列联表,以及相应的独立性检验、相关性的度量、图形化展示结果的方法。案例分析:我们除了使用基础安装中的函数,还将连带使用vcd包和gmodels包中的函数。

代码:library(vcd)

head(Arthritis)76描述性统计分析(1)频数列表和列联表7677R中提供了用于创建频数表和列联表的若干种方法。见下表:77R中提供了用于创建频数表和列联表的若干种方法。见下表:

频数列表和列联表

(2)一维列联表代码:mytable<-with(Arthritis,table(Improved))#简单频数表mytableprop.table(mytable)#将频数转化为比例值prop.table(mytable)*100#将频数转化为比例值78

频数列表和列联表

(2)一维列联表787979

频数列表和列联表

(3)二维列联表二维列联表,table()函数的使用格式为:80其中的A是行变量,B是列变量。除此之外,xtabs()函数还可使用公式风格的输入创建列联表,格式为:

频数列表和列联表

(3)二维列联表80其中的A是行变量,B代码:mytable<-xtabs(~Treatment+Improved,data=Arthritis)mytable81代码:81频数列表和列联表使用CrossTable生成二维列联表使用gmodels包中的CrossTable()函数是创建二维列联表的第三种方法。CrossTable()函数仿照SAS中PROCFREQ或SPSS中CROSSTABS的形式生成二维列联表。代码:install.packages("gmodels")library(gmodels)CrossTable(Arthritis$Treatment,Arthritis$Improved)82频数列表和列联表使用CrossTable生成二维列联表828383频数列表和列联表(4)多维列联表

table()和xtabs()都可以基于三个或更多的类别型变量生成多维列联表。margin.table()、prop.table()和addmargins()函数可以自然地推广到高于二维的情况。另外,ftable()函数可以以一种紧凑而吸引人的方式输出多维列联表。84频数列表和列联表(4)多维列联表84(5)独立性检验5.1.卡方独立性检验检验分类变量的独立性,可以使用chisq.test()函数对二维表的行变量和列变量进行卡方独立性检验。代码:library(vcd)mytable<-xtabs(~Treatment+Improved,data=Arthritis)chisq.test(mytable)mytable<-xtabs(~Improved+Sex,data=Arthritis)chisq.test(mytable)85(5)独立性检验8586治疗情况和改善情况不独立(或者说二者有关系)性别和改善情况独立(或者说二者木有关系)86治疗情况和改善情况不独立(或者说二者有关系)性别和改善情(3)相关系数和协方差相关系数可以用来描述定量变量之间的关系。相关系数的符号(+)表明关系的方向(正相关或负相关),其值的大小表示关系的强弱程度(完全不相关时为0,完全相关时为1)。87(3)相关系数和协方差873.1

Pearson和Spearman相关Pearson积差相关系数衡量了两个定量变量之间的线性相关程度。Spearman等级相关系数则衡量分级定序变量之间的相关程度。

883.1Pearson和Spearman相关8889cor()函数可以计算这三种相关系数,而cov()函数可用来计算协方差。两个函数的参数有很多,其中与相关系数的计算有关的参数可以简化为:

默认参数为use="everything"和method="pearson"89cor()函数可以计算这三种相关系数,而cov()函数可示例:

R语言的自带的数据包中states.x77(关于美国50个州的1977年的人口、收入、文盲率、预期寿命、谋杀率和高中毕业率数据等。)

我们试着采用第1至6列的50份数据,看看R语言是怎么做相关分析的,同时怎么看分析出的结果。90示例:90协方差和相关系数代码:states<-state.x77[,1:6]cov(states)#计算方差和协方差cor(states)

#计算皮尔逊相关系数,或皮尔逊积差系数(Pearson'sproductmomentcoefficient)cor(states,method=“spearman”)#计算Spearman等级相关系数91协方差和相关系数9192923.2

相关性的显著性检验在计算好相关系数以后,如何对它们进行统计显著性检验呢?常用的原假设为变量间不相关(即总体的相关系数为0)。可以使用cor.test()函数对单个的Pearson、Spearman和Kendall相关系数进行检验。简化后的使用格式为:其中的x和y为要检验相关性的变量,alternative则用来指定进行双侧检验或单侧检验(取值为"two.side"、"less"或"greater"),而method用以指定要计算的相关类型("pearson"、"kendall"或"spearman")。当研究的假设为总体的相关系数小于0时,请使用alternative="less"。在研究的假设为总体的相关系数大于0时,应使用alternative="greater"。默认情况下,假设为alternative="two.side"(总体相关系数不等于0)933.2相关性的显著性检验93代码:cor.test(states[,3],states[,5])94总体的相关度为0,则预计在一千万次中只会有少于一次的机会见到0.703这样大的样本相关度(即p=1.258e-08)代码:94总体的相关度为0,4.t检验独立样本t检验一个针对两组的独立样本t检验可以用于检验两个总体的均值相等的假设。这里假设两组数据是独立的,并且是从正态总体中抽得。检验的调用格式为:其中的y是一个数值型变量,x是一个二分变量。调用格式也可是:954.t检验959696(二)中级统计分析

回归分析从许多方面来看,回归分析都是统计学的核心。它其实是一个广义的概念,通指那些用一个或多个预测变量(也称自变量或解释变量)来预测响应变量(也称因变量、效标变量或结果变量)的方法。97(二)中级统计分析979898OLS回归

其中,n为观测的数目,k为预测变量的数目。99OLS回归99为了能够恰当地解释OLS模型的系数,数据必须满足以下统计假设。正态性对于固定的自变量值,因变量值成正态分布。

独立性Yi值之间相互独立。

线性因变量与自变量之间为线性相关。

同方差性因变量的方差不随自变量的水平不同而变化。100为了能够恰当地解释OLS模型的系数,数据必须满足以下统计假设用lm()拟合回归模型在R中,拟合线性模型最基本的函数就是lm(),格式为:其中,formula指要拟合的模型形式,data是一个数据框,包含了用于拟合模型的数据。101用lm()拟合回归模型101R基础安装中的数据集women提供了15个年龄在30~39岁间女性的身高和体重信息,我们想通过身高来预测体重。代码:fit<-lm(weight~height,data=women)summary(fit)#展示模型的详细结果women$weightfitted(fit)

#列出拟合模型的预测值residuals(fit)

#列出拟合模型的残差值plot(women$height,women$weight,main=“WomenAge30-39”,xlab=“Height(ininches)”,ylab=“Weight(inpounds)”)#模型诊断图abline(fit)#图形加线102R基础安装中的数据集women提供了15个年龄在30~39岁103Arthritis()103Arthritis()104104105105三、可视化工具介绍与使用(一)、

基础绘图(二)、中级绘图(三)、

高级绘图106三、可视化工具介绍与使用106(一).基础绘图1.条形图条形图通过垂直或水平的条形展示了类别行变量的分布(频数)。需要调用barplot函数实现:barplot(height),其中height是一个向量或者矩阵。107(一).基础绘图1.条形图107如:做条形图install.packages("vcd")有的版本要求载入grid包install.packages("grid")如果在rstudio脚本中无法载入,可以尝试在packages中载入library(vcd)counts<-table(Arthritis$Improved)countsbarplot(counts,main="simplebarplot",xlab="Improvement",ylab="Frequency")108如:做条形图108R-语言基础知识及可视化介绍课件barplot(counts,main="simplebarplot",xlab="Improvement",ylab="Frequency",col="blue")barplot(counts,main="Horizontalbarplot",xlab="Improvement",ylab="Frequency",horiz=T,col="blue")有了哪些改变?110barplot(counts,main="simplebaR-语言基础知识及可视化介绍课件2.饼图饼图在商界应用中无处不在,然而多数统计学家对其持否定态度,更推荐点图或者条形图,因为相对于面积,人们对长度的判断更精确。因此,R中饼图的选项与其他统计软件相比十分有限。饼图由函数pie(x,lables)2.饼图如,做立体饼图install.packages("plotrix")library(plotrix)pie3D(slices,labels=lbls,explode=0.2,main="3Dpiechart")如,做立体饼图R-语言基础知识及可视化介绍课件3.直方图连续型变量的分布Hist(x)做一个简单直方图:hist(mtcars$mpg)3.直方图R-语言基础知识及可视化介绍课件制定组数和颜色:hist(mtcars$mpg,breaks=12,col="red",xlab="milespergallon",main="coloredhistogramwith12bins")制定组数和颜色:R-语言基础知识及可视化介绍课件添加轴须图hist(mtcars$mpg,freq=FALSE,breaks=12,col="red",xlab="milespergallon",main="histogram,rugplot,densitycurve")rug(jitter(mtcars$mpg))lines(density(mtcars$mpg),col="blue",lwd=2)添加轴须图R-语言基础知识及可视化介绍课件(二)、R中级绘图展示双变量间关系(二元关系)和多变量间关系(多元关系),即更为复杂的关系。比如:汽车里程与车重的关系怎样?(二)、R中级绘图install.packages("car")library(car)有时你可能需要加载install.packages("Rcpp")library(Rcpp)install.packages("car")1.三个变量的散点图:scatterplot(mpg~wt|cyl,data=mtcars,lwd=2,main="scatterplot",xlab="weight",ylab="miles",lengend.plot=TRUE,id.method="identity",labels=s(mtcars),boxplot="xy",smoother=loessLine)1231.三个变量的散点图:scatterplot(mpg~w1241242.高密度散点图代码练习:n<-10000c1<-matrix(rnorm(n,mean=0,sd=.5),ncol=2)c2<-matrix(rnorm(n,mean=3,sd=2),ncol=2)mydata<-rbind(c1,c2)mydata<-as.data.frame(mydata)names(mydata)<-c("x","y")1252.高密度散点图125with(mydata,plot(x,y,pch=19,main="ScatterPlotwith10000Observations"))smoothScatter()函数可利用核密度估计生成颜色密度来表示点分布的散点图。with(mydata,smoothScatter(x,y,main="ScatterplotcoloredbySmoothedDensities"))126with(mydata,plot(x,y,pch=19127127(三)、R高级做图128(三)、R高级做图128尝试用更高级点的方法做:Install.packages(“ggplot2”)library(ggplot2)qplot(mtcars$wt,mtcars$mpg)尝试用更高级点的方法做:R-语言基础知识及可视化介绍课件ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与数据无关的绘图分离ggplot2是按图层作图ggplot2保有命令式作图的调整函数,使其更具灵活性ggplot2将常见的统计变换融入到了绘图中ggplot2的核心理念是将绘图与数据分离,数据相关的绘图与理论上如何实现?图层语法定义:一个默认的数据集和一组从变量到图形属性的映射;一个或多个图层,每个都由一种几何对象、一种统计变换和一种位置调整组成,另外数据集和图形属性映射也是可选的;标度,每个图形属性映射都对应一个标度;一个坐标系统;分面设定理论上如何实现?图层语法定义:install.packages("ggplot2")library(ggplot2)第一步:调用ggplot2中的数据mpg;Fueleconomydatafrom1999and2008for38popularmodelsofcar第二步:绘制画布ggplot(data=mpg,mapping=aes(x=cty,y=hwy))133install.packages("ggplot2")133第三步:用geom函数将点、线、多边形等映射到画布上ggplot(data=mpg,mapping=aes(x=cty,y=hwy))+geom_point()第四步:增加其他数据映射,如将变量year映射到颜色中。年份是一个离散变量,使用factor函数转为因子。ggplot(data=mpg,mapping=aes(x=cty,y=hwy,col=factor(year)))+geom_point()134第三步:用geom函数将点、线、多边形等映射到画布上134R-语言基础知识及可视化介绍课件虚拟一组数据做个简单的柱形图,使用ggplot2预览wsj颜色组合的显示效果

library(ggplot2)

install.packages(“ggthemes”)library(ggthemes)df<-data.frame(x=1:6,y=1:6)

p<-ggplot(df,aes(x=x,y=y,fill=factor(x)))+geom_bar(stat="identity")

p+scale_fill_wsj()+theme_wsj()+ggtitle("wsj,ExcelPro")p136虚拟一组数据做个简单的柱形图,使用ggplot2预览wsj137137用ggplot2观察时间的变化时间序列数据可视化最重要的是展示趋势和波动,以方便我们发现其模式。

如:以上证指数为例进行作图,首先利用quantmod包从yahoo数据源获取从1997年以来的数据,存于变量SSEC中,抽取收盘数字,然后分别提取时间数据和指数数值,绘图结果如下图。138用ggplot2观察时间的变化时间序列数据可视化最重要的是展install.packages("quantmod")library(quantmod)library(ggplot2)getSymbols('^SSEC',src='yahoo',from='1997-01-01')close<-(Cl(SSEC))time<-index(close)value<-as.vector(close)p<-ggplot(data.frame(time,value),aes(time,value))p+geom_line()139install.packages("quantmod")13140140用ggplot2观察时间的变化时间序列数据可视化最重要的是展示趋势和波动,以方便我们发现其模式。例如,想了解美国个人储蓄率的可视化,使用ggplot2包中的economics的一部分数据进行观察。用ggplot2观察时间的变化时间序列数据可视化最重要的是展library(ggplot2)install.packages(“ggthemes”)library(ggthemes)p<-ggplot(economics[300:470,],aes(x=date,y=psavert))+geom_area(fill="#76c0c1",size=0.3,position=position_identity())+geom_line(size=1,color="#014d64")+annotate(geom="rect",xmax=as.Date("2001-01-01"),xmin=as.Date("2000-01-01"),ymin=-4,ymax=10,alpha=0.4,color="gray",fill="gray70")+annotate(geom="text",x=as.Date("2000-07-01"),y=7,label="2000")+theme_economist()print(p)library(ggplot2)R-语言基础知识及可视化介绍课件用ggplot中的ggthemes包实现《经济学人》图表的配色效果:加载ggplot和ggthemes包:>library(ggplot2)>library(ggthemes)模拟数据做柱形图:df<-data.frame(x=1:10,y=1:10)p<-ggplot(df,aes(x=x,y=y,fill=factor(y)))+geom_bar(stat="identity")p+scale_fill_economist()+theme_economist()+ggtitle("ECO默认,ExcelPro")用ggplot中的ggthemes包实现《经济学人》图表的配R-语言基础知识及可视化介绍课件尝试添加深色背景区:p+theme_economist(dkpanel=TRUE)+scale_fill_economist()+ggtitle("ECOdkpanel,ExcelPro")尝试添加深色背景区:R-语言基础知识及可视化介绍课件再尝试添加白底效果:p+scale_fill_economist()+theme_economist_white()+ggtitle("ECOwhite,ExcelPro")再尝试添加白底效果:R-语言基础知识及可视化介绍课件

R语言很有用,希望大家喜欢它R-语言基础知识及可视化介绍课件

谢谢!R-语言基础知识及可视化介绍课件R语言基础知识

R语言基础知识测试R对于你有什么用?你属于下面的哪一类?A.只需要做基础的交叉表和最简单的模型,最喜欢按按钮。

B.需要用一些复杂的模型或者最新的方法,有时在只需按按钮的软件中找不到你要的结果,可以忍受打字.C.经常在傻瓜软件中找不到你要的方法,想自己写又无处下手,喜欢打字,甚至有点编程基础.测试R对于你有什么用?答案R对于你有什么用?属于A类的同学:R在你的事业中不会起到重要的作用,可以考虑把宝贵的时间花在个人娱乐方面。属于B类的同学:R可以在你偶尔找不到需要的统计方法时成为你的救命稻草。但是由于你对按按钮有一定的喜爱,你对R会产生畏惧心理。请衡量你的需求程度以及对于打字的厌恶程度来判断你今晚的活动。属于C类的同学:R就是为你而生的.你会有命中注定的感觉。答案R对于你有什么用?为什么?R基本没有几个可以按的按钮,全部结果都需要输入命令才可得到R不会自动作出漂亮的交叉表格,需要输入命令找到相应值,输入到word中作出的表格中。但是!R有最全的,最前沿的,最快更新的统计方法R有最直观的帮助文件,可以自学R免费的R非常灵活,可以作为一个独自的编程语言.是做数据模拟的最好的选择.为什么?R基本没有几个可以按的按钮,全部结果都需要输入命令才入门必备:R语言官方网站:/Rstudio:http:///–simpler推荐:Rcommander:http:///RGUI:http:///_rgui/统计之都:/入门必备:推荐的参考资料AnIntroductiontoR/doc/manuals/R-intro.pdf/manuals.htmlHSAUR:AHandbookofStatisticalAnalysesUsingR/web/packages/HSAUR/R(andS-PLUS)ManualtoAccompanyAgresti’sCategoricalData/~lthompson221/Splusdiscrete2.pdfJ.MaindonaldandJ.Braun(2003),“DataAnalysisandGraphicsUsingR:AnExample-BasedApproach”,CambridgeUniversityPress,

.au/~johnm/.R语言实战(第2版),2016年,卡巴科弗(RobertI.Kabacoff)(作者),王小宁(译者),刘撷芯(译者),黄俊文(译者),等(译者),人民邮电出版社推荐的参考资料AnIntroductiontoR一、R基础应用二、R统计分析三、R可视化操作一、R基础应用(一)软件介绍R系统是一个用于数据处理,分析和作图的统计计算环境。R系统主要包括基础R系统和补充软件包(Packages)两个部分。一个软件包一般专门解决一个统计问题。R最大的特点是代码开源:R基础系统程序的代码,和所有软件包程序的代码都可以自由下载。R系统和所有补充包全部免费,同时可以自己制作补充包供大众下载使用。一、R基础应用(一)软件介绍一、R基础应用R系统的特点 -有效快速的数据储存和数据操作 -齐备的数据分析和处理的系统工具 -灵活的画图显示工具 -有完善的,简单并有效的编程语言

-含有最前沿,最快更新的统计方法OfficialHomepage:http://www.R-可以在其他操作系统上安装对应R系统,像Unixsystems,WindowsplatformsandMacOSX。R在windows上的安装:http:///CRAN/bin/windows/base/R-3.4.0-win.exe运行R:程序->R->R3.4.0R系统的特点(二)、R界面介绍与常用编辑器161基本菜单控制台(二)、R界面介绍与常用编辑器10基本菜单控制台R界面介绍脚本文件用于储存R命令及其注释工作空间可储存现有的数据库及变量改变路径可以设定打开文件,读取文件所用的路径所有的菜单命令都可以通过在控制台输入相应的R命令来实现R界面介绍脚本文件用于储存R命令及其注释R界面介绍对于不同的统计问题可选用不同的补充包处理安装完补充包后,每次打开R还要导入补充包到现有的环境下才可使用里面的函数(functions):也可直接输入

library(packageName)在基础系统上已装好了一些常用的补充包察看已经安装的补充包:library()察看已经导入的补充包:Misc->ListSearchPath或者输入search()R界面介绍对于不同的统计问题可选用不同的补充包处理R常用编辑器2.1Notepad++window操作系统下的最佳选择,完全开源和免费,默认支持R语言的高亮显示,便于中文编码和文本操作。

在windows系统中,直接把.R的后缀名设为使用Notepad++打开是一种最方便的方式。164R常用编辑器2.1Notepad++13165142.2RStudio

目前最流行的R语言编辑器,可以高亮显示代码、主动联想命令,提供R的图形设备、对象管理器、调试工具等高级功能。

如果只进行R语言的开发,RStudio是不二之选。1662.2RStudio15167程序编辑窗口工作空间与历史信息程序运行与输出窗口(主界面)画图和函数包帮助窗口16程序编辑窗口工作空间与历史信息程序运行与输出窗口(主界面2.3包的载入

包的安装是指从某个CRAN镜像站点下载它并将其放入库中的过程。要在R会话中使用它,还需要使用library()命令载入这个包。例如,要使用ggplot2包,执行两行命令install.packages(“ggplot2”)library(ggplot2)可以使用help查看包,如,help(package="gclus")#帮助查看gclus包1682.3包的载入17代码练习1(包的下载与打开):

install.packages("vcd")#安装vcd包(一个用于可视化类别数据的包)help(package="vcd")#列出此包中可用的函数和数据集library(vcd)#载入这个包169代码练习1(包的下载与打开):

18(三)、R的基础命令和变量类型3.1R的基础命令R系统区分大小写,(注意:在使用R时调整为英文输入法)R可取的变量名字在不同操作系统下要求不同。一般任何数字和字母,以及’.’‘_’,都可用于组成变量名字。但是名字第一个字母不可为数字或’_’.如,A32,.a1基础命令包括表达命令(expressions)和转让命令(assignments).表达命令:输入变量名字后会被计算并打印出来。转让命令:输入后会先计算右边的公式结果,并导入到左边的变量名字里。结果不会被打印出来。(三)、R的基础命令和变量类型3.1R的基础命令控制台每行第一个符号’>’表示你可开始输入命令:>a<-2不同命令可用’;’或者enter(新一行)来隔开可用

键来查找控制台上输入过的命令Comments(注释)要用’#’开头,整行会变为comments,无法运行可以把所有要输入的命令存到一个R的脚本(scriptxx.R)文件之中。R有一个简易的脚本文件编辑器。在脚本里运行命令可以先选择需要运行的命令,然后按’F5’.结果在控制台(console)里显示。‘Esc’键可停止正在运行的命令.控制台每行第一个符号’>’表示你可开始输入命令:>a<-23.2变量和赋值

R中的赋值符号有两种方式:<-和=

x<-1

1->x

x=1

assign("x",1)R语句由函数和赋值构成。通常,R使用<-,而不是传统的=作为赋值符号。1723.2变量和赋值 213.3函数:函数一般用来获取一个对象的信息,得到需要的计算结果,或者令R执行特定的命令.如:sum(objectName)取得objectName这个对象的总数每一个函数包括函数名称。如,sum和一些用户可设定的变量(如objectName),变量会放在括号中.每一个函数的功能是不同的每一个函数中的变量的类型是不同的,是被建立这个函数的编程者定义好的(如,对于sum这个函数,objectName里面的值必须得是数字).如:length(a)mode(a)mean(a)了解一个函

温馨提示

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

评论

0/150

提交评论