2023年6月30日发(作者:)
目录
中文摘要 ................................................... 1
英文摘要 ................................................... 1
一、引言 ................................................... 2
二、数据可视化概述 ......................................... 3
(一)数据可视化的涵义 .................................... 3
(二)统计学中的数据可视化................................. 3
(三)数据可视化在统计学中的发展现状 ....................... 4
三、数据可视化在统计学中的若干例子........................... 4
(一)词云、星空图 ........................................ 4
(二)透明散点图 ......................................... 10
四、统计图形在统计教学中的运用 ............................. 11
(一)引导学习 ........................................... 11
(二)加深理解 ........................................... 14
(三)验证模型理论 ....................................... 16
1.验证理论 ............................................. 16
2.验证模型正确性........................................ 18
五、统计图形在统计教学中的注意事项.......................... 21
(一)不要随意伸缩坐标轴 ................................. 21
(二)不要任意改变纵坐标的起点 ............................ 22
(三)图例可以很好地解释图形 .............................. 23
六、总结与展望 ............................................ 25 附 录 .................................................... 26
数据可视化在统计教学中的应用
——基于R语言
摘要:本文以数据可视化在统计教学中的应用作为研究内容,首先论述了数据可视化的涵义,并举例说明数据可视化的魅力。其次通过引导学习、加深理解、验证模型理论三个方面入手模拟课堂教学从而说明数据可视化在统计教学中的应用—统计图形的作用和价值,探索统计图形应用到教学中的可行性。然后举例说明了统计图形使用需注意的事项。最后给出总结和希望。本文所有案例均基于R语言。
关键字:数据可视化,统计图形,教学应用,R语言
Abstract:In this paper, the application of data visualization in the teaching of statistics as a
research, first discusses the meaning of the data visualization and illustrates the charm of the
data ed,through guided learning, deepen understanding and verify model
theory to analog classroom teaching and illustrate the role and value of data visualization in
the teaching of statistics - statistical e the feasibility of appling statistical
graphics to statistics illustrate the notes of using statistical
,giving the summary and cases in this paper is based on R language.
Keywords:data visualization, statistical graphics,
teaching application, R language
1 一、引言
众所周知,由于图形可以充分利用人的视觉系统,所以在传递信息上具有简便直观、迅速易懂的特点。在统计学中,主要就是利用了以上的图形特点来完成对数据的可视化工作,所以说统计学对于数据的可视化主要便是指统计图形。而根据Friendly and
Denis(2001)的记录,世界上最早的统计图形主要起源于地图,而地图的历史可以追溯到几千年前。在如今虽然经过几千年的变化,统计图形的形式和制作工具等发生了很大的变化。但是其作用和目的却仍然是通过视觉引导来将数据包含的信息直观的传递给读者,并让读者发现数据的潜在信息。统计图形作为统计学中的一门有用的工具诞生于19世纪,并且自计算机诞生开始变得到了快速的发展。主要可以分为三个时期:早期有著名的“提灯女士”南丁格尔的玫瑰图;近代则有我们耳熟能详的直方图、密度图、箱线图等;现代统计图形则以贝尔实验室的S语言为重要基础,偏重于图形的高维和动态展示。可以说随着技术(计算机技术)的高速发展,统计图形的作用日趋明显。并在国外得到了广泛的使用和研究。
然而在我国由于统计学引入较晚(在1970年),对于统计图形的使用和研究可以说还只是起步阶段(甚至更低)。正如谢益辉(2008a)指出的,国内的统计分析氛围仍然是以统计模型为主,对统计图形的使用频率非常低。那么如何加强我国对统计图形的使用和研究,更好地为发展我国的统计学服务,成了本文研究的目的之一。
任何一门学科的发展都离不开教育,没有老师的教导想要自学成才不是每个人都能做到的,如果还要在某个领域有所突破更是难上加难。可以说一个国家在某个学科上的投入和产出是成正比的。只要在教育上重视了,那么必然会有一定程度的发展。所以本文拟在数据可视化在统计教学中的应用方面入手应用R语言举例分析,希望可以让统计图形得到更广泛的应用、研究,让教学工作更加生动、高效,更好的服务于统计学的发展。
2 二、数据可视化概述
(一)数据可视化的涵义
数据可视化是指借助于图形化手段,清晰有效地传达与沟通信息。其起源于20世纪60年代的计算机图形学,旨在通过计算机创建图形图表,并通过图表将数据中变量的各种属性特征呈现出来。并且随着计算机硬件的飞速发展,使得人们可以构造更加复杂和规模更大的模型来分析日趋庞大的数据,并且发展了更多的图形学技术和方法。到如今数据可视化的内容已经相当丰富,并且大致可以分为科学可视化和信息可视化两个方面。前者主要关注对体、面、光源等的逼真渲染;而后者则旨在研究大规模的非数值型数据的视觉呈现,以期帮助读者更加直观的理解和分析数据。
顾名思义数据可视化是利用图形对数据进行展示的技术。可视化数据这个过程包括7个阶段:获取数据、分析数据结构、过滤有用信息、挖掘潜在信息、表述、修饰和交互。然而在实际的操作中,我们更要关注后面5个步骤。我们必须清楚的了解谁是这个数据的使用者,他们需要怎样的数据,他们的偏好是什么等。举例来说对于两个不同的群体,为前者过滤掉的无用信息可能恰巧是后者所需要的重要信息,那么自然的就要采取不同的方法来挖掘潜在信息;而群体的知识水平和审美差异等因素也要求设计者用不同的图形和修饰来展示数据。只有正确认识到以上几点,才能将数据包含的信息清晰而又不失美感的展示在人们眼前。
(二)统计学中的数据可视化
在统计学中,学界对统计图形的研究主要是限于数据可视化工作。而数据可视化在统计学中的应用也主要是统计图形。旨在利用图形将数据及其包含的各种信息以直观简洁的方式展现出来。所以说数据可视化在统计教学中的主要应用便是指的统计图形的应用。
3 一般说来统计图形在统计教学中的主要表现形式便是我们所熟知的散点图、直方图、概率图、残差图、箱线图、饼图、茎叶图等。可以让我们直观的找出数据的分布特征、变量间的大致关系等数据特性。除了以上常用功能外统计图形在检验假设、模型选择、统计模型验证、估计量选择、关系确定、因素效应判定以及离群值检出方面也有着不俗的表现。
(三)数据可视化在统计学中的发展现状
正如前面提到的,在国外随着S语言的诞生现代统计图形开始发展起来,随后R语言的兴起,新的统计图形方法如雨后春笋般涌现出来。比较具有代表性的有R的基础包graphics和grid(Murrell,2005)、基于Trellis图形(Cleveland,1993)思想的lattice图形(Sarkar,2010)、基于统计图形理论著作Wilkinson(2005)的ggplot2图形(Wickham,2009)、基于OpenGL的三维动态图形系统rgl包(Adler and Murdoch,2010)等。
而在国内则远没有如此盛况,目前有所耳闻的便只有谢益辉于2007年开发的R包animation(Xie,2010a),以及其正在撰写的《现代统计图形》一书和由统计之都策划翻译的《ggplot2》一书。
三、数据可视化在统计学中的若干例子
下面我们通过两个统计学中的例子来领略下数据可视化的魅力所在。
(一)词云、星空图
这个例子来源于统计之都网站的一篇名为统计词话(邱怡轩,2012)的文章。这个例子主要讲的便是对宋词中的词组和词牌名进行统计,找出词人对不同词组和词牌名的青睐程度及哪些词人的产量颇丰。对于词组,文章充分利用了宋词句式较短、词组大多为2字且极少有4字以上的特性,结合数学上的排列组合技巧将每句词中所有的可能找4 出并进行词频统计。需要说明的是:可以预料虽然在一句词的所有排列组合中难免会有没有意义的词组出现,但是这样的组合必然远没有合理的词组出现的频率来得高。所以我们只需按词频从高到低排序则我们所关心的有意义的词组自然会出现在靠前的位臵了。而对于词牌名和词人产量的统计则简单许多只需进行简单的分类统计即可。
例子的数据来源于网络整理的额《全宋词》电子资料,并使用R语言对数据进行处理和可视化展示。(本文只简单列出部分作图代码,关于详细的数据处理步骤及代码可访问/2011/03/statistic-in-chinese-song-poem-1/)。
未处理前的数据格式大致如下:
表 1
Page
1.1
1.2
1.3
2.1
2.2
Author
和岘
和岘
和岘
王禹偁
苏易简
Title
导引
六州
十二时
点绛唇
越江吟
Title2
导引
六州
忆少年
点绛唇
越江吟
Sentence
气和玉烛,叡化着鸿明。……
严夜警,铜莲漏迟迟。……
承宝运,驯致隆平。……
雨恨云愁,江南依旧称佳丽。……
神仙神仙瑶池宴。……
首先利用R语言对原始数据进行词频的划分和频数的统计,从而得到如下表格(下面列出其中一部分):
表 2
排序
1
2
3
4
5
词语
(错误字符)
东风
何处
人间
风流
频数
1584
1379
1231
1164
843
排序
51
52
53
54
55
词语
匆匆
芙蓉
今日
扁舟
西湖
频数
357
356
354
351
350
其次我们再利用R语言对词牌名和词人做频数统计得到如下两个表格(同样列出部分):
songci <- (())
t1 <- rev(sort(table(songci$Author)))
5 t2 <- rev(sort(table(songci$Title2)))
da1 <- (Author=names(t1),FreqA=t1)
rownames(t1) <- 1:nrow(t1)
da2 <- (Cipai=names(t2),FreqC=t2)
rownames(t2) <- 1:nrow(t2)
head(da1,10)
head(da2,10)
表 3
No
1
2
3
4
5
6
7
8
9
10
Author
无名氏
辛弃疾
苏轼
刘辰翁
吴文英
赵长卿
张炎
贺铸
刘克庄
晏几道
FreqA
1569
629
362
356
341
339
302
283
269
260
No
1
2
3
4
5
6
7
8
9
10
Cipai
浣溪沙
水调歌头
鹧鸪天
菩萨蛮
念奴娇
满江红
西江月
临江仙
蝶恋花
减字木兰花
FreqB
814
711
641
603
590
529
492
477
476
441
通过上面的3张表格我们虽然能大致了解在宋词中使用频数比较高的词组有哪些,产量排在前十位的词人是哪几位以及前十位的词牌是哪几个。但是这样的“伪统计图形”似乎并不是很高效。我们每观察一个对象都需要我们主观去比较和判断。如观察到第一张图中排名第二的词组“东风”出现的频数为1379次,那么1397具体有多高,是遥遥领先第三亦或是远远落后第一呢?这就需要我们运用数学思维将1397和第一及第三对应的频数进行大小比较。其次,由于表格只列出了小部分数据,所以我们所能获知的也仅有如上表格中所包含的信息。如果我们希望获知前100的词组、词人、词牌名,显然是不高效的。因为我们既不想浪费太多的页面去显示这些内容也不会有闲情逸致去阅读并比较所有内容。
6 这时如果能充分利用统计图形的优势便能很好地解决以上的问题,并且能给人耳目一新的感觉。
对于第一张表格,我们更加希望能直观地呈现出词组的使用频繁程度,由于数据主要是字符串,传统的统计图形的表现可能不尽如人意。所以这里使用词云(wordcloud)图来展示。
library(‘wordcloud’)
m <- [1:100]
wordcloud(names(m),m,=F,=T,
=.15,font=6,colors=rainbow(20))
图 1
通过上面的词云图(排出了错误字符)可以发现词组的字体大小是由内而外不断缩小的,很明显可以看出“东风”、“何处”、“人间”是使用频率最高的词组,并且通过字体大小也可以直观感受到他们的使用频率差距不大,不再需要人为地进行数学上的大小比较。而且这样的统计图形也确实让人眼前一亮!
7 对于后两张表格,我们更加关心的是词人的产量和词牌名的受欢迎程度之间的关系。探索两变量关系通常可以将两者对应到x,y坐标轴上,但是由于数据是分类变量所以这样的图形意义不大。对此原文作者采用了极坐标系将每个词人和不同半径的圆环对应,每个方向和不同的词牌名对应,再利用双向聚类的方法将取值相近的元素聚到一起达到聚类的效果,最后利用平滑散点图来完成对数据的可视化。
library(seriation)
tab <- table(songci$Author,songci$Title2)
(1222)
m <- permute(tab[,],seriate(tab[,]>0))
coord <- which(m > 0, = TRUE)
theta <- (coord[,2]-1)/(max(coord[,2])-1)*359/180*pi
rho <- coord[,1]/max(coord[,1])
x <- rho*cos(theta)
y <- rho*sin(theta)
par(bg ="black",mar=c(0, 0, 0, 0))
mypalette <- colorRampPalette(c("#1F1C17","#637080","#CBC2B7",
"#D2D6D9"),space="Lab")
smoothScatter(x,y,colramp=mypalette,nbin=600,bandwidth=0.1,
col="white",nrpoints=Inf)
通过下面这张“群星璀璨”图,可以很容易发现绝大多数词人都偏爱某几个固定的词牌名,并且大部分多产词人的作品词牌名也集中在这几个固定词牌名上。最后再将群星密集的部分列表显示(本文只列出部分),便可以找到词牌和词人的关系。可见可视化不但可以直观反映数据特征,也可以用图形反向定位原始数据中所需部分。
8 图 2
表 4
刘辰翁
辛弃疾
无名氏
赵长卿
西江月
3
17
43
3
鹧鸪天
7
63
60
21
临江仙
15
24
24
16
表 5
吴潜
刘辰翁
辛弃疾
无名氏
满江红 念奴娇
8
16
22
42
9
水调歌头
23
26
38
40
36
4
34
42 (二)透明散点图
这个例子的灵感来源于MSG包(Xie,2010b)中名为BinormCircle的数据。该数据由1万个来自标准正态分布的样本点和1万个坐落于半径为0.5的圆上的样本点组成。并通过平滑散点图找出了数据中隐藏的信息。本文将1000个坐落在字母R上的样本点和2万个来源于标准正太分布的点混合打乱,并通过设臵点的透明度来找出隐藏信息。(代码参见附录)
图 3
10 图 4
对于这样的数据如果想要试图从普通的统计模型入手几乎是找不到数据特征的,因为理论上二者是不相关的。且从图3可以看出由于样本量很大且数据范围小,会有很强的overplotting,从而难以从散点图中找出数据特征。
在实际应用中由于科技的发展,大数据时代似乎已经到来。数据中可能充斥着噪声,从而严重影响模型的建立和准确性。所以,预先利用类似手段过滤噪声,才能事半功倍。
四、统计图形在统计教学中的运用
不管是充满视觉震撼的词云图和“群星璀璨”图还是犹如魔术般神奇的透明散点图,都充分体现出了数据可视化直观、形象、生动、具体的特点。本节将数据可视化在统计教学中的应用—统计图形的作用分为引导学习、加深理解、验证模型理论,并利用R语言构造数据和图形模拟具体教学情景。以期使统计图形能更好地为统计教学服务,为统计学的发展服务。
(一)引导学习
在学习新知识的时候,通常需要有一定的引导过程。开门见山往往达不到预期要求。11 尤其在学术上,对于复杂高深、晦涩难懂的理论没有一个由浅至深的引导过程是很难深入学习并掌握的。
而统计图形由于其生动、形象的特点在新知识的学习方面能起到很好的引导作用。下面看一个统计图形在概率论与数理统计方面的应用例子。
在讲到中心极限定理中的独立同分布中心极限定理时,老师往往一上来便是将该定理叙述一遍:
设随机变量则有:
是相互独立且同分布的随机变量,
之后便是大量的习题。其结果便是学生们一知半解,只能依样画葫芦按照课本例题的解法套用如上公式进行机械似的解题。根本没有搞清楚这个定理所要说明的是什么,解题时具体用哪个公式等等。一旦脱离了课本习题或是遇到需要转个弯的题目便不知如何是好。其实老师可以在直接说明结论之前通过统计图形来引导学生的求知欲,并和学生互动探索,从而让学生更好地掌握该定理。
笔者在这里利用R语言模拟了高尔顿钉板实验(具体代码参加附录),并做成动画形式。高尔顿钉板实验:自板上端放入一小球,任其自由落下。在下落过程中,当小球碰到钉子时,从左边落下与从右边落下的机会相等。碰到下一排钉子也是如此。自板上端放入n个小球,观察小球落下后呈现曲线并统计小球落入各个格子的频率。
12 图 5
图 6
在演示完动画后,学生的兴趣被激发。老师顺势地介绍独立同分布中心极限定理,并且和学生互动完成对高尔顿钉板实验的证明理论证明,随后推广到其它两个中心极限13 定理。以此加强对中心极限定理的理解,逐渐认识到中心极限定理的本质是:当样本量很大时随机变量的和是否可以用正态分布处理。这样学生在解题时便能根椐具体题目具体分析使用不同的中心极限定理解题,真正掌握中心极限定理。
(二)加深理解
在加深理解方面,统计图形同样有着不俗的表现。好的统计图形往往能让人茅塞顿开,对理论知识的理解更上一层楼。下面笔者就多元统计方面给出一个例子。
通常在讲授线性回归的时候,老师们先是讲解一元线性回归,在介绍完一元线性回归的相关性质后,开始讲授多元回归,并指出多元回归模型中任一自变量的系数是指在控制其它变量不变的前提下来考察该自变量与因变量的关系。这样的概念是抽象的。其中“控制其它变量”这个概念很容易容易引起混淆,学生们可能会误认为控制其他变量不变就是指剔除其它变量,这样就又回到了一元回归了。而多远回归决不能单独地拿出某个自变量来看其和因变量的关系,它同时还受到其它变量的制约。为了帮助学生理解“控制”的思想老师可以构造特殊的案例,通过统计图形帮助学生更好地理解多元回归的思想。
假设科研机构为了研究A、B两种药物对某种疾病的疗效(这里假设没有交互作用),调查了250位患者在服用不同剂量的A、B后的疗效。其中自变量A用计量单位是10ml,取值范围是0-4;自变量B用0-4;疗效用表示。假设真实模型为:探索药物的疗效如何,该如何指定服用剂量。
首先构造数据:
(1206)
x.a <- round(seq(0,4,len=250),2)
x.b <- rep(0:4,each=50)
y <- -x.a + x.b + rnorm(250, 0, 0.4)
da <- (x.a=x.a,x.b=x.b,y=y)
表示,表示,计量单位是粒,取值范围是。要求学生通过给出的如果学生将“控制变量”的理解为剔除变量,那么通常会就14
与做散点图,由于取值不连续通常会做其与的箱线图:
library('ggplot2')
p <- ggplot(da,aes(x.a,y))
p + geom_point()
p + geom_boxplot(aes(factor(x.b),y)) + xlab('x.b')
图 7
图 8
并且通过图形发现不论是与或是与都呈现出了明显的递增趋势甚至做相应的一元回归系数也是显著的。于是得出A、B药物使用剂量在可行范围内越多疗效越好的结论。但是真实的模型告诉我们这个结论是错误的。正确的使用剂15 量应该是在可行范围内尽量减少药物A的使用量,同时增加药物B的使用量。那么到底是怎么回事呢?问题就出在对“控制变量”的理解上。如果完全剔除了就不是所谓的“控制变量”,正确的应该是在的值固定为不同水平的条件下考察以一旦我们根据的不同取值分别画出对应的与的关系。所与的散点图,学生们对“控制变量”的含义就不会再模棱两可了。用这样的几张图形不但说明了什么是“控制变量”的问题,更加有助于学生弄清楚多元回归和一元回归的本质区别,促进对线性回归理论的理解和掌握。
p + geom_point(aes(color=factor(x.b),shape=factor(x.b))) +
geom_smooth(aes(color=factor(x.b)),method='lm',se=F)
图 9
(三)验证模型理论
1.验证理论
关于概率论中的辛钦大数定理,指的是:
设随机变量意正数有:
16
是相互独立且同分布的随机变量,。则对于任 即对于独立同分布且期望存在的随机变量,当n足够大时随机变量的算术平均数可近似代替数学期望。而我们可以进行实验模拟并通过统计图形来验证理论的正确性。
案例来源于经典的羊车问题:假设你正在参加一个电视节目,有三扇门任你选择。其中一扇门后面有一辆小汽车,另外两扇门后面都是一只羊。比方说你选择1号门,,接着,知道哪扇门后面有汽车的主持人打开了另一扇门,这扇门后是一只羊。现在,主持再给你一个选择:坚持1号门还是选择另外一扇?这个问题曾经难倒了不少数学家。可以想象在课堂上学生也必然会有不同意见,有的会回答概率一样都是有的则会回答换一扇门打开,因为换后赢得概率是随便选,而。而这个问题的理论推导却并不简单。这时候利用大数定理进行模拟并将结果通过统计图直观展现出来也是不错的选择。因为这样不但可以加深学生对大数定理的理解,同时也可以训练学生的逆向思维。(R代码参见附录)
图 10
为了验证模拟是否准确,这里给出相关的理论解答:
17 设事件A代表坚持1号门且赢得车,事件B代表选择另一扇门且赢得车,事件C表示主持人打开了有羊的一扇门。则有:
可见统计结果是符合大数定理的。
2.验证模型正确性
许多学生在学了线性回归之后只记住了检验、F检验、。往往忽视了图形的直观性。下面我们通过最简单的一元线性回归例子来说明即使是最简单的图形只要适时使用也能有出色效果。
笔者在这里通过,并取构造序列并进行一元线性回归。如果学生没有很好的掌握线性回归,那么往往会不管三七二十一拿到数据就用统计软件进行回归拟合,然后观察软件输出结果中的检验、F检验和了回归的工作。而这个例子却给了这样的学生当头一棒。
library('ggplot2')
x <- 1:20
y <- x^2+rnorm(20,,4)
m <- lm(y~x)
summary(m)
。如果都通过就算完成得到和调整过的,常数项和自变量系数的检验全部通过。所以回归方程为:
而这样的结论显然是不对的,而如果你能够在回归之前先画出便能发现不能直接使用线性回归。模型的拟合是不正确的。
(p <- qplot(x,y))
pre <- predict(m,list(x=1:20))
(p <- p + geom_line(aes(x,pre),lty=2,color='blue'))
的散点图则一眼18 图 11
图 12
或者如果事后可以利用残差图看一下残差是否服从正态分布,同样可以发现问题所在。
qplot(x,m$residuals)
19 图 13
正确的作法应该是通过观察散点图发现呈指数关系,所以可以利用Box-Cox变换先对进行变换,或者直接利用非线性回归。可以看到利用非线性回归得到的结果所有检验都通过,图形上也拟合很好。不过结果并不重要,笔者举这个例子只是想说明有时在做理论分析时,哪怕是最简单的散点图也能避免(找出)错误,避免不必要的重复劳动。
m1 <- nls(y~x^k,start=list(a=0,k=1))
summary(m1)
pre1 <- predict(m1,list(x=1:20))
p + geom_line(aes(x,pre1),lty=5,color='red')
20 图 14
五、统计图形在统计教学中的注意事项
上面最后一个例子告诉我们只要使用得当,哪怕最简单的散点图也能起到很大的作用。所以老师在统计教学中应该合理使用统计图形,并不是统计图形越复杂越好,这就违背了使用统计图形的初衷。统计图形的使用是一门艺术,只有内外结合才能充分发挥统计图形的作用。一张本该正确反映数据特征的图形如果因为糟糕的配色或错误的坐标轴标签或画蛇添足而失去其作用是令人遗憾的;而如果能在原有基础上正确配色或是局部调整使得图形更具视觉冲击力和表现力才是艺术的内涵所在。
所以笔者接下去通过几个例子加以说明作为参考
(一)不要随意伸缩坐标轴
library('ggplot2')
x <- seq(1993,2012)
y <- (1:20)^(1.5)+rnorm(20,,1:20/5)
da <- (year=x,GDP=y)
png('')
qplot(year,GDP,data=da)
()
21 png('',width=240,height=480)
qplot(year,GDP,data=da)
()
png('',width=480,height=240)
qplot(year,GDP,data=da)
()
图 15
通过对比发现对坐标轴的伸缩容易造成对趋势剧烈程度的误解,所以尽量保持比例一致。
(二)不要任意改变纵坐标的起点
library('ggplot2')
da <- (x=rep(c('A','B','C','D','E'),c(13,16,20,14,11)))
p <- ggplot(da,aes(x,fill=factor(x)))
22 p + geom_histogram(width=0.8) + scale_fill_discrete(name='legend')
p + geom_histogram(aes(y=..count..-10),width=0.8) +
scale_fill_discrete(name='legend') +
scale_y_continuous(labels=seq(10,20,len=6))
图 16
图 17
通过对比可知随意改变纵坐标起点可能会加大或减少数据之间的差异。
(三)图例可以很好地解释图形
library('ggplot2')
dsmall <- diamonds[sample(nrow(diamonds),100),]
plot(dsmall$carat,dsmall$price,col=dsmall$color,
pch=16,xlab='carat',ylab='price')
23 qplot(carat,price,data=dsmall,color=color)
图 18
图 19
对于第一张图虽然很美观可是如果没有说明根本不知道不同的颜色代表什么。而第二张图加上图例后一目了然,不同的颜色分别代表不同的类。
总之,在教学中老师应该从自身做起,认真对待每一张统计图形的制作。根椐具体数据使用合适的统计图形,并注意细节上的优化。这样学生们在学习中才能真正掌握统计图形的使用技巧,认识到统计图形的价值,并能利用合理美观的统计图形帮助统计学24 的学习。
六、总结与展望
与传统的注重理论教学不同,本文通过介绍数据可视化和其在统计教学中的应用—统计图形入手,为提高统计教学质量指出新的途径。并通过大量的模拟教学案例来说明在教学中引入统计图形的优点:可以让教学更加生动,可以绕过复杂的理论证明得到问题的直观解答,可以引导学生学习统计理论,可以加深学生对理论模型的理解等。初步探索了该途径的可行性。
由于统计学诞生于17世纪中叶,计算机水平相对落后。致使人们更加偏重理论推导,曾经一度忽视了统计图形的作用和价值。而随着计算机技术的飞速发展,使利用计算机来代替繁琐的手工作图成为可能。统计图形在近代又重新得到重视,在国外得到了很大的发展。而国内则在这方面的应用和研究则相对落后。现在已经是信息时代,许多前人为了方便计算而发明的近似计算(诸如用泊松分布近似二项分布,查分布表等),完全可以被计算机的精确取代所代替。所以统计图形这个曾经复杂的“手工艺品”,完全可以由计算机产生,且更加精确很美观。
笔者希望通过本文可以让更多的人了解统计图形的优点,让更多的人认可统计图形的作用和价值。通过在教学中的应用,帮助学生更好地理解统计理论,从而更好地服务于统计学的发展。相信随着科技的进步,统计图形的应用将更加广泛,所能展现的信息量也更加庞大,统计图形的种类的更加丰富,技术更加成熟。
参考文献
[1] Wickham 2:elegant graphics for data er New York.
/ggplot2/book,2009
[2] Xie ion: Demonstrate Animations in Statistics.R package version 1.1-0.
,2010a
[3] Xie : Modern Statistical
25
Graphics.R package version 0.1-0. /cn/publication,2010b
[4] 谢益辉.统计图形和模拟视角下的模型理论解析/cn/publication/#GSM,2010
[5] 桑培罗布.多元统计分析与数据可视化方法在调查分析中的应用[D].2011
[6] 宋振忠.
统计数据图形可视化方法与应用研究[D].2005
[7] 陶艺军. 数据可视化:让统计更“好看”[J].中国统计,2011,(4):13-14.
[8] 黄科军,耿生玲.统计信息的数据挖掘与可视化分析系统[J].硅谷,2010,(9):40-41.
[9] 黄雨生.科学计算可视化在数据统计中的应用[J].福建电脑,2008,(5):93-116.
[10] 王海龙,陈毓芬.统计数据地图可视化扩展研究[J].测绘科学,2007,(6):66-68.
[11] 王德青,陈毓芬.高维数据可视化在统计分析中的作用[J].数据,2009,(7):52-53.
[12] 李舰.新闻中的统计图形./s/5n4_w,2012
[13] 邱怡轩.统计词话(一)./2011/03/statistics-in-chinese-song-poem-1/,
2011
[14] 邱怡轩.统计词话(二)./2011/03/statistics-in-chinese-song-poem-1/,
2011
[15] 林宇.用R绘制情人节的礼物./2012/02/ valentines-gift-by-using-r/,2012
附 录
透明散点图:
library('ggplot2')
m <- 1000
p <- c(1,0.3*pi,0.8)
26 p1 <- round(m*p[1]/sum(p))
p2 <- round(m*p[2]/sum(p))
p3 <- round(m*p[3]/sum(p))
R1.x <- rep(-0.1,p1)
R1.y <- round(seq(-0.5,0.5,len=p1),6)
R2.y <- round(seq(-0.1,0.5,len=p2),6)
R2.x <- sqrt(round(0.05-R2.y^2+0.4*R2.y,6))-0.1
R3.x <- seq(-0.1,0.2,len=p3)
R3.y <- -4/3*(R3.x+0.1)-0.1
R.x <- c(R1.x,R2.x,R3.x)
R.y <- c(R1.y,R2.y,R3.y)
noise.x <- rnorm(20000)
noise.y <- rnorm(20000)
x <- c(R.x,noise.x)
y <- c(R.y,noise.y)
ind <- sample(length(x))
x <- x[ind]
y <- y[ind]
da <- (x=x,y=y)
qplot(x,y,data=da,ylim=c(-4,4),xlim=c(-4,4))
qplot(x,y,data=da,ylim=c(-4,4),xlim=c(-4,4),alpha=I(1/50))
高尔顿钉板实验:
x11(width=11,height=6)
oldpar <- par(ly=T)
par(mar=c(1,1,1,1))
layout(matrix(1:2,2),heights=c(1.5,1))
n <- 15
x <- unlist(sapply(0:(n-1),function(i){seq(-i,i,len=i+1)}))
y <- rep(n:1+n,1:n)
da <- (x=x,y=y,shape=1)
m <- 100+n-2
co <- rainbow(m+n-2,end=0.9)
a <- 0
b <- 2*n-1
for(i in 1:m){
if(length(a) da1 <- rbind(da,(x=a,y=b,shape=2)) plot(subset(da1,shape==1)[,1:2],pch=24,axes=F,xlab='',ylab='') points(subset(da1,shape==2)[,1:2],cex=2.4,col=co[i],bg=co[i],pch=21) plot(0,type='n',axes=F,main='',xlab='',ylab='', ylim=c(0,m/3),xlim=c(-n,n)) segments(-n,0,n,0) 27 } else { da1 <- rbind(da,(x=a,y=b, shape=rep(2:3,c(n-1,length(a)-n+1)))) plot(subset(da1,shape==1)[,1:2],pch=24,axes=F,xlab='',ylab='') points(subset(da1,shape==2)[,1:2],cex=2.4,col=co[i],bg=co[i],pch=21) hist(subset(da1,shape==3)[,1],breaks=seq(-n+1,n-1,2)-0.5, axes=F,main='',xlab='',ylab='',ylim=c(0,m/3) ) } for(j in i:1){ a[j+1] <- a[j]+ifelse(j b[j+1] <- b[j]-ifelse(j } (0.05) } da2 <- subset(da1,shape==2)[,1:2] for(i in 1:(n-2)){ da1 <- rbind(da1,c(da2[(n-1),1],da2[(n-1),2],3)) for(j in (n-2):i){ da2[j+1,1] <- da2[j,1]+sample(c(-1,1),1) } plot(subset(da1,shape==1)[,1:2],pch=24,axes=F,xlab='',ylab='') points(da2[(i+1):(n-1),],cex=2.4,col=co[m-n+2+i],bg=co[m-n+2+i],pch=21) hist(subset(da1,shape==3)[,1],breaks=seq(-n+1,n-1,2)-0.5, axes=F,main='',xlab='',ylab='',ylim=c(0,m/3) ) (0.05) } da1 <- rbind(da1,c(da2[(n-1),1],da2[(n-1),2],3)) plot(subset(da1,shape==1)[,1:2],pch=24,axes=F,xlab='',ylab='') hist(subset(da1,shape==3)[,1],breaks=seq(-n+1,n-1,2)-0.5, axes=F,main='',xlab='',ylab='',ylim=c(0,m/3) ) par(oldpar) 羊车问题: library('ggplot2') n <- c(0,0,1,0,1,0,1,0,0) x <- rep(0,5000) s <- NULL 28 for(i in 1:5000){ k <- (sample(1:3,1)-1)*3+1:3 if(n[k][1]==1) x[i] <- 1 s <- c(s,sum(x)/i) } da <- (p1=s,p2=1-s,n=1:5000) p <- ggplot(da,aes(n,p1,p2)) p <- p + geom_line(aes(n,p1,color='not change')) + geom_hline(yintercept=1/3) + geom_line(aes(n,p2,color='change')) + geom_hline(yintercept=2/3) p + scale_y_continuous('p') + scale_color_manual('color',values=c('green','red')) 29
发布者:admin,转转请注明出处:http://www.yc00.com/web/1688106125a82355.html
评论列表(0条)