软件应用分析报告-应用统计分析实验——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 大学统计系的Robert Gentleman和Ross Ihaka于1995年开始的. 它很快得到广泛用户的欢迎. 目前它是由R核心发展团队维持;它是一个由志愿者组成的工作努力的国际团队 R软件 基本语法 向量、矩阵 列表和数据框 数据格式及I/O 控制语句 自定义函数 统计量 数据的图形表示 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) 统计图形 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",pch=2,lty=3) 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(x,nrow.plot,ncol.plot) stars(x,full=TRUE,draw.segments=FALSE) stars(x,main=“星座图”) stars(x, draw.segments=T,main=“雷达图”) stars(x,location=c(0,0), col.lines=rainbow(n),main=“蜘蛛网图”) 例1. 在同一图中绘制标准正态分布和自由度为5的t分布的概率密度图. plot(x,dnorm(x),type="l",ylab="f(x)",main="概率密度图") lines(x,dt(x,5),col="red",lty=2) legend(2,0.4,c('N(0,1)','t(5)'),lty=1:2,col=c("black","red")) matplot(x,cbind(dnorm(x),dt(x,5)),type="l",ylab="f(x)",main="概率密度图") legend(2,0.4,c('N(0,1)','t(5)'),lty=1:2,col=1:2) 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]=X[i,1]/sqrt(2) for(j in 2:ncol(X)){if (j%%2==0) f[,i]=f[,i]+X[i,j]*sin(j/2*t) elsef[,i]=f[,i]+X[i,j]*cos(j%/%2*t) } } matplot(t,f,col=1:n,type="o",main="调和曲线图") } 例2:绘制调和曲线图 * 下载R软件 学习网站 /pages/newhtm/r/schtml/ R软件的使用 基本语法 向量、矩阵 list与data.frame 读写数据文件 控制语句与自定义函数 二. 数据描述性分析 1.分布 2.统计量 3.一维数据的统计图形 4.多维数据的图形表示 三. 回归分析 四. 判别分析 五. 聚类分析 六. 主成分分析 1. 变量使用即定义,变量名区分大小写, 可用中文命名变量赋值可采用4种形式:=,, assign()变量类型自动由变量赋值确定。
# 注释符号,分号; 语句连接符 例子: a=10aaassign(“a”,10) A=10AAassgin(‘ab’,200) 中国=“中华人民共和国” #生成字符串变量 assign(“中国”, “中华人民共和国”)a=10; A=10; a; A 算术运算符: +,-,*,/,^(乘方),%% (模), %/% (整除)3.常用的数学函数有:abs , sign , log , log2, log10 , sqrt , exp , sin , cos , tan , acos , asin, 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:5 z[7]=8;z [1] 1 2 3 4 5 NA 8# 缺失数据 NA z[c(1,3,5)]=1:3; z [1] 1 2 2 4 3 NA 8 z[is.na(z)]=0 # 函数is.na()判断数据是否缺失 ,将其为真的赋为0z[z0,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+C 11 1710 52101 20413 1922 70102 205 15 2136 90103 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) 1. 列表是一种特殊的对象集合,各元素类型任意 生成: list(name1=value1, …, namen=valuen) 访问/修改:对象名[[下标]] 或 对象名$nameistu=list(age=10, name=“Tom”,interests=c(“swimming”,”drawing”)) stu[[2]] stu$name stu$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);x X1 X2 X3 1 1 3 5 2 2 4 6 x$X2 [1] 3 4 attributes(x) $names [1] “X1" “X2" “X3“ $s [1] "1" "2“ $class [1] "data.frame" x=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]]0) {a=10;b=10} else {a=20; b=20;}switch(x, 1:5, 100, 20) # 1 2 3 4 5这三个构成列表 list,返回 list[x] 2. 循环结构for (name in express) 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( i in 1:100) s1=s1+i;#或者 while(j100) break }fun