繁体   English   中英

当我使用不同的函数时,为什么会得到两个不同的输出?

[英]Why do I get two different outputs when I use different functions?

我有以下数据:

df1<- structure(list(Score = c(26,  46, 62, 57, 18, 16, 44, 37, 47, 32, 71, 72, 
39, 85, 39, 77, 82, 34, 73, 79, 82, 29, 30, 33, 61, 18, 15, 22, 30, 15, 17, 50,
34, 67, 46, 73, 10, 62, 20, 81, 55, 69, 52, 78, 61, 14, 59, 37, 60, 55, 31, 11,
13, 30, 68, 60, 61, 69, 20, 47, 81, 62, 76, 43, 42, 10, 36, 54, 56, 49, 15, 7,  
48, 11, 51, 32, 55, 80, 13, 57, 55, 70, 16, 85, 40, 75, 45, 7,  46, 19, 81, 35,
63, 30, 16, 71, 50, 15, 81, 55, 46, 27, 64, 29, 25, 79, 70, 13, 27, 14, 62, 53,
26, 53, 74, 48, 73, 68, 82, class = "data.frame")))

我使用以下函数来获取十分位数:

df1 %>%
    mutate(quantile = ntile(-Score, 10))

我使用了StatMeasures包来计算十分位数。 我用过了:

df2<- decile(vector = Score, decreasing = TRUE)

但是我使用这两个函数得到两个不同的十分位数。 这很令人困惑。 哪一个是正确的? 我错过了什么吗? 任何人都可以帮忙吗?

n_tile用于粗略地将值放入 10 个 bins/ n_tile 它按等级排序,即第一个 n/10 等级进入 1 ,下一个 n/10 进入 2 等等。 因此,当您在十分位数值附近有联系时,它可能会进入不同的垃圾箱:

首先我们取回您的计算:

library(StatMeasures)
library(dplyr)

df1 = data.frame(
Score = c(26, 46, 62, 57, 18, 16, 44, 37, 47, 32, 71, 72, 39, 85, 39, 77, 82, 34, 73, 79, 82, 29, 30, 33, 61, 18, 15, 22, 30, 15, 17, 50, 34, 67, 46, 73, 10, 62, 20, 81, 55, 69, 52, 78, 61, 14, 59, 37, 60, 55, 31, 11, 13, 30, 68, 60, 61, 69, 20, 47, 81, 62, 76, 43, 42, 10, 36, 54, 56, 49, 15, 7, 48, 11, 51, 32, 55, 80, 13, 57, 55, 70, 16, 85, 40, 75, 45, 7, 46, 19, 81, 35, 63, 30, 16, 71, 50, 15, 81, 55, 46, 27, 64, 29, 25, 79, 70, 13, 27, 14, 62, 53, 26, 53, 74, 48, 73, 68, 82)
)

df1 = df1 %>%
mutate(quantile1 = ntile(Score, 10)) %>%
mutate(quantile2 = decile(vector = Score))

我们会查看您的十分位数值:

quantile(df1$Score,seq(0,1,by=0.1))
  0%  10%  20%  30%  40%  50%  60%  70%  80%  90% 100% 
 7.0 15.0 21.2 30.4 39.2 48.0 55.0 61.6 70.0 78.2 85.0 

两个排名不同的地方:

df1[df1$quantile1 != df1$quantile2,]
    Score quantile1 quantile2
3      62         7         8
20     79         9        10
30     15         2         1
71     15         2         1
81     55         7         6
98     15         2         1
100    55         7         6
116    48         6         5

我们看一个例子:

df1[df1$Score==48,]
    Score quantile1 quantile2
73     48         5         5
116    48         6         5

如果你想要十分位数, n_tile的第一种方法是不正确的,因为 48 进入 2 个 bin。 因此,请使用StatMeasures的 decile 函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM