R 分位数函数的意外输出
对于下面的代码,我希望看到每个数字(1-25)在4个不同的百分位值下出现4次。然而,在第28和56百分位,结果并不像预期的那样。第28百分位应为7,第56百分位应为14R 分位数函数的意外输出,r,quantile,percentile,R,Quantile,Percentile,对于下面的代码,我希望看到每个数字(1-25)在4个不同的百分位值下出现4次。然而,在第28和56百分位,结果并不像预期的那样。第28百分位应为7,第56百分位应为14 > quantile(1:25, seq(0,1,0.01), type=1) 0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21% 22% 23% 2
> quantile(1:25, seq(0,1,0.01), type=1)
0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21% 22% 23% 24% 25% 26% 27% 28%
1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 5 5 5 5 6 6 6 6 7 7 7 8
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%
8 8 8 8 9 9 9 9 10 10 10 10 11 11 11 11 12 12 12 12 13 13 13 13 14 14 14 15 15
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%
15 15 15 16 16 16 16 17 17 17 17 18 18 18 18 19 19 19 19 20 20 20 20 21 21 21 21 22 22
87% 88% 89% 90% 91% 92% 93% 94% 95% 96% 97% 98% 99% 100%
22 22 23 23 23 23 24 24 24 24 25 25 25 25
如果我们使用不同的大小向量,相同(或更多)的百分位值将不正确
第7、14、28、55和56百分位值错误的另一个示例:
> quantile(1:100, seq(0,1,0.01), type=1)
0% 1% 2% 3% 4% 5% 6% 7% 8% 9% 10% 11% 12% 13% 14% 15% 16% 17% 18% 19% 20% 21% 22% 23% 24% 25% 26% 27% 28%
1 1 2 3 4 5 6 8 8 9 10 11 12 13 15 15 16 17 18 19 20 21 22 23 24 25 26 27 29
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%
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 56 57 58
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%
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%
87 88 89 90 91 92 93 94 95 96 97 98 99 100
这是什么原因?这是一个错误吗?计算分位数有不同的方法,可以给出稍微不同的答案。您正在使用类型1。类型3或类型4给出您期望的答案 有关详细信息,请参见分位数 分位数(1:25,序号(0,1,0.01),类型=4)[29] 28% 7.
我认为你说答案“不正确”是错误的。请记住,这是基于ECDF的,意思是这是一个实证结果,而不是理论结果,这9种不同的方法只是关于当经验结果不能使用时该怎么做,但是你需要使用一些方法来插值等等。使用你的第一个例子,如果我们取1到25之间的整数,计算一个传统的累积分布,我们
Values Freq Percent Cum. Percent
1 1 4 4
2 1 4 8
3 1 4 12
4 1 4 16
5 1 4 20
6 1 4 24
7 1 4 28
8 1 4 32
9 1 4 36
10 1 4 40
11 1 4 44
12 1 4 48
13 1 4 52
14 1 4 56
15 1 4 60
16 1 4 64
17 1 4 68
18 1 4 72
19 1 4 76
20 1 4 80
21 1 4 84
22 1 4 88
23 1 4 92
24 1 4 96
25 1 4 100
因此,每个观察值代表样本的4%。28和56有什么共同点?它们都是4的倍数,并且它们是唯一两个也代表某个值的“分位数范围”的下边界的地方。所以他们被推了起来。我认为类型2实际上最好地说明了这一点
a<-quantile(y, seq(0,1,0.01), type=1)
b<-quantile(y, seq(0,1,0.01), type=2)
c<-quantile(y, seq(0,1,0.01), type=3)
quantiles<-data.frame(a,b,c)
quantiles[1:30,]
a b c
0% 1 1.0 1
1% 1 1.0 1
2% 1 1.0 1
3% 1 1.0 1
4% 1 1.5 1
5% 2 2.0 1
6% 2 2.0 2
7% 2 2.0 2
8% 2 2.5 2
9% 3 3.0 2
10% 3 3.0 2
11% 3 3.0 3
12% 3 3.5 3
13% 4 4.0 3
14% 4 4.0 4
15% 4 4.0 4
16% 4 4.5 4
17% 5 5.0 4
18% 5 5.0 4
19% 5 5.0 5
20% 5 5.5 5
21% 6 6.0 5
22% 6 6.0 6
23% 6 6.0 6
24% 6 6.5 6
25% 7 7.0 6
26% 7 7.0 6
27% 7 7.0 7
28% 8 8.0 7
29% 8 8.0 7
30% 8 8.0 8
31% 8 8.0 8
32% 8 8.5 8
33% 9 9.0 8
这可能更容易看到分位数(1:5,seq(0,1,0.05),type=1)
1不是在你的第一个结果中出现了5次吗?他们似乎没有给我正确的答案。类型3与类型1相同,类型2插值分位数(1:5,seq(0,1,0.05),类型=3)
我看到的是类型3和类型4为第一个示例提供了相同的结果。见此:分位数(1:25,序号(0,1,0.01),type=3)编辑了答案,并从我的系统输出。也许是平台相关的。我不明白你说的这些地方是唯一代表分位数范围下限的地方是什么意思。4个倍数的百分位数不是代表分位数范围的下界吗?有时它们不在中间或顶部。以4、8和12为例。