有人可以告诉我R中的分位数功能和HMISC包中的cut2功能之间的区别吗?
据我所知,分位数有9种不同的方法来指定四分位数。但是,当我使用函数cut2(mydata,g = 4)时,输出的四分位数不对应于任何分位数函数输出。
非常感谢任何帮助。
提前致谢。
答案 0 :(得分:6)
来自cut2
帮助文件:
像剪切一样的功能,但左端点是包含的,标签是 形式[下,上],除了最后一个区间是[下,上]。 如果给出剪切,默认情况下将确保剪切包括整个剪切 范围x。
因此,cut2
基本上是cut
,有几个不同的默认值。让我们看一下cut
。
来自cut
帮助文件:
cut将x的范围划分为间隔,并对x中的值进行编码 根据他们下降的间隔。最左边的间隔 对应于第一级,下一个最左边到第二级,依此类推。
来自quantile
帮助文件:
通用函数分位数产生对应的样本分位数 给定的概率。最小的观察对应于a 概率为0,最大概率为1。
一个削减x
的范围,另一个削减"频率" x
。
插图:
out <- 0:100
out2 <- c(seq(0, 50, 0.001), 51:100)
两者都有相同的范围。从0到100.
levels(cut(out,4, include.lowest = T))
[1] "[-0.1,25]" "(25,50]" "(50,75]" "(75,100]"
levels(cut(out2,4, include.lowest = T))
[1] "[-0.1,25]" "(25,50]" "(50,75]" "(75,100]"
但还有更多&#34;数据点&#34;居住在out2
,特别是0到50之间的值。因此,他们在该范围内的频率不同:
quantile(out)
0% 25% 50% 75% 100%
0 25 50 75 100
quantile(out2)
0% 25% 50% 75% 100%
0.0000 12.5125 25.0250 37.5375 100.0000
这是cut
和quantile
之间的区别。
上面的例子也告诉你两者是否一致,即在均匀分布的情况下。例如,从0到100的顺序均匀分布在0到100的范围内。这里两者基本相同。
为了进一步说明,请考虑:
outdf <- data.frame(out=out, cut=cut(out,4, include.lowest = T))
out2df <- data.frame(out=out2, cut=cut(out2,4, include.lowest = T))
table(outdf$cut)
[-0.1,25] (25,50] (50,75] (75,100]
26 25 25 25
table(out2df$cut)
[-0.1,25] (25,50] (50,75] (75,100]
25001 25000 25 25
在这里,您可以清楚地看到每个箱子中的不同频率。