你真的看懂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:
Usingscale=2,you'llseenumbersleftofthebargoupbyone,sonowyoucangetexactreconstruction(再造)ofyourinput,sinceyouinputintegers:
Goingfurtheryoucanevensplititbyfirstandsecondfivewithineachdecade:
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
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
相关文章推荐
- jdbc批量插入实现大批量数据快速插入
- 专注做事,竟然也成为我们的稀缺能力 [20160310]
- 读《我是IT小小鸟》有感
- Win8 Tomcat安装及环境变量配置
- MAC OSX10.10上搭建Apache,PHP,MySQL5.6.22,phpMyAdmin开发环境
- 穷举法和迭代法
- ASP.NET 5
- Maven中的import scope.
- Eclipse快捷键大全
- Eclipse快捷键大全
- Building COM Objects in C#
- BeanFactory和ApplicationContext实例化Bean 的不同
- Makefile
- 代理模式
- iOS两个关于对象的关键字
- 首次在公司内部的分享
- UVa 1354 Mobile Computing[暴力枚举]
- leetcode:Valid Palindrome 【Java】
- ajax地址三级联动下拉表
- A. Robot Sequence