1、探索性数据分析及 R 语言的实现( 作者:詹学朋 )摘要:探索性数据分析是数据分析一个重要阶段,应当得到足够重视。本文前部分回顾了探索性数据分析的历史,论述了探索分析的必要性和内容。后半部分先简要介绍了 R 语言,再重点介绍 R 语言在探索性数据分析中的应用。关键字:探索性数据分析;R 语言;数据分析;图形文章索引:1. 探索性数据分析的简要介绍2. 探索性数据分析的必要性和意义3. 探索分析的内容和考察方法3.1 探索分析的内容3.2 探索分析的考察方法4. R 语言的简介5. R 语言的探索性分析功能5.1 主要分析工具5.2 单变量数据分析5.3 双变量数据分析5.4 R 语言的高级制图
2、功能6.总结1. 探索性数据分析的简要介绍探索性数据分析(Exploratory Data Analysis, EDA)首先由 J.W.Tukey 提出的。Tukey从生物学家那里学了许多分析数据的方法,并引入统计学中。1977 年,Tukey 出版了他的名著探索性数据分析 (UNDERSTANDING ROBUST AND EXPLORATORY DATA ANALYSIS) ,引起了统计学界的关注,成为探索分析的第一个正式出版物。80 年代后期,我国一些统计学者将这本著作介绍给我国统计学界,对我国统计学理论研究和统计事业的实践起到了积极作用。此后,国内也有不少关于探索性数据分析方法的文章发
3、表到各种统计刊物。随着计算机技术的飞跃发展,以及数据的复杂性越来越强,实施探索性数据分析成为数据分析中不可替代的一部分,从而在统计分析的过程中发挥着越来重要的作用。2. 探索性数据分析的必要性和意义统计学原理告诉我们,搜集到的数据在建立数据文件以后,并非立即投入统计分析,因为数据结构、数据中隐含的内在统计规律等尚不清楚,需要对数据进行考察和探索。因此,应用数据分析的整个操作步骤大体可以划分为两大阶段:探索阶段和证实阶段。探索性数据分析分分离出数据的模式和特点,把他们有力地显示给分析者。常常,分析者现对数据做探索性数据分析,而后才能有把握地选择结构分量或随机分量的模型;探索性数据分析还可以用来揭
4、示:数据对于常见模型的意想不到的偏离。探索性方法的要点是灵活性:它既要灵活适应数据的结构,也要对后续分析步骤揭露的模式灵活反应。证实性数据分析评估观察到的模式或效应的再现性。传统的统计推断提供显著性或置信性陈述,证实性分析和它。可是,证实阶段通常还包括:(1)将其他密切有关数据的信息结合进来;(2)通过收集和分析新数据确认结果。总之,探索性数据分析强调灵活探求线索和证据;而证实性数据分析则着重评估现有证据。探索性数据分析与证实性数据分析在具体运用上可交叉进行, 探索性数据分析不仅可用在正式建立统计分析模型之前, 而且还可用在正式建立统计分析模型之后, 对所拟合的统计模型进行进一步的检查、验证,
5、 提高统计分析的质量。3. 探索分析的内容和考察方法3.1 探索分析的内容 检查数据是否有错误:过大过小的数据均有可能是奇异值、影响点或错误数据。要找出这样的数据,并分析原因,然后决定是否从分析中删除这些数据。因为奇异值和影响点往往对分析的影响较大,不能真实反映数据的总体特征。 获得数据分布特征:很多分析方法对数据分布有一定的要求,例如很多检验就需要数据分布服从正态分布。因此检验数据是否正态分布,就决定了它们是否能用只对正态分布数据适用的分析方法。 对数据规律的初步观察:通过初步观察获得数据的一些内部规律,例如两个变量间是否线性相关。3.2 探索分析的考察方法探索分析一般通过数据文件在分组与不
6、分组的情况下,获得常用统计量和图形。一般以图形方式输出,直观帮助用户确定奇异值、影响点、进行假设检验,以及确定用户要使用的某种统计方式是否适合。 、4. R 语言的简介R 是集统计分析与直观的图形显示于一体,并且属于 GNU 系统的一个自由、免费、源代码开放的软件。R 作为一个计划( project) ,最早(1995 年)是由 Auckland 大学统计系的 Robert Gentlemen 和 Ross lhaka 开始编制,目前由 R 核心开发小组(R Development Core Team)维护,完全自愿、工作努力负责,并将全球优秀的统计应用软件打包提供给我们。可以通过 R 计划的
7、网站了解有关 R 的最新信息和使用说明,得到最新版本的件和基于R 的应用统计软件包。此外,还有来自世界各地,可能从事各种各工作的 R 的拥护者,他们也自愿为 R 的发展做出了自己的贡献。相对其他同类软件,R 语言的特色在于:(1)有效的数据处理和保存机制。(2)拥有一整套数组和矩阵操作运算符。(3)一系列连贯而又完整的数据分析中间工具。(4)图形统计可以对数据直接进行分析和显示,可用于多种图形设备。(5)一种相当完善、简洁和高效的程序设计语言。它包括条件语句、循环语句、用户自定义的递归函数以及输入输出接口。(6)R 是彻底面向对象的统计编程语言。(7)R 和其它编程语言、数据库之间有很好的接口
8、。(8)R 是自由软件,可以光明正大的使用:但其功能不比任何其它同类软件差。(9)R 具有丰富的网上资源,更为重要一点的是 R 提供了非常丰富的程序包,除了推荐的标准包外还有很多志愿者贡献的贡献包,可以直接利用这些包,大大提高工作效率。5. R 语言的探索性分析功能5.1 主要分析工具探索分析的工具包括数据的图形表示和解释。主要的图形表示方法有(括号中为 R 语言的绘图函数) 条图(barplot):用于分类数据。 直方图(hist) 、点图(dotchart) 、茎叶图(stem ):用于观察数值型分布的形状。 箱线图(boxplot):给出数值型分布的汇总数据,适用于不同分布的比较和拖尾、
9、截尾分布的识别。 正态概率图(qqnorm):用于观察数据是否近似地服从正态分布。在 R 语言里,我们编写一个简单的程序,将以上一些用于探索分析的图形函数整合成一个函数 EDA,来对数据进行全面探索分析:EDA salarym=c(salary,15000)stem(salarym)The decimal point is 4 digit(s) to the right of the |0 | 22222233333333344440 | 1 | 1 | 5从该图上也可以发现,15000 的确是一个异常数据。箱线图和直方图一样都是用于考察连续变量的分布情况,但它的功能和直方图并不重叠,直方图侧
10、重于对一个连续变量的分布情况进行考察,而箱线图更注重于勾勒出统计的主要信息,并且便于对多个连续变量同时考察,或者对一个变量分组进行考察,在使用上要比直方图灵活,用途也更为广泛。在 R 里做箱线图的函数是 boxplot(),而且可以设置垂直型和水平型。例如我们对上面的工资数据做箱线图。Boxplot(salary)Boxplot(salary,horizontal=T)图 4 工资的箱线图5.3 双变量数据分析5.3.1 数值型对数值型数据简单分析两个数值变量的关系,经常使用散点图。在 R 里画散点图非常简单,只要用plot()函数就可以了。下面对 19852001 年我国财政收入(y,百亿元
11、)和税收(x,百亿元)数据,用散点图分析税收和财政收入之间的关系。plot(x,y) # 作 x,y 变量的散点图abline(lm(yx) # 增添趋势线图 5.税收与财政收入之间关系的散点图和趋势线 图 6 两变量的箱线图对比从图 5 中很容易看出 x,y 之间有很强的线性关系,即税收与财政收入之间有很强的正相关性。在此基础上可以添加回归线,各个点大致分布在回归线的两边。5.3.2 分类数据对数值型数据可以用 boxplot()函数做出箱线图,即两样本的均值检验,考察两样本的均值是否相同。实验组:5, 5, 13, 7, 11, 11, 9, 8, 9对照组:11, 8, 4, 5, 9,
12、 5, 10, 5, 4, 10x=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.4 R 语言的高级作图R 不仅能很容易地作出一元、二元数据的图形,而且在处理三维以上的数据也有着不可替代的优势。通过调用相关的函数,可以很容易的绘制出轮廓图,星图,调和曲线图这些高难度的图形,便于对复杂数据的探索性分析。下面只以星图为例说明 R 的高级制图功能。为考察学生的学习
13、情况,学校随机抽取 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总结探索性数据分析技术能帮助我们,以不那么正式的方式对付一组数据,直截了当把我们导向数据的结构。侧重先灵活探究数据,强调
14、图示以观察数据,是探索性数据分析的主要贡献。而 R 语言强大而且灵活的制图功能在探索性分析中充分体现了它的优越性,正因为如此本文用 R 语言展示了它探索分析中的应用。总之,探索性数据分析在当今软件计算机如此发达的时代,其作用得到了越来越充分的体现,没有探索性分析,证实性分析往往是盲目的, 缺乏根据的; 没有证实性分析 , 探索性分析则永远是一次没有完成的统计分析。【参考文献】1J. W. Tukey. Exploratory Data AnalysisM . 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.14薛毅,陈立萍著. 统计建模与 R 软件.清华大学出版社,2007.4.15贾俊萍著.统计学(第二版).清华大学出版社,2006.7