R - cut2与分位数函数

Mae*_*e90 0 r quantile hmisc quartile

有谁能告诉我R中的分位数功能和HMISC包中的cut2功能之间的区别?

我知道分位数有9种不同的方法来指定四分位数.但是,当我使用函数cut2(mydata,g = 4)时,输出的四分位数不对应于任何分位数函数输出.

任何帮助非常感谢.

提前致谢.

cof*_*nky 5

cut2帮助文件:

像切割但左端点的功能是包容性的,标签的形式是[下,上],除了最后一个间隔是[下,上].如果给出剪切,默认情况下将确保剪切包括整个x范围.

所以,cut2基本上cut有一些不同的默认值.我们来看看吧cut.

cut帮助文件:

cut将x的范围划分为间隔,并根据它们落入的间隔对x中的值进行编码.最左边的间隔对应于第一级,下一个最左边对应于第二级,依此类推.

quantile帮助文件:

通用函数分位数产生对应于给定概率的样本分位数.最小的观察值对应于0的概率,最大的概率对应于1的概率.

一个削减了范围x,另一个削减了"频率" x.

举例说明:

out <- 0:100
out2 <- c(seq(0, 50, 0.001), 51:100)
Run Code Online (Sandbox Code Playgroud)

两者都有相同的范围.从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]" 
Run Code Online (Sandbox Code Playgroud)

但是还有更多的"数据点"存在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 
Run Code Online (Sandbox Code Playgroud)

这之间的区别cutquantile.

上面的例子也告诉你两者是否一致,即在均匀分布的情况下.例如,从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 
Run Code Online (Sandbox Code Playgroud)

在这里,您可以清楚地看到每个箱子中的不同频率.