探索性数据分析及R 语言的实现
(作者:詹学朋)
摘要:探索性数据分析是数据分析一个重要阶段,应当得到足够重视。本文前部分回顾了探索性数据分析的历史,论述了探索分析的必要性和内容。后半部分先简要介绍了R 语言,再重点介绍R 语言在探索性数据分析中的应用。
关键字:探索性数据分析;R 语言;数据分析;图形
文章索引:
1. 探索性数据分析的简要介绍
2. 探索性数据分析的必要性和意义
3. 探索分析的内容和考察方法
3.1探索分析的内容
3.2探索分析的考察方法
4. R 语言的简介
5. R 语言的探索性分析功能
5.1主要分析工具
5.2单变量数据分析
5.3双变量数据分析
5.4R 语言的高级制图功能
6. 总结
1. 探索性数据分析的简要介绍
探索性数据分析(Exploratory Data Analysis, EDA )首先由J.W.Tukey 提出的。Tukey 从生物学家那里学了许多分析数据的方法,并引入统计学中。1977年,Tukey 出版了他的名著《探索性数据分析》(UNDERSTANDING ROBUST AND EXPLORATORY DATA ANALYSIS ),引起了统计学界的关注,成为探索分析的第一个正式出版物。80年代后期,我国一些统计学者将这本著作介绍给我国统计学界,对我国统计学理论研究和统计事业的实践起到了积极作用。此后,国内也有不少关于探索性数据分析方法的文章发表到各种统计刊物。
随着计算机技术的飞跃发展,以及数据的复杂性越来越强,实施探索性数据分析成为数据分析中不可替代的一部分,从而在统计分析的过程中发挥着越来重要的作用。2. 探索性数据分析的必要性和意义
统计学原理告诉我们,搜集到的数据在建立数据文件以后,并非立即投入统计分析,因为数据结构、数据中隐含的内在统计规律等尚不清楚,需要对数据进行考察和探索。
因此,应用数据分析的整个操作步骤大体可以划分为两大阶段:探索阶段和证实阶段。探索性数据分析分分离出数据的模式和特点,把他们有力地显示给分析者。常常,分析者现对数据做探索性数据分析,而后才能有把握地选择结构分量或随机分量的模型;探索性数据分析还可以用来揭示:数据对于常见模型的意想不到的偏离。探索性方法的要点是灵活性:它既要灵活适应数据的结构,也要对后续分析步骤揭露的模式灵活反应。
证实性数据分析评估观察到的模式或效应的再现性。传统的统计推断提供显著性或置信性陈述,证实性分析和它。可是,证实阶段通常还包括:(1)将其他密切有关数据的信息结合进来;(2)通过收集和分析新数据确认结果。
总之,探索性数据分析强调灵活探求线索和证据;而证实性数据分析则着重评估现有证据。探索性数据分析与证实性数据分析在具体运用上可交叉进行, 探索性数据分析不仅可用
在正式建立统计分析模型之前, 而且还可用在正式建立统计分析模型之后, 对所拟合的统计模型进行进一步的检查、验证, 提高统计分析的质量。
3. 探索分析的内容和考察方法
3.1探索分析的内容
●检查数据是否有错误:过大过小的数据均有可能是奇异值、影响点或错误数据。要找出
这样的数据,并分析原因,然后决定是否从分析中删除这些数据。因为奇异值和影响点往往对分析的影响较大,不能真实反映数据的总体特征。
●获得数据分布特征:很多分析方法对数据分布有一定的要求,例如很多检验就需要数据
分布服从正态分布。因此检验数据是否正态分布,就决定了它们是否能用只对正态分布数据适用的分析方法。
●对数据规律的初步观察:通过初步观察获得数据的一些内部规律,例如两个变量间是否
线性相关。
3.2探索分析的考察方法
探索分析一般通过数据文件在分组与不分组的情况下,获得常用统计量和图形。一般以图形方式输出,直观帮助用户确定奇异值、影响点、进行假设检验,以及确定用户要使用的某种统计方式是否适合。、
4. R 语言的简介
R 是集统计分析与直观的图形显示于一体,并且属于GNU 系统的一个自由、免费、源代码开放的软件。R 作为一个计划(project ),最早(1995年)是由Auckland 大学统计系的Robert Gentlemen 和Ross lhaka 开始编制,目前由R 核心开发小组(R Development Core Team )维护,完全自愿、工作努力负责,并将全球优秀的统计应用软件打包提供给我们。可以通过R 计划的网站了解有关R 的最新信息和使用说明,得到最新版本的件和基于R 的应用统计软件包。此外,还有来自世界各地,可能从事各种各工作的R 的拥护者,他们也自愿为R 的发展做出了自己的贡献。
相对其他同类软件,R 语言的特色在于:
(1)有效的数据处理和保存机制。
(2)拥有一整套数组和矩阵操作运算符。
(3)一系列连贯而又完整的数据分析中间工具。
(4)图形统计可以对数据直接进行分析和显示,可用于多种图形设备。
(5)一种相当完善、简洁和高效的程序设计语言。它包括条件语句、循环语句、用户自定义的递归函数以及输入输出接口。
(6)R是彻底面向对象的统计编程语言。
(7)R和其它编程语言、数据库之间有很好的接口。
(8)R是自由软件,可以光明正大的使用:但其功能不比任何其它同类软件差。
(9)R具有丰富的网上资源,更为重要一点的是R 提供了非常丰富的程序包,除了推荐的标准包外还有很多志愿者贡献的贡献包,可以直接利用这些包,大大提高工作效率。
5. R 语言的探索性分析功能
5.1主要分析工具
探索分析的工具包括数据的图形表示和解释。主要的图形表示方法有(括号中为R 语言的绘图函数)
●条图(barplot ):用于分类数据。
直方图(hist )、点图(dotchart )、茎叶图(stem ):用于观察数值型分布的形状。箱线图(boxplot ):给出数值型分布的汇总数据,适用于不同分布的比较和拖尾、截尾分布的识别。
●正态概率图(qqnorm ):用于观察数据是否近似地服从正态分布。
在R 语言里,我们编写一个简单的程序,将以上一些用于探索分析的图形函数整合成一个函数EDA ,来对数据进行全面探索分析:
EDA
{
par(mfrow=c(2,2))#同时做4个图
hist(x)#直方图
dotchart(x)#点图
boxplot(x,horizontal=T)#箱式图
qqnorm(x);qqline(x)#正态概率图
par(mfrow=c(1,1))#恢复单图
}
例如,收集某沿海发达城市2005年66个年薪超过10万元的大公司的总经理的收入(10万为单位),用变量pay 表示:pay=c(11,19,14,22,14,28,13,81,12,43,11,16,31,16,23,42,22,26,17,22,13,27,108,16,43,82,14,11,51,76,28,66,29,14,14,65,37,16,37,35,39,27,14,17,13,38,28,40,85,32,25, 26,16,12,54,40,18,27,16,14,33,29,77,50,19,34) 。为了对这些薪酬的分布状况作探索性分析,我们在R 软件控制台中输入EDA (pay )
,系统输入如下结果:●●
图1. 总经理年薪的探索性探索性数据分析
从图形中,我们看到该数据呈严重的偏态分布,而且是右偏分布。数据变换看来是必须的,为此我们可以试试对数变换(以10为底):
log.pay =log10(pay)
EDA(log.pay)
经过数据变换后我们看到分布图基本对称,并可帮助我们更好的理解实际的分布(近似服从对数正态分布)。对于此种数据须使用稳健方法去分析,比如使用中位数或进行数据换。
图2. 对数变换后的总经理的年薪数据分析
5.2单变量数据分析
5.2.1分类型数据
统计学上把取值范围是有限个值或是一个数列构成的变量成为离散变量,其中表示分类情况的离散变量又称为分类变量。对于分类数据我们可以用频数来分析,也可以用条形图和饼图描述。
假如对一组2人的饮酒者所饮酒类进行调查,把饮酒者按红酒(1)、白酒(2)、黄酒(3)、啤酒(4)、分成四类。调查数据如下:3,4,1,1,3,4,3,3,1,3,2,1,2,1,2,3,2,3,1,1,1,1,4,3,1。用拼图分析如下:
drink=c(3,4,1,1,3,4,3,3,1,3,2,1,2,1,2,3,2,3,1,1,1,1,4,3,1)
drink.count=table(drink)#y数据分组后赋值给drinks.count 。
names(drink.count)=c("红酒"," 白酒"," 黄酒"," 啤酒")
pie(drink.count,col=c("purple","green","cyan","white"))pie(drink.count)
图3饮酒数据的饼图
5.2.2数值型数据
对于数值型数据,经常要分析一个分布的集中趋势和离散程度,用来描述集中趋势的主要有均值、中位数,在R 中对应的命令为mean()、median();描述离散程度的主要有方差、标准差,在R 中对应的命令为var()、sd()。利用均值和方差描述集中趋势和离散程度往往基于正态分布,而如果数据是长尾或是有异常值时,这时用均值和方差就不能正确地描述集中趋势和离散程度。而中位数来描述集中趋势则是稳健的,不易受异常值影响。
此外,在R 语言中,我们还可以利用截尾均值来描述,只要在mean 函数里对trim 参数进行设置就可以了。Mean(X,trim=0.2),表示对变量X 截去两头20%后的均值。
由于绘制直方图时需要先对数据进行分组汇总,因此对样本较小的情形,直方图会损失一部分信息,此时可以用茎叶图来进行更精确的描述。R 里作茎叶图很简单,只要用函数stem ()就可以了。一个企业财务部员工的月工资数据所构成的向量为salary=c(2000,2100,2200,2300,2350,2450,2500,2700,2900,2850,3500,3800,2600,3000,3300,3200,4000,3100,4200) 。在R 语言中作茎叶图命令:stem(salary),结果如下:
The decimal point is 3digit(s)to the right of the
2|01234
2|556799
3|0123
3|58
4|02
可以看出该部门工资主要集中在2000~4000之间。和直方图相比,茎叶图在反应数据整体分布趋势的同时还能够精确地反映出具体的数值大小,因此在小样本情况下优势非常明显。该图在国外非常流行。茎叶图在分析异常值时也显得特别有用,例如该部门经理的工资是15000元/月,如果求该部门员工平均工资把它纳入计算范围显然不合适,导致结果偏大。利用茎叶图能够很好的识别这样的异常数据:
>salarym=c(salary,15000)
>stem(salarym)
The decimal point is 4digit(s)to the right of the |
0|[***********]4
0|
1|
1|5
从该图上也可以发现,15000的确是一个异常数据。
箱线图和直方图一样都是用于考察连续变量的分布情况,但它的功能和直方图并不重叠,直方图侧重于对一个连续变量的分布情况进行考察,而箱线图更注重于勾勒出统计的主要信息,并且便于对多个连续变量同时考察,或者对一个变量分组进行考察,在使用上要比直方图灵活,用途也更为广泛。在R 里做箱线图的函数是boxplot(),而且可以设置垂直型和水平型。例如我们对上面的工资数据做箱线图。
Boxplot(salary)
Boxplot(salary,horizontal=T)
图4工资的箱线图
5.3双变量数据分析
5.3.1数值型对数值型数据
简单分析两个数值变量的关系,经常使用散点图。在R 里画散点图非常简单,只要用plot ()函数就可以了。下面对1985~2001年我国财政收入(y ,百亿元)和税收(x ,百亿元)数据,用散点图分析税收和财政收入之间的关系。
plot(x,y)#作x,y 变量的散点图
abline(lm(y~x))#
增添趋势线
图5. 税收与财政收入之间关系的散点图和趋势线图6两变量的箱线图对比
从图5中很容易看出x ,y 之间有很强的线性关系,即税收与财政收入之间有很强的正相关性。在此基础上可以添加回归线,各个点大致分布在回归线的两边。
5.3.2分类数据对数值型数据
可以用boxplot()函数做出箱线图,即两样本的均值检验,考察两样本的均值是否相同。
实验组:5, 5, 13, 7, 11, 11, 9, 8, 9
对照组:11, 8, 4, 5, 9, 5, 10, 5, 4, 10
>x=c(5,5,13,7,11,11,9,8,9)
>y=c(11,8,4,5,9,5,10,5,4,10)
>boxplot(x,y,names=c('实验组',' 对照组'),col=c(2,3))
结果如图6所示,可以看出实验组的均值要大于对照组的均值,且两组都是偏态分布,实验组左偏,对照组右偏。
5.4R 语言的高级作图
R 不仅能很容易地作出一元、二元数据的图形,而且在处理三维以上的数据也有着不可替代的优势。通过调用相关的函数,可以很容易的绘制出轮廓图,星图,调和曲线图这些高难度的图形,便于对复杂数据的探索性分析。下面只以星图为例说明R 的高级制图功能。
为考察学生的学习情况,学校随机抽取12名学生的5门课期末考试成绩,数据存在文件course.data 。调用stars()函数绘制星象图:
>X=read.table(“course.data”)
>stars(X,full=T,draw.segments=T,key.loc=c(5,1))
图7. 12名学生5门课程的考试成绩的星图(带参数)
从图7中很容易看出1,2号学生学习成绩优秀,11,12号学生学习成绩较差。而且能看出每个学生在各科成绩的好坏,如10号学生偏科。
6.总结
探索性数据分析技术能帮助我们,以不那么正式的方式对付一组数据,直截了当把我们导向数据的结构。侧重先灵活探究数据,强调图示以观察数据,是探索性数据分析的主要贡献。而R 语言强大而且灵活的制图功能在探索性分析中充分体现了它的优越性,正因为如此本文用R 语言展示了它探索分析中的应用。总之,探索性数据分析在当今软件计算机如此发达的时代,其作用得到了越来越充分的体现,没有探索性分析, 证实性分析往往是盲目的, 缺乏根据的; 没有证实性分析, 探索性分析则永远是一次没有完成的统计分析。
【参考文献】
[1]J.W. Tukey. Exploratory Data Analysis[M].Addision-Mesley Publishing Company, 1997.
[2]R Development Core Team (2005).R:A language and envi-ronment for statistical
computing. R Foundation for Statisti-cal Computing, Vienna, Austria. ISBN 3-900051-07-0, URL:http://www.R-project.org.
[3]王斌会著.R 语言统计分析软件教程. 中国教育文化出版社,2007.1.1
[4]薛毅,陈立萍著. 统计建模与R 软件. 清华大学出版社,2007.4.1
[5]贾俊萍著. 统计学(第二版). 清华大学出版社,2006.7
探索性数据分析及R 语言的实现
(作者:詹学朋)
摘要:探索性数据分析是数据分析一个重要阶段,应当得到足够重视。本文前部分回顾了探索性数据分析的历史,论述了探索分析的必要性和内容。后半部分先简要介绍了R 语言,再重点介绍R 语言在探索性数据分析中的应用。
关键字:探索性数据分析;R 语言;数据分析;图形
文章索引:
1. 探索性数据分析的简要介绍
2. 探索性数据分析的必要性和意义
3. 探索分析的内容和考察方法
3.1探索分析的内容
3.2探索分析的考察方法
4. R 语言的简介
5. R 语言的探索性分析功能
5.1主要分析工具
5.2单变量数据分析
5.3双变量数据分析
5.4R 语言的高级制图功能
6. 总结
1. 探索性数据分析的简要介绍
探索性数据分析(Exploratory Data Analysis, EDA )首先由J.W.Tukey 提出的。Tukey 从生物学家那里学了许多分析数据的方法,并引入统计学中。1977年,Tukey 出版了他的名著《探索性数据分析》(UNDERSTANDING ROBUST AND EXPLORATORY DATA ANALYSIS ),引起了统计学界的关注,成为探索分析的第一个正式出版物。80年代后期,我国一些统计学者将这本著作介绍给我国统计学界,对我国统计学理论研究和统计事业的实践起到了积极作用。此后,国内也有不少关于探索性数据分析方法的文章发表到各种统计刊物。
随着计算机技术的飞跃发展,以及数据的复杂性越来越强,实施探索性数据分析成为数据分析中不可替代的一部分,从而在统计分析的过程中发挥着越来重要的作用。2. 探索性数据分析的必要性和意义
统计学原理告诉我们,搜集到的数据在建立数据文件以后,并非立即投入统计分析,因为数据结构、数据中隐含的内在统计规律等尚不清楚,需要对数据进行考察和探索。
因此,应用数据分析的整个操作步骤大体可以划分为两大阶段:探索阶段和证实阶段。探索性数据分析分分离出数据的模式和特点,把他们有力地显示给分析者。常常,分析者现对数据做探索性数据分析,而后才能有把握地选择结构分量或随机分量的模型;探索性数据分析还可以用来揭示:数据对于常见模型的意想不到的偏离。探索性方法的要点是灵活性:它既要灵活适应数据的结构,也要对后续分析步骤揭露的模式灵活反应。
证实性数据分析评估观察到的模式或效应的再现性。传统的统计推断提供显著性或置信性陈述,证实性分析和它。可是,证实阶段通常还包括:(1)将其他密切有关数据的信息结合进来;(2)通过收集和分析新数据确认结果。
总之,探索性数据分析强调灵活探求线索和证据;而证实性数据分析则着重评估现有证据。探索性数据分析与证实性数据分析在具体运用上可交叉进行, 探索性数据分析不仅可用
在正式建立统计分析模型之前, 而且还可用在正式建立统计分析模型之后, 对所拟合的统计模型进行进一步的检查、验证, 提高统计分析的质量。
3. 探索分析的内容和考察方法
3.1探索分析的内容
●检查数据是否有错误:过大过小的数据均有可能是奇异值、影响点或错误数据。要找出
这样的数据,并分析原因,然后决定是否从分析中删除这些数据。因为奇异值和影响点往往对分析的影响较大,不能真实反映数据的总体特征。
●获得数据分布特征:很多分析方法对数据分布有一定的要求,例如很多检验就需要数据
分布服从正态分布。因此检验数据是否正态分布,就决定了它们是否能用只对正态分布数据适用的分析方法。
●对数据规律的初步观察:通过初步观察获得数据的一些内部规律,例如两个变量间是否
线性相关。
3.2探索分析的考察方法
探索分析一般通过数据文件在分组与不分组的情况下,获得常用统计量和图形。一般以图形方式输出,直观帮助用户确定奇异值、影响点、进行假设检验,以及确定用户要使用的某种统计方式是否适合。、
4. R 语言的简介
R 是集统计分析与直观的图形显示于一体,并且属于GNU 系统的一个自由、免费、源代码开放的软件。R 作为一个计划(project ),最早(1995年)是由Auckland 大学统计系的Robert Gentlemen 和Ross lhaka 开始编制,目前由R 核心开发小组(R Development Core Team )维护,完全自愿、工作努力负责,并将全球优秀的统计应用软件打包提供给我们。可以通过R 计划的网站了解有关R 的最新信息和使用说明,得到最新版本的件和基于R 的应用统计软件包。此外,还有来自世界各地,可能从事各种各工作的R 的拥护者,他们也自愿为R 的发展做出了自己的贡献。
相对其他同类软件,R 语言的特色在于:
(1)有效的数据处理和保存机制。
(2)拥有一整套数组和矩阵操作运算符。
(3)一系列连贯而又完整的数据分析中间工具。
(4)图形统计可以对数据直接进行分析和显示,可用于多种图形设备。
(5)一种相当完善、简洁和高效的程序设计语言。它包括条件语句、循环语句、用户自定义的递归函数以及输入输出接口。
(6)R是彻底面向对象的统计编程语言。
(7)R和其它编程语言、数据库之间有很好的接口。
(8)R是自由软件,可以光明正大的使用:但其功能不比任何其它同类软件差。
(9)R具有丰富的网上资源,更为重要一点的是R 提供了非常丰富的程序包,除了推荐的标准包外还有很多志愿者贡献的贡献包,可以直接利用这些包,大大提高工作效率。
5. R 语言的探索性分析功能
5.1主要分析工具
探索分析的工具包括数据的图形表示和解释。主要的图形表示方法有(括号中为R 语言的绘图函数)
●条图(barplot ):用于分类数据。
直方图(hist )、点图(dotchart )、茎叶图(stem ):用于观察数值型分布的形状。箱线图(boxplot ):给出数值型分布的汇总数据,适用于不同分布的比较和拖尾、截尾分布的识别。
●正态概率图(qqnorm ):用于观察数据是否近似地服从正态分布。
在R 语言里,我们编写一个简单的程序,将以上一些用于探索分析的图形函数整合成一个函数EDA ,来对数据进行全面探索分析:
EDA
{
par(mfrow=c(2,2))#同时做4个图
hist(x)#直方图
dotchart(x)#点图
boxplot(x,horizontal=T)#箱式图
qqnorm(x);qqline(x)#正态概率图
par(mfrow=c(1,1))#恢复单图
}
例如,收集某沿海发达城市2005年66个年薪超过10万元的大公司的总经理的收入(10万为单位),用变量pay 表示:pay=c(11,19,14,22,14,28,13,81,12,43,11,16,31,16,23,42,22,26,17,22,13,27,108,16,43,82,14,11,51,76,28,66,29,14,14,65,37,16,37,35,39,27,14,17,13,38,28,40,85,32,25, 26,16,12,54,40,18,27,16,14,33,29,77,50,19,34) 。为了对这些薪酬的分布状况作探索性分析,我们在R 软件控制台中输入EDA (pay )
,系统输入如下结果:●●
图1. 总经理年薪的探索性探索性数据分析
从图形中,我们看到该数据呈严重的偏态分布,而且是右偏分布。数据变换看来是必须的,为此我们可以试试对数变换(以10为底):
log.pay =log10(pay)
EDA(log.pay)
经过数据变换后我们看到分布图基本对称,并可帮助我们更好的理解实际的分布(近似服从对数正态分布)。对于此种数据须使用稳健方法去分析,比如使用中位数或进行数据换。
图2. 对数变换后的总经理的年薪数据分析
5.2单变量数据分析
5.2.1分类型数据
统计学上把取值范围是有限个值或是一个数列构成的变量成为离散变量,其中表示分类情况的离散变量又称为分类变量。对于分类数据我们可以用频数来分析,也可以用条形图和饼图描述。
假如对一组2人的饮酒者所饮酒类进行调查,把饮酒者按红酒(1)、白酒(2)、黄酒(3)、啤酒(4)、分成四类。调查数据如下:3,4,1,1,3,4,3,3,1,3,2,1,2,1,2,3,2,3,1,1,1,1,4,3,1。用拼图分析如下:
drink=c(3,4,1,1,3,4,3,3,1,3,2,1,2,1,2,3,2,3,1,1,1,1,4,3,1)
drink.count=table(drink)#y数据分组后赋值给drinks.count 。
names(drink.count)=c("红酒"," 白酒"," 黄酒"," 啤酒")
pie(drink.count,col=c("purple","green","cyan","white"))pie(drink.count)
图3饮酒数据的饼图
5.2.2数值型数据
对于数值型数据,经常要分析一个分布的集中趋势和离散程度,用来描述集中趋势的主要有均值、中位数,在R 中对应的命令为mean()、median();描述离散程度的主要有方差、标准差,在R 中对应的命令为var()、sd()。利用均值和方差描述集中趋势和离散程度往往基于正态分布,而如果数据是长尾或是有异常值时,这时用均值和方差就不能正确地描述集中趋势和离散程度。而中位数来描述集中趋势则是稳健的,不易受异常值影响。
此外,在R 语言中,我们还可以利用截尾均值来描述,只要在mean 函数里对trim 参数进行设置就可以了。Mean(X,trim=0.2),表示对变量X 截去两头20%后的均值。
由于绘制直方图时需要先对数据进行分组汇总,因此对样本较小的情形,直方图会损失一部分信息,此时可以用茎叶图来进行更精确的描述。R 里作茎叶图很简单,只要用函数stem ()就可以了。一个企业财务部员工的月工资数据所构成的向量为salary=c(2000,2100,2200,2300,2350,2450,2500,2700,2900,2850,3500,3800,2600,3000,3300,3200,4000,3100,4200) 。在R 语言中作茎叶图命令:stem(salary),结果如下:
The decimal point is 3digit(s)to the right of the
2|01234
2|556799
3|0123
3|58
4|02
可以看出该部门工资主要集中在2000~4000之间。和直方图相比,茎叶图在反应数据整体分布趋势的同时还能够精确地反映出具体的数值大小,因此在小样本情况下优势非常明显。该图在国外非常流行。茎叶图在分析异常值时也显得特别有用,例如该部门经理的工资是15000元/月,如果求该部门员工平均工资把它纳入计算范围显然不合适,导致结果偏大。利用茎叶图能够很好的识别这样的异常数据:
>salarym=c(salary,15000)
>stem(salarym)
The decimal point is 4digit(s)to the right of the |
0|[***********]4
0|
1|
1|5
从该图上也可以发现,15000的确是一个异常数据。
箱线图和直方图一样都是用于考察连续变量的分布情况,但它的功能和直方图并不重叠,直方图侧重于对一个连续变量的分布情况进行考察,而箱线图更注重于勾勒出统计的主要信息,并且便于对多个连续变量同时考察,或者对一个变量分组进行考察,在使用上要比直方图灵活,用途也更为广泛。在R 里做箱线图的函数是boxplot(),而且可以设置垂直型和水平型。例如我们对上面的工资数据做箱线图。
Boxplot(salary)
Boxplot(salary,horizontal=T)
图4工资的箱线图
5.3双变量数据分析
5.3.1数值型对数值型数据
简单分析两个数值变量的关系,经常使用散点图。在R 里画散点图非常简单,只要用plot ()函数就可以了。下面对1985~2001年我国财政收入(y ,百亿元)和税收(x ,百亿元)数据,用散点图分析税收和财政收入之间的关系。
plot(x,y)#作x,y 变量的散点图
abline(lm(y~x))#
增添趋势线
图5. 税收与财政收入之间关系的散点图和趋势线图6两变量的箱线图对比
从图5中很容易看出x ,y 之间有很强的线性关系,即税收与财政收入之间有很强的正相关性。在此基础上可以添加回归线,各个点大致分布在回归线的两边。
5.3.2分类数据对数值型数据
可以用boxplot()函数做出箱线图,即两样本的均值检验,考察两样本的均值是否相同。
实验组:5, 5, 13, 7, 11, 11, 9, 8, 9
对照组:11, 8, 4, 5, 9, 5, 10, 5, 4, 10
>x=c(5,5,13,7,11,11,9,8,9)
>y=c(11,8,4,5,9,5,10,5,4,10)
>boxplot(x,y,names=c('实验组',' 对照组'),col=c(2,3))
结果如图6所示,可以看出实验组的均值要大于对照组的均值,且两组都是偏态分布,实验组左偏,对照组右偏。
5.4R 语言的高级作图
R 不仅能很容易地作出一元、二元数据的图形,而且在处理三维以上的数据也有着不可替代的优势。通过调用相关的函数,可以很容易的绘制出轮廓图,星图,调和曲线图这些高难度的图形,便于对复杂数据的探索性分析。下面只以星图为例说明R 的高级制图功能。
为考察学生的学习情况,学校随机抽取12名学生的5门课期末考试成绩,数据存在文件course.data 。调用stars()函数绘制星象图:
>X=read.table(“course.data”)
>stars(X,full=T,draw.segments=T,key.loc=c(5,1))
图7. 12名学生5门课程的考试成绩的星图(带参数)
从图7中很容易看出1,2号学生学习成绩优秀,11,12号学生学习成绩较差。而且能看出每个学生在各科成绩的好坏,如10号学生偏科。
6.总结
探索性数据分析技术能帮助我们,以不那么正式的方式对付一组数据,直截了当把我们导向数据的结构。侧重先灵活探究数据,强调图示以观察数据,是探索性数据分析的主要贡献。而R 语言强大而且灵活的制图功能在探索性分析中充分体现了它的优越性,正因为如此本文用R 语言展示了它探索分析中的应用。总之,探索性数据分析在当今软件计算机如此发达的时代,其作用得到了越来越充分的体现,没有探索性分析, 证实性分析往往是盲目的, 缺乏根据的; 没有证实性分析, 探索性分析则永远是一次没有完成的统计分析。
【参考文献】
[1]J.W. Tukey. Exploratory Data Analysis[M].Addision-Mesley Publishing Company, 1997.
[2]R Development Core Team (2005).R:A language and envi-ronment for statistical
computing. R Foundation for Statisti-cal Computing, Vienna, Austria. ISBN 3-900051-07-0, URL:http://www.R-project.org.
[3]王斌会著.R 语言统计分析软件教程. 中国教育文化出版社,2007.1.1
[4]薛毅,陈立萍著. 统计建模与R 软件. 清华大学出版社,2007.4.1
[5]贾俊萍著. 统计学(第二版). 清华大学出版社,2006.7