茎叶图(Stem-and-Leaf display)又称“枝叶图”,由统计学家约翰托奇( Arthur Bowley)设计,它的思路是将数组中的数按位数进行比较,将数的大小基本不变或变化不大的位作为一个主干(茎),将变化大的位的数作为分枝(叶),列在主干的后面,这样就可以清楚地看到每个主干后面的几个数,每个数具体是多少。
茎叶图是一个与直方图相类似的特殊工具,但又与直方图不同,茎叶图保留原始资料的资讯,直方图则失去原始资料的讯息。将茎叶图茎和叶逆时针方向旋转90度,实际上就是一个直方图,可以从中统计出次数,计算出各数据段的频率或百分比。从而可以看出分布是否与正态分布或单峰偏态分布逼近。
R语言中使用stem函数绘制茎叶图。stem函数的语法格式如下:
stem(x, scale = 1, width = 80, atom = 1e-08)
下面使用例子来说明stem函数的具体使用方法:
某人对自己上班时间的开车速度进行了统计,统计12次的数据如下(km/h):
30,33,18,27,32,40,26,28,21,28,35,20
参数x是数值向量,用于绘制茎叶图的数据。
v<-c(30,33,18,27,32,40,26,28,21,28,35,20)
stem(v)
绘制结果如下图所示:
图中位于“|”右边的数字是1位数字构成的,绘制的茎叶图默认0-4一组,5-9一组。则可以看出,位于[10,20)区间的有1个:18;位于[20,30)区间的有6个;位于[30,40)区间的有4个:30,32,33,35;位于[40,50)区间的有1个:40.
stem函数中的scale参数控制茎叶图的长度,默认为1。
v<-c(30,33,18,27,32,40,26,28,21,28,35,20)
stem(v,scale=0.8)
sacle设置的越大,分茎越多,精度越高,如果你的scale较小,他甚至会自动帮你的数据做四舍五入(这样会降低精度)
控制茎叶图中叶子的宽度,如果为0,则只输出该茎统计的数字个数。如果为10以内的数,则表示超过指定宽度的统计数量个数,下面的例子可以理解为,统计频数比0多的数,多几个就加几。
这样,我们很清楚的知道,10~20之间有1个,20~25之间有2个,25~30之间有4个......
当width设置的足够大,就可以将所有的数字显示全了,默认为100.
v<-c(30,33,18,27,32,40,26,28,21,28,35,20)
stem(v,scale=1,width=90)
新闻热点
疑难解答