多组和分类数据的描述性统计分析
§3.2多组和分类数据的描述性统计分析17
盒子图
盒子图能够直观简洁地展现数据分布的主要特征.我们在R 中使用boxplot()函数作盒子图.在盒子图中,上下四分位数分别确定中间箱体的顶部和底部,箱体中间的粗线是中位数所在的位置.由箱体向上下伸出的垂直部分为“触须”(whiskers),表示数据的散布范围,其为1.5倍四分位间距内距四分位点最远的数据点.超出此范围的点可看作为异常点(outlier).
§3.2多组和分类数据的描述性统计分析
在对于多组数据的描述性统计量的计算和图形表示方面,前面所介绍的部分方法不能够有效地使用,例如许多函数都不能直接对数据框进行操作.这时我们需要一些其他的函数配合使用.
1.图形表示:
散点图:前面介绍的plot,可直接对数据框操作.此时将绘出数据框中所对应的所有变量两两之间
的散点图.所做图框中第一行的散点图是以第一个变量为纵坐标,分别以第二、三...个变量为横坐标的散点图.这里数据举例说明.
library(DAAG);plot(hills)
盒子图:前面介绍的boxplot,亦可直接对数据框操作,其在同一个作图区域内画出各组数的盒子图.但是注意,此时由于不同组数据的尺度可能差别很大,这样的盒子图很多时候表达出来不是很有意义.boxplot(faithful).因此这样做比较适合多组数据具有同样意义或近似尺度的情形.例如,我们想做某一数值变量在某个因子变量的不同水平下的盒子图.我们可采用类似如下的命令:
boxplot(skullw ~age,data=possum),亦可加上参数horizontal=T,将该盒子图横向放置.
boxplot(possum$skullw ~possum$sex,horizontal=T)
条件散点图:当数据集中含有一个或多个因子变量时,我们可使用条件散点图函数coplot()作出因子变量不同水平下的多个散点图,当然该方法也适用于各种给定条件或限制情形下的作图.其调用格式为
coplot(formula,data)比如coplot(possum[[9]]~possum[[7]] possum[[4]]),或
coplot(skullw ~taill age,data=possum);
coplot(skullw ~taill age+sex,data=possum)
18第3章R :描述性统计量,绘图,参数估计和假设检验
直方图:一个方法就是使用mfrow 将绘图框分隔多个部分,然后直接反复使用hist()对各个变量做直方图.
par(mfrow=c(1,2));hist(faithful[[1]]);hist(faithful[[2]])
另一种直接方法是使用lattice 包中的直方图函数,histogram().lattice 包是一个强大的绘图软件包,我们以后还会对其中的常用函数加以介绍.x <–possum;histogram(~x[[7]] x[[4]])
密度曲线图:这里我们欲绘出某一数值变量在某个因子变量的不同水平下的密度曲线图,可采用lattice 包中的densityplot,举例如下:densityplot(~skullw age,data=possum);densityplot(~skullw sex,data=possum)2.描述性统计分析:
前面介绍的summary()函数可直接对数据框操作.如library(DAAG);summary(cuckoos)?tapply()能够方便地对分组数据进行函数操作.
a1<–tapply(cuckoos$length,cuckoos$species,mean);
a2<–tapply(cuckoos$length,cuckoos$species,sd);
a3<–tapply(cuckoos$length,cuckoos$species,median);
cbind(mean=a1,std=a2,median=a3)
a1<–tapply(cuckoos$length,cuckoos$species,mean);
a2<–tapply(cuckoos$breadth,cuckoos$species,mean);
a3<–tapply(cuckoos$id,cuckoos$species,mean);
an=an=an=a3)
其它函数,如?venum 等,亦可,不过注意此时输出地是一个list.
另外注意对有缺失的数据,使用na.rm=T.
为了计算不同因子变量所对应的各数值变量的描述性统计量,我们还可方便地使用分组概括函数aggregate.该函数作用同tapply 类似,不同的在于其对数据框直接操作,返回值也是数据框.举例来说,
aggregate(cuckoos,list(species=cuckoos$species),mean)
注意这里第二个参数必须是一个列表形式的,因此我们需要使用list 函数将其转化.我们当然也可以才用下面的调用形式来避免使用list.
aggregate(cuckoos,cuckoos[“species”],mean)
我们前面讲过使用subset 提取子数据框,是指观测来提取,即子数据框是在原数据框基础上删去部分观测;而我们亦可提取一定的变量列来构造新的数据框,比如
cuckoos[c(“length”,“breadth”,“id”)];此时我们再使用aggregate 函数
aggregate(cuckoos[c(“length”,“breadth”,“id”)],list(species=cuckoos$species),mean)
§3.3绘图19
by()函数同aggregate类似,只不过对于by,它将数据框中的每列逐一处理,这时那
些不能对数据框直接操作的函数如?venum或者median等函数亦可使用了.
by(cuckoos[c(“length”,“breadth”,“id”)],list(species=cuckoos$species),?venum)
另外,使用tapply,aggregate,及by等函数中的用于计算的函数中要填写其他参数的,直接在函数名的后面填写,比如求分位数
by(cuckoos[c(“length”,“breadth”,“id”)],list(species=cuckoos$species),quantile, probs=0.75)
§3.3绘图
R提供了非常多样的绘图功能.我们可以通过R提供的两组演示例子进行了解:
demo(graphics):二维;demo(persp):三维.
在R的作图函数中,一类是高水平作图,另一类是低水平作图,前者中的函数均可产生图形,可有
坐标轴,以及图和坐标轴的说明文字等;后者自身无法生成图形,只能在前者生成的图形基础上增加新的图形.
高水平作图函数:这其中包括我们前面在描述性统计分析中介绍过的各种具有特殊功能的绘图函数,如:hist(),boxplot(),qqnorm()等.我们下面对几种一般的高级绘图函数给予更详细的说明.
1.plot()函数可绘出各种散点图和曲线图.
(a)plot(x,y):生成y关于x的散点图.
(b)plot(x):生成x关于下标的散点图.
x<–faithful;names(x)=c(“x1”,“x2”);plot(x$x1,type=“o”);plot(x$x1,x$x2);
(c)plot(f):其中f是因子变量.生成f的直方图.
(d)plot(f,y):生成y关于f各水平的boxplot,也就是将不同水平所对应的y各自做盒
子图.
library(DAAG);plot(possum[[4]]);plot(possum[[4]],possum[[7]])
(e)plot(df),其中df是数据框.
2.contour(x,y,z)绘出三维图形的等高曲线图;persp(x,y,z)绘出三维图形的表面曲线.
library(MASS);z<–kde2d(x[[1]],x[[2]]);contour(z).这里我们使用了MASS程序包中的二维核密度估计函数kde2d()来估计二维数据的联合密度函数,再利用该函数画出密度的等高曲线图.
persp(z).做出该估计的密度函数的三维图形的曲线图.
20第3章R:描述性统计量,绘图,参数估计和假设检验
其中persp(x,y,z)常用于刻画二维密度曲线,其中两个参数theta=,phi=,用于改变图形的观察角度,使用中经常根据需要自己变动.
round函数有几个参数persp(z,theta=45,phi=30,xlab=“x”,expand=0.7)
3.高水平绘图中的辅助命令
add=T(默认F)表示所绘图在原图上加图.
axes=F(默认T)表示所绘图形没有坐标轴.我们可以用xaxt=“n”或yaxt=“n”
来选择是否画横纵坐标.hist(cuckoos$length,axes=F);hist(cuckoos$length,axes=T,
xaxt=“n”)
main=“”图的主标题说明,sub=“”图的副标题,xlab,ylab分别是x轴,y轴的说明.
plot(cuckoos$length,cuckoos$breadth,main=“length vs breadth”,sub=“”,xlab=“length”, ylab=“breadth”)
xlim,ylim用于指定轴的上下限.如:
plot(cuckoos$length,cuckoos$breadth,ylim=c(14,19))
log=“x”,log=“y”,log=“xy”表示对x,y轴的数据取对数.
type=“”表示绘图类型.常用的有p(散点图),l(实线),b(所有点被实线链接),o(实
线通过所有的点)
plot(cuckoos$length,type=“l”)
绘图参数
除了低级作图命令之外,图形的显示也可以用绘图参数来改良.绘图参数可以作为图形函
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论