R – 茎叶图
茎叶图是一种显示某些类别值可能出现的频率的技术。它基本上是一种以图形格式表示定量数据的方法。与直方图不同,茎叶图最多保留两个有效数字的原始数据项。数据按顺序排列,这有助于转向无参数统计和基于顺序的推理。让我们了解这种绘图技术是如何工作的。
例子:
在世界肥胖日,假设在一所学校里,一位老师决定测量她认为可能有肥胖症的任何 10 名学生的体重。于是她记录了 10 名学生的体重如下:
54, 43, 67, 76, 45, 59, 66, 78, 80, 92.
现在这些记录上的茎叶图将是:
4 | 3 5
5 | 4 9
6 | 6 7
7 | 6 8
8 | 0
9 | 2
这里的记录是根据它们的最高有效数字排列的。茎是图表的左侧,而右侧是叶子。有时为了增加可读性,可以将备用行与其紧邻的下一行合并。如果数字有无限值或缺失值,则将其丢弃。
R中的茎叶图
在 R 中,任何定量变量(例如 x)的茎叶图(也称为茎叶图)是一个文本图,用于按数据项的最高有效数字的顺序对数据项进行分类。词干和叶子之所以如此,是因为该图以表格格式给出,其中每个数值或数据项被分成一个词干,即第一个数字和一个叶子,即最后一个数字。例如,假设输入数据是 94。那么 9 将是茎,4 将是叶。
Syntax:
stem(number, scale = 1, width = 80, atom = 1e-08)
Parameters:
number: the data on which we want to draw the stem and leaf plot [either a numeric vector or a list of numeric vectors]
scale: the scale we want to use for our plot
width: the desired width for our plot [it is 80 by default]
atom: tolerance
在 R 中创建茎叶图
RStudio 中有很多保留的数据集。在这里,让我们使用ChickWeight数据集来考虑权重。首先让我们看看如何使用 stem() 以更简单的方式使用茎叶图。
例子:
# R program to illustrate
# Stem and Leaf Plot
# using stem()
stem(ChickWeight$weight)
输出:
The decimal point is 1 digit(s) to the right of the |
2 | 599999999
4 | 00000111111111111111111112222222222222223333456678888888899999999999+38
6 | 00111111122222222333334444455555666677777888888900111111222222333334+8
8 | 00112223344444455555566777788999990001223333566666788888889
10 | 0000111122233333334566667778889901122223445555667789
12 | 00002223333344445555667788890113444555566788889
14 | 11123444455556666677788890011234444555666777777789
16 | 00002233334444466788990000134445555789
18 | 12244444555677782225677778889999
20 | 0123444555557900245578
22 | 0012357701123344556788
24 | 08001699
26 | 12344569259
28 | 01780145
30 | 355798
32 | 12712
34 | 1
36 | 13
说明:
这里在命令中使用 $ 符号从使用的列表中提取数据。 stem() 命令提取数字数据并将它们分成两部分,即茎和叶。左侧显示最高有效位,而最后一位显示在右侧。为了更好的可读性,将具有相同词干值的数字合并在一起。
使用 scale 参数
现在让我们在重新缩放我们想要的图后查看相同的茎叶图。要重新缩放绘图,我们需要在stem()函数中使用scale参数。
例子:
# R program to illustrate
# Stem and Leaf Plot
# Drawing Stem and Leaf Plot after rescaling
stem(ChickWeight$weight, scale = 5)
输出:
The decimal point is 1 digit(s) to the right of the |
3 | 599999999
4 | 000001111111111111111111122222222222222233334
4 | 5667888888889999999999999
5 | 00000011111111222233333444
5 | 5555566667778888899999
6 | 001111111222222223333344444
6 | 555556666777778888889
7 | 001111112222223333344444444
7 | 6667778889999
8 | 001122233444444
8 | 5555556677778899999
9 | 0001223333
9 | 566666788888889
10 | 0000111122233333334
10 | 5666677788899
11 | 0112222344
11 | 5555667789
12 | 0000222333334444
12 | 555566778889
13 | 0113444
13 | 555566788889
14 | 111234444
14 | 5555666667778889
15 | 0011234444
15 | 555666777777789
16 | 000022333344444
16 | 6678899
17 | 000013444
17 | 5555789
18 | 12244444
18 | 55567778
19 | 222
19 | 5677778889999
20 | 0123444
20 | 5555579
21 | 0024
21 | 5578
22 | 00123
22 | 577
23 | 01123344
23 | 556788
24 | 0
24 | 8
25 | 001
25 | 699
26 | 12344
26 | 569
27 | 2
27 | 59
28 | 01
28 | 78
29 | 014
29 | 5
30 | 3
30 | 5579
31 |
31 | 8
32 | 12
32 | 7
33 | 12
33 |
34 | 1
34 |
35 |
35 |
36 | 1
36 |
37 | 3
说明:
改变缩放比例后,数据的分布水平发生了变化。同样在这里,茎在左侧,叶子在右侧。
使用宽度参数
在stem()函数中使用宽度参数时,可以将绘图的宽度更改为所需的绘图。
例子:
# R program to illustrate
# Stem and Leaf Plot
# Drawing Stem and Leaf Plot by changing the width
stem(ChickWeight$weight, width = 100)
输出:
The decimal point is 1 digit(s) to the right of the |
2 | 599999999
4 | 0000011111111111111111111222222222222222333345667888888889999999999999000000111111112222+18
6 | 0011111112222222233333444445555566667777788888890011111122222233333444444446667778889999
8 | 00112223344444455555566777788999990001223333566666788888889
10 | 0000111122233333334566667778889901122223445555667789
12 | 00002223333344445555667788890113444555566788889
14 | 11123444455556666677788890011234444555666777777789
16 | 00002233334444466788990000134445555789
18 | 12244444555677782225677778889999
20 | 0123444555557900245578
22 | 0012357701123344556788
24 | 08001699
26 | 12344569259
28 | 01780145
30 | 355798
32 | 12712
34 | 1
36 | 13
说明:
随着宽度从 80 变为 100,数据的分布也发生了变化。这里图表的左侧显示了茎,而叶子在图表的右侧。
茎叶图的使用
- 茎叶图对于显示数据的形状和相对密度非常有用,因此可以让读者或客户快速了解分布类型。
- 大多数时候,他们可以以非常完美的完整性保留原始数据。
- 一种非常有用的方法,用于突出显示异常值以及查找模式。