您的位置:首页 > 其它

你真的看懂R中的stem函数了吗?

2016-03-10 23:26 176 查看
哭晕,看到书上的介绍,你一定觉得你已经学会了如何使用R中的stem()函数绘制茎叶图了。

stem()函数的使用方法是:
stem(x,scale=1,width=80,atom=le-08)
其中x是数据向量.
scale控制绘出茎叶图的长度.
width绘图的宽度.
atom是容差,如果选择scale=2,即将10个个位数俞成两段,0~4为一段,5~9为另一段。

然而事实上,我经过反复的试验,发现width最好取较大的数,他既不表示数据的取值范围也不表示最长的那片叶子的长度,也不表示所有的数据的个数

请看以下来自sf的例子:

Withthedefaultscale,youseethatnumbersleftofthebargoupbytwo-henceanythingafterthe4isforty-something(四十几)orfifty-something:

d<-c(60,85,72,59,37,75,93,7,98,63,41,90,5,17,97)
>stem(d,scale=1)
Thedecimalpointis1digit(s)totherightofthe|
0|577
2|7
4|19
6|0325
8|50378


Usingscale=2,you'llseenumbersleftofthebargoupbyone,sonowyoucangetexactreconstruction(再造)ofyourinput,sinceyouinputintegers:

>stem(d,scale=2)
Thedecimalpointis1digit(s)totherightofthe|
0|57
1|7
2|
3|7
4|1
5|9
6|03
7|25
8|5
9|0378


Goingfurtheryoucanevensplititbyfirstandsecondfivewithineachdecade:

>stem(d,scale=4)
Thedecimalpointis1digit(s)totherightofthe|
0|57
1|
1|7
2|
2|
3|
3|7
4|1
4|
5|
5|9
6|03
6|
7|2
7|5
8|
8|5
9|03
9|78


Stemplotsdonotalwaysguaranteeyoucanreproducethedatabyreversingtheprocess,andthat'snotwhatthey'refor.

ThisisprobablymoreofaStackOverflowquestionthanaCVquestion,becauseitfocusesonhowRworksandwhy,ratherthanthestatisticalaspectsofstemandleafplots.Nonetheless...
Thewaythefunctioniscodedisdesignedtoshortenthelengthoftheoutput,sothatitbetterfitsintheconsole.Fewpeople,Ibelieve,findthatterriblyhelpful,oratleast
Idon't.Justalwaysremembertostartwithscale=2,andyoumayhavetoplaywithitfurtheroradjustthewidthargument.Also,knowthatthereisafancier偏好者,(发烧友的比较级)versionstem.leaf()inRcmdr.

总结:

R的stem函数其实是一个比较糟糕的设计,由于其设计的初衷是让其在控制台上能尽量简短的显示(否则控制台宽度不够),所以,当数据之间的差距较大的时候,就会出问题,他会跳着提升枝干,所以一般要设置sacle,而sacle设置的越大,分茎越多,精度越高,如果你的scale较小,他甚至会自动帮你的数据做四舍五入(这样会降低精度)

>test<-c(57,122,1000)
>stem(test,scale=2)

Thedecimalpointis2digit(s)totherightofthe|

0|6
1|2
2|
3|
4|
5|
6|
7|
8|
9|
10|0

>stem(test,scale=10)

Thedecimalpointis1digit(s)totherightofthe|

4|7
6|
8|
10|
12|2
14|
16|
18|
20|
22|
24|
26|
28|
30|
32|
34|
36|
38|
40|
42|
44|
46|
48|
50|
52|
54|
56|
58|
60|
62|
64|
66|
68|
70|
72|
74|
76|
78|
80|
82|
84|
86|
88|
90|
92|
94|
96|
98|
100|0

>stem(test,scale=20)

Thedecimalpointis1digit(s)totherightofthe|

5|7
6|
7|
8|
9|
10|
11|
12|2
13|
14|
15|
16|
17|
18|
19|
20|
21|
22|
23|
24|
25|
26|
27|
28|
29|
30|
31|
32|
33|
34|
35|
36|
37|
38|
39|
40|
41|
42|
43|
44|
45|
46|
47|
48|
49|
50|
51|
52|
53|
54|
55|
56|
57|
58|
59|
60|
61|
62|
63|
64|
65|
66|
67|
68|
69|
70|
71|
72|
73|
74|
75|
76|
77|
78|
79|
80|
81|
82|
83|
84|
85|
86|
87|
88|
89|
90|
91|
92|
93|
94|
95|
96|
97|
98|
99|
100|0
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: