4

我试图通过使用 Hmisc 中的 cut2 来计算向量的等分位数切割。

library(Hmisc)
c <- c(-4.18304,-3.18343,-2.93237,-2.82836,-2.13478,-2.01892,-1.88773,
       -1.83124,-1.74953,-1.74858,-0.63265,-0.59626,-0.5681)

cut2(c, g=3, onlycuts=TRUE)

[1] -4.18304 -2.01892 -1.74858 -0.56810

但我期待以下结果(33%、33%、33%):

[1] -4.18304 -2.13478 -1.74858 -0.56810

我应该继续使用 cut2 还是尝试不同的方法?我怎样才能让它工作?谢谢你的建议。

4

2 回答 2

4

您正在看到切点,但您想要表格计数,并且您希望它们作为总数的分数,所以请改为:

> prop.table(table(cut2(c, g=3) ) )

[-4.18,-2.019) [-2.02,-1.749) [-1.75,-0.568] 
     0.3846154      0.3076923      0.3076923 

(显然,当元素的数量不能被 3 整除时,您不能期望 cut2 创建精确的拆分。)

于 2013-05-03T00:09:24.847 回答
2

原始数据集中似乎意外出现了 13 个值,而不是 12 个。十三个值不能平均分为三个分位数组(如 BondedDust 所述)。这是原始问题,除了排除了一个选定的数据值(-1.74953),使其成为十二个值。这给出了最初预期的结果:

library(Hmisc)

c<-c(-4.18304,-3.18343,-2.93237,-2.82836,-2.13478,-2.01892,-1.88773,-1.83124,-1.74858,-0.63265,-0.59626,-0.5681)

cut2(c, g=3,onlycuts=TRUE)
#[1] -4.18304 -2.13478 -1.74953 -0.5681


为了让不熟悉cut2的人更清楚(比如今天早上的我),这里有一个类似的问题,除了我们将使用整数 1 到 12 (分配给 vector )。Hmiscdozen_values

library(Hmisc)

dozen_values <-1:12

quantile_groups <- cut2(dozen_values,g=3)

levels(quantile_groups)
## [1] "[1, 5)" "[5, 9)" "[9,12]"

cutpoints <- cut2(dozen_values, g=3, onlycuts=TRUE)

cutpoints
## [1]  1  5  9 12

# Show which values belong to which quantile group, using a data frame
quantile_DF <- data.frame(dozen_values, quantile_groups)
names(quantile_DF) <- c("value", "quantile_group")

quantile_DF
##    value quantile_group
## 1      1         [1, 5)
## 2      2         [1, 5)
## 3      3         [1, 5)
## 4      4         [1, 5)
## 5      5         [5, 9)
## 6      6         [5, 9)
## 7      7         [5, 9)
## 8      8         [5, 9)
## 9      9         [9,12]
## 10    10         [9,12]
## 11    11         [9,12]
## 12    12         [9,12]

请注意,第一个分位数组包括但不包括5 的所有内容(在这种情况下,即 1 到 4)。第二个分位数组包含 5 到但不包括9(即在这种情况下为 5 到 8)。第三个(最后一个)分位数组包含 9 到 12,其中包括最后一个值 12。与其他分位数组不同,第三个分位数组包括显示的最后一个值。

无论如何,您可以看到“cutpoints” 1, 5, 9, 并12以最简洁的方式描述了分位数组的起点和终点,但是如果不阅读相关文档就很钝(链接到单页 Inside-R 站点,而不是近 400 页的 PDF 手册)。

如果您不熟悉,请参阅有关括号与方括号表示法的解释。

于 2014-10-23T18:07:11.030 回答