《应用统计分析实验R软.ppt》由会员分享,可在线阅读,更多相关《应用统计分析实验R软.ppt(52页珍藏版)》请在三一办公上搜索。
1、应用统计分析实验 R软件,SPSS:这是一个很受欢迎的统计软件容易操作,输出漂亮,功能齐全,价格合理。对于非统计工作者是很好的选择。,Excel:严格说来不是统计软件,但作为数据表格软件,必然有一定统计计算功能。多数装Office时没有装数据分析的功能,画图功能都具备(虽然不好看)。对于简单分析,Excel还算方便,但随着问题的深入,就不那么“傻瓜”,需要很麻烦地使用函数,甚至根本没有相应的方法了。,SAS:这是功能非常齐全的软件;美国政府政策倾斜(“权威性”)许多美国公司使用。价格不菲,每年交费.即使赠送,条件苛刻尽管现在已经尽量“傻瓜化”,仍然需要一定的训练才可以进入。,S-plus:这是
2、统计学家喜爱的软件。功能齐全,图形漂亮有不断加入的各个方向统计学家编写的统计软件包。也可以自己加入算法.强大而又方便的编程功能,使得研究人员可以编制自己的程序来实现自己的理论和方法。它也在进行“傻瓜化”以争取顾客。但主要以其方便的编程为顾客所青睐。但是对于不会编程者,不那么“傻瓜”,R软件:免费的,志愿者管理的软件。编程方便,语言灵活,图形功能强大有不断加入的各个方向统计学家编写的统计软件包。也可以自己加入自己算法的软件包.这是发展最快的软件,受到世界上统计师生的欢迎。是用户量增加最快的统计软件。对于一般非统计工作者来说,主要问题是它没有“傻瓜化”。,Minitab:这个软件是很方便的功能强大
3、而又齐全的软件,也已经“傻瓜化”,在我国用的不如SPSS与SAS那么普遍。Eviews:这是一个主要处理回归和时间序列的软件。GAUSS:这是一个很好用的统计软件,许多搞经济的喜欢它。主要也是编程功能强大。目前在我国使用的人不多。MATLAB:这也是应用于各个领域的以编程为主的软件,在工程上应用广泛。但是统计方法不多。,使用傻瓜软件的问题.,无法任意取出计算过程中产生的任何中间结果;只能输出软件规定的输出.无法在中间插入任何算法.无法实现软件所没有的计算.无法实现任何方法或计算方面的创新.是输入输出皆有限制的黑盒子.用语句的任何计算(即使1+1=2)都需类似八股文的“花架子”.,搞统计是否不需
4、要学习编程语言,可以不学习,如果你搞纯粹数学推导的,只搞“理论”,不面对数据,不用计算机觉得岁数太大,学不会“非傻瓜”的计算不想有创新,仅使用现成方法套用,但如果你要创新,你需要反复试验你的新方法需要用各种数据来检验你的新方法需要把你的方法和老方法进行比较需要介绍自己的新方法使用编程语言不可避免,R软件,R免费 资源公开(不是黑盒子,也不是吝啬鬼)R可以在UNIX,Windows和Macintosh运行.R 有优秀的内在帮助系统.R有优秀的画图功能学生能够轻松地转到商业支持的 S-Plus程序(如果需要使用商业软件)R语言有一个强大的,容易学习的语法,有许多内在的统计函数.,通过用户自编程序,
5、R语言很容易延伸和扩大.它就是这样成长的.R 是计算机编程语言.类似于UNIX语言,C语言,Pascal,Gauss语言等.对于熟练的编程者,它将觉得该语言比其他语言更熟悉.而对计算机初学者,学习R语言使得学习下一步的其他编程不那么困难.那些傻瓜软件(SAS,SPSS等)语言的语法则完全不同.,R的历史,S语言在1980年代后期在AT它是一个由志愿者组成的工作努力的国际团队,下载R软件,学习网站,R软件的使用基本语法向量、矩阵 list与data.frame读写数据文件控制语句与自定义函数二.数据描述性分析1.分布2.统计量3.一维数据的统计图形4.多维数据的图形表示,R软件,三.回归分析四.
6、判别分析五.聚类分析六.主成分分析,基本语法,1.变量使用即定义,变量名区分大小写,可用中文命名 变量赋值可采用4种形式:=,,assign()变量类型自动由变量赋值确定。#注释符号,分号;语句连接符,例子:a=10 aa assign(“a”,10)A=10 AA assgin(ab,200)中国=“中华人民共和国”#生成字符串变量assign(“中国”,“中华人民共和国”)a=10;A=10;a;A,算术运算符:+,-,*,/,(乘方),%(模),%/%(整除),3.常用的数学函数有:abs,sign,log,log2,log10,sqrt,exp,sin,cos,tan,acos,asi
7、n,atan,cosh,sinh,tanh,4.查看帮助,例如:help(round),?abs,向量、矩阵,向量(一维数组,下标从1开始)a=c(d1,d2,d3,)间隔为1的等差序列:a:b 指定间隔的等差序列:seq(from,to,by)seq(length=,from=,by=)重复函数:rep(vec,times)rep(vec,times,len=,each=),a=c(3,5,8,10)a=1:10;b=seq(1,10,2);c=rep(a,2,each=3)a=seq(-pi,pi,0.2),随机向量 rnorm(10)#10个服从标准正态分布的随机数,z=1:5z7=8;
8、z1 1 2 3 4 5 NA 8#缺失数据 NAzc(1,3,5)=1:3;z1 1 2 2 4 3 NA 8 zis.na(z)=0#函数is.na()判断数据是否缺失,将其为真的赋为0 zz3#z中小于3的元素z(length(z)-1):length(z)#最后二个元素.z-c(1,3)#去掉第1、3元素.,x=rnorm(10)sort(x)order(x),2.矩阵(二维数组)及多维数组 matrix(data=NA,nrow=1,ncol=1,byrow=FALSE,dimnames=NULL)byrow=TRUE 以行序放置,(默认FALSW,以列序)array(data=NA
9、,dim=c(),dimnames=),a=c(1,2,3,4,5,6,7,8,9,10)b=matrix(data=a,nrow=5,ncol=2,byrow=TRUE)c=array(data=1:12,dim=c(2,3,2),3.向量和数组/矩阵的转化 只要定义向量的维数即可实现向量和数组转化例如:c=1:12;a=matrix(c,nrow=2,ncol=6)dim(c)=c(3,4);,A=diag(c(1,4,5)#以向量为对角元生成对角矩阵 a=diag(A)#获取矩阵的对角元,b=as.vector(c),d=rbind(a,a)#行合并,要求列数相等e=cbind(a,a)
10、#列合并,要求行数相等,4.维数问题 dim()#获得维数,返回向量 nrow(),ncol()#获得行数和列数,rownames(),colnames()#访问各维名称,x=matrix(rnorm(24),4,6)xc(2,1),#第2和第1行x,c(1,3)#第1和第3列x2,1#第2,1元素xx,10,1#第1列大于0的元素x,-c(1,3)#没有第1、3列的x.x-2,-c(1,3)#没有第2行、第1、3列的x.,5.基本矩阵运算 矩阵间四则运算:+,-,*,/分别是对应元素的四则运算 向量矩阵间:向量按列匹配与矩阵运算例如:A=matrix(1:6,nrow=3)B=matrix(
11、10:15,nrow=3)C=c(100,200)则:A+B A*B A+C,11 17 10 52 101 204 13 19 22 70 102 20515 21 36 90 103 206,6.矩阵运算 转置 t(mat)行列式 det(mat)逆矩阵 solve(mat)特征 eigen(mat)#返回列表(values,vectors)乘法 A%*%B 向量内积/外积 x%*%y,x%o%y(笛卡尔积)生成对角 diag(Vec)取对角 diag(mat)奇异值分解 svd(mat)mat=UDV 得到列表(d,u,v)qr分解 qr(mat)Choleski分解 chol(mat)
12、,列表和数据框,1.列表是一种特殊的对象集合,各元素类型任意生成:list(name1=value1,namen=valuen)访问/修改:对象名下标 或 对象名$namei,stu=list(age=10,name=“Tom”,interests=c(“swimming”,”drawing”)stu2stu$namestu$name=“john”names(stu)#得到所有的变量名,2.数据框是R的一种数据结构,以矩阵形式保存数据各列类型可以不同,每列为一变量,每行为样品 各列长度相等生成:data.frame(),stu=data.frame(name=c(“john”,”wuji”),
13、age=c(30,32)x=data.frame(matrix(1:6,nrow=2)names(stu)#得到所有的变量名 rownames(stu)#得到行名,attach(x)#把数据框中的变量链接到内存中,x=matrix(1:6,2,3)x=data.frame(x);x X1 X2 X31 1 3 52 2 4 6x$X21 3 4attributes(x)$names1“X1“X2“X3“$row.names1 1 2“$class1 data.frame,x=data.frame(id=101:120,score=round(rnorm(20,70,10)xseq(1,10,2
14、),xorder(x2,decreasing=T),xx260,数据格式及I/O,读表格形式文本文件 read.table(file,header=FALSE,sep=“,)header表示第一行是否有变量名,sep表示数据分割的字符,D1=read.table(“e:test1.txt”,header=TRUE)D2=read.table(“clipboard”),3.计算的数据保存成文本文件或CSV文本文件 write.table(data,file=“”)#纯文本格式,例:将数据D1写入文件 file_1.txt write.table(D1,file=“e:file_1.txt”),1
15、.分支结构 单分支:if(条件)语句 if(条件)复合语句;双分支:if(条件)语句1 else 语句2 多分支:if()语句1 else if()语句2 else if()语句n else 语句n+1 switch:switch(表达式,list)返回list中下标与表达式对应的值,例子:x=1;if(x0)a=10;b=10 else a=20;b=20;switch(x,1:5,100,20)#1 2 3 4 5 这三个构成列表 list,返回 listx,控制语句,2.循环结构 for(name in express)expr;#expr_s while(condition)expr;
16、#expr_s repeat exprs;if(达到中止条件)break 中止循环语句:break;跳空循环语句:next;,例子:完成1到100的求和运算 s1=0;j=1;k=1;s2=0;s3=0;for(i in 1:100)s1=s1+i;#或者 while(j100)break,fun-function(arg1,arg2,)注意:最后一句表达式的值为返回值,例子:完成一维向量均值运算 mymean mymean=function(x)sum=0;n=length(x)for(j in 1:n)sum=sum+xj sum=sum/n meanofx=mymean(1:100);m
17、eanofx,自定义函数,dnorm()#计算正态分布的密度函数pnorm()#计算正态分布的分布函数qnorm()#计算正态分布的分位数rnorm()#计算正态分布的随机数其它分布的关键词:unif,exp,chisq,t,f,binom,pois,dexp(2,10)runif(10,0,10),和分布相关,统计量,mean(),median(),quantile(),var(),sd(),cor()sum(),max(),min()summary()table()#列联表,x=c(10,71:78,90)xm-mean(x)c(xm,mean(x,trim=0.10),A=cbind(c
18、(90,60,70),c(85,66,95)apply(A,1,mean)#对每一行取平均apply(A,2,mean)#对每一列取平均var(A)cor(A),数据的图形表示,x=seq(-10,10,2);y=rnorm(11)par(mfrow=c(3,1)#准备画3个图plot(x,y)plot(x,y,main=散点图,xlab=横坐标x,ylab=纵坐标y)text(x,y,1:length(x),-1)#写入点序号plot(x,y,type=o,col=red,pch=2,lty=3),1.散点图 plot(x,y,)points(),type=“p”#散点图,默认type=“l
19、#绘实线type=“o”#实线通过所有的点type=“n”#不画点参数lty表示线的类型0=blank,1=solid(default),2=dashed,3=dotted,4=dotdash,5=longdash,6=twodash,2.散点图矩阵 pairs(x,),A=matrix(rnorm(12,70,20),nrow=4)pairs(A),3.多组散点图,matplot(x,y,),x=seq(0,2*pi,0.2)matplot(x,cbind(sin(x),cos(x),type=c(o,o),col=2:3),4.星座图 5.脸谱图,library(aplpack)faces
20、(x,nrow.plot,ncol.plot),stars(x,full=TRUE,draw.segments=FALSE),lwl.andrews=function(X)t=seq(-pi,pi,0.2)n=nrow(X)f=matrix(0,nrow=length(t),ncol=n)for(i in 1:n)f,i=Xi,1/sqrt(2)for(j in 2:ncol(X)if(j%2=0)f,i=f,i+Xi,j*sin(j/2*t)else f,i=f,i+Xi,j*cos(j%/%2*t)matplot(t,f,col=1:n,type=o,main=调和曲线图),例1:绘制调和
21、曲线图,hist(x,freq)#直方图,freq=counts,(默认)为频数直方图,freq=TRUE,为频率直方图,freq=FALSE,为密度直方图boxplot(x)#箱线图stem(x)#茎叶图barplot()#柱状图pie()#饼状图,统计图形,a=rnorm(100,70,20);a=aa=0 a=round(a)hist(a),b=rbinom(100,5,0.5)nums=table(b)barplot(nums),例1:31省市地区的消费支出数据,进行如下统计1.计算各地区的人均消费支出总和,并画出柱状图2.计算各消费类型的均值,并画出饼状图和柱状图3.画出各消费类型的
22、箱线图4.画出各地区的雷达图和脸谱图,barplot(apply(X,1,mean),col=heat.colors(31),cex.names=0.5),pie(apply(X,2,mean),barplot(apply(X,2,mean),names=rep(,ncol(X),legend=names(X),col=1:ncol(X),a=rnorm(100,70,20);a=aa=0 a=round(a)b=table(cut(a,breaks=c(0,59,69,79,89,100)pie(b,labels=c(不及格,及格,中等,良好,优秀),例2:对模拟成绩的优良人数统计及画图,实
23、验题,求矩阵B的行列式、逆矩阵、特征根和特征向量及ABA,A=c(1,3,5)B=matrix(1:9,ncol=3,byrow=T)B3,3=10det(B)solve(B)eigen(B)t(A)%*%B%*%A,学号 性别 数学 语文 英语 物理1 3001 男 80 76 81 902 3002 男 55 67 79 633 3003 女 27 52 53 434 3004 女 62 57 66 695 3005 女 94 80 76 716 3006 男 97 59 61 747 3007 男 79 62 78 888 3008 男 70 92 78 839 3009 女 67 66
24、 65 5510 3010 男 97 46 55 7511 3011 男 84 82 88 9212 3012 男 40 57 67 5313 3013 男 72 70 80 8414 3014 男 43 31 56 6015 3015 男 95 75 58 7416 3016 男 62 85 91 8317 3017 女 71 76 68 7418 3018 男 80 40 52 7119 3019 女 96 75 77 8020 3020 女 82 51 73 7721 3021 女 70 73 85 7722 3022 男 61 40 47 5623 3023 女 64 75 66 71
25、24 3024 女 60 21 48 6525 3025 男 81 88 80 8426 3026 女 89 54 65 7127 3027 男 55 38 58 6228 3028 女 60 54 68 6229 3029 男 65 63 65 7530 3030 男 69 55 73 7531 3031 男 80 29 61 6832 3032 男 91 59 73 8533 3033 男 69 73 75 7834 3034 女 90 88 73 8735 3035 女 64 70 72 77,2.某班35人期末成绩见右图绘制四科成绩的散点图矩阵、雷达图和脸谱图绘制前5名学生各科成绩的轮廓图绘制数学与物理成绩的散点图,其中男生与女生用不同的形状点表示。,绘制四科成绩的箱线图计算四科成绩的平均分,并画出柱状图分性别统计四科成绩的平均分,并画出复式柱状图统计数学成绩优良等5级人数,并绘制饼状图计算每个人的总分,并依总分从高到低排序计算四科成绩的相关矩阵,回归分析,lm(yx)#y为向量,x可为向量与矩阵lm(yx+0)#回归方程没有常数项lm(yx+I(x2)lm(yx1+x2),lm(yx1+x2,data=X)#X为数据框,x1,x2为其中列名lm(y.,data=X)lm(yx1+x2+I(x22)-x3,data=X),