您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 应用统计分析实验R软件分析解析
应用统计分析实验——R软件R软件:免费的,志愿者管理的软件。编程方便,语言灵活,图形功能强大有不断加入的各个方向统计学家编写的统计软件包。也可以自己加入自己算法的软件包.这是发展最快的软件,受到世界上统计师生的欢迎。是用户量增加最快的统计软件。对于一般非统计工作者来说,主要问题是它没有“傻瓜化”。•R免费资源公开(不是黑盒子,也不是吝啬鬼)•R可以在UNIX,Windows和Macintosh运行.•R有优秀的内在帮助系统.•R有优秀的画图功能•学生能够轻松地转到商业支持的S-Plus程序(如果需要使用商业软件)•R语言有一个强大的,容易学习的语法,有许多内在的统计函数.•通过用户自编程序,R语言很容易延伸和扩大.它就是这样成长的.•R是计算机编程语言.类似于UNIX语言,C语言,Pascal,Gauss语言等.•对于熟练的编程者,它将觉得该语言比其他语言更熟悉.•而对计算机初学者,学习R语言使得学习下一步的其他编程不那么困难.•那些傻瓜软件(SAS,SPSS等)语言的语法则完全不同.R的历史•S语言在1980年代后期在AT&T实验室开发.•R项目由Auckland大学统计系的RobertGentleman和RossIhaka于1995年开始的.•它很快得到广泛用户的欢迎.目前它是由R核心发展团队维持;它是一个由志愿者组成的工作努力的国际团队下载R软件一.R软件的使用1.基本语法2.向量、矩阵3.list与data.frame4.读写数据文件5.控制语句与自定义函数二.数据描述性分析1.分布2.统计量3.一维数据的统计图形4.多维数据的图形表示R软件三.回归分析四.判别分析五.聚类分析六.主成分分析基本语法1.变量使用即定义,变量名区分大小写,可用中文命名变量赋值可采用4种形式:=,-,-,assign()变量类型自动由变量赋值确定。#注释符号,分号;语句连接符例子:a=10a-1010-aassign(“a”,10)A=10A-1010-Aassgin(‘ab’,200)中国=“中华人民共和国”#生成字符串变量assign(“中国”,“中华人民共和国”)a=10;A=10;a;A2.算术运算符:+,-,*,/,^(乘方),%%(模),%/%(整除)3.常用的数学函数有:abs,sign,log,log2,log10,sqrt,exp,sin,cos,tan,acos,asin,atan,cosh,sinh,tanh4.查看帮助,例如:help(round),?abs向量、矩阵1.向量(一维数组,下标从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:5z[7]=8;z[1]12345NA8#缺失数据NAz[c(1,3,5)]=1:3;z[1]12243NA8z[is.na(z)]=0#函数is.na()判断数据是否缺失,将其为真的赋为0z[z3]#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,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)#列合并,要求行数相等4.维数问题dim()#获得维数,返回向量nrow(),ncol()#获得行数和列数rownames(),colnames()#访问各维名称x=matrix(rnorm(24),4,6)x[c(2,1),]#第2和第1行x[,c(1,3)]#第1和第3列x[2,1]#第[2,1]元素x[x[,n]0,n]#第n列大于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(10:15,nrow=3)C=c(100,200)则:A+BA*BA+C1117105210120413192270102205152136901032066.矩阵运算转置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)列表和数据框1.列表是一种特殊的对象集合,各元素类型任意生成:list(name1=value1,…,namen=valuen)访问/修改:对象名[[下标]]或对象名$nameistu=list(age=10,name=“Tom”,interests=c(“swimming”,”drawing”))stu[[2]]stu$namestu$name=“john”names(stu)#得到所有的变量名2.数据框是R的一种数据结构,以矩阵形式保存数据各列类型可以不同,每列为一变量,每行为样品各列长度相等生成:data.frame()stu=data.frame(name=c(“john”,”wuji”),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);xX1X2X311352246x$X2[1]34attributes(x)$names[1]“X1“X2“X3“$row.names[1]12“$class[1]data.framex=data.frame(id=101:120,score=round(rnorm(20,70,10)))x[seq(1,10,2),]x[order(x[[2]],decreasing=T),]x[x[[2]]60,]数据格式及I/O1.读表格形式文本文件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.txtwrite.table(D1,file=“e:\\file_1.txt”)1.分支结构单分支:if(条件)语句if(条件){复合语句;}双分支:if(条件)语句1else语句2多分支:if()语句1elseif()语句2…elseif()语句nelse语句n+1switch:switch(表达式,list)返回list中下标与表达式对应的值例子:x=1;if(x0){a=10;b=10}else{a=20;b=20;}switch(x,1:5,100,20)#12345这三个构成列表list,返回list[x]控制语句2.循环结构for(nameinexpress)expr;#{expr_s}while(condition)expr;#{expr_s}repeat{exprs;if(达到中止条件)break}中止循环语句:break;跳空循环语句:next;例子:完成1到100的求和运算s1=0;j=1;k=1;s2=0;s3=0;for(iin1:100)s1=s1+i;#或者while(j=100){s2=s2+j;j=j+1;}#或者repeat{s3=s3+k;k=k+1;if(k100)break}fun-function(arg1,arg2,…){注意:最后一句表达式的值为返回值}例子:完成一维向量均值运算mymeanmymean=function(x){sum=0;n=length(x)for(jin1:n)sum=sum+x[j]sum=sum/n}meanofx=mymean(1:100);meanofx自定义函数dnorm()#计算正态分布的密度函数pnorm()#计算正态分布的分布函数qnorm()#计算正态分布的分位数rnorm()#计算正态分布的随机数其它分布的关键词:unif,exp,chisq,t,f,binom,poisdexp(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(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)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,…)type=“p”#散点图,默认type=“l’#绘实线type=“o”#实线通过所有的点type=“n”#不画点参数lty表示线的类型0=blank,1=solid(default),2=dashed,3=dotted,4=dotdash,5=longdash,6=twodash低水平作图函数还有points()lines()ablines()text()legend()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,p
本文标题:应用统计分析实验R软件分析解析
链接地址:https://www.777doc.com/doc-4477260 .html