R分位数函数因小值而失败

R quantile function fails with small values

R 分位数函数无法找到非常小的十分位数,是否有比其他算法效果更好的算法?

R 分位数函数 不会 无法找到非常小的值的十分位数;只是如果您的集合中没有很多样本,那么 概念 的十分位数会变得模棱两可。实际上有 9 种不同的方法可以使用 R 中的 quantile 函数计算分位数,您可以通过设置 type 参数来更改。

这是一个尝试提取向量的十分位数的示例 c(1, 2, 3),9 种方法中的每一种都可用。这些是否符合您的期望?就个人而言,我喜欢这里的方法 7,但我想这实际上取决于您如何定义十分位数,以及用于什么目的。

sapply(1:9, function(x) quantile(c(1:3), probs = seq(0, 1, 0.1), type = x))
#>      [,1] [,2] [,3] [,4] [,5] [,6] [,7]     [,8]  [,9]
#> 0%      1    1    1  1.0  1.0  1.0  1.0 1.000000 1.000
#> 10%     1    1    1  1.0  1.0  1.0  1.2 1.000000 1.000
#> 20%     1    1    1  1.0  1.1  1.0  1.4 1.000000 1.025
#> 30%     1    1    1  1.0  1.4  1.2  1.6 1.333333 1.350
#> 40%     2    2    1  1.2  1.7  1.6  1.8 1.666667 1.675
#> 50%     2    2    2  1.5  2.0  2.0  2.0 2.000000 2.000
#> 60%     2    2    2  1.8  2.3  2.4  2.2 2.333333 2.325
#> 70%     3    3    2  2.1  2.6  2.8  2.4 2.666667 2.650
#> 80%     3    3    2  2.4  2.9  3.0  2.6 3.000000 2.975
#> 90%     3    3    3  2.7  3.0  3.0  2.8 3.000000 3.000
#> 100%    3    3    3  3.0  3.0  3.0  3.0 3.000000 3.000

R软件没有实现形式分位数功能,否则这个软件有错误。对于区间 [0,1] 中的概率 p,分位数函数保持连续。请参阅 Parzen, E. (2004) 分位数概率和统计数据建模中的第 12 节。统计科学, 19(4), 652-662.

从这个意义上说,如果样本是{1,2,3,4,5,6,7,8,9,10},样本分位数是:

1 作为 0.1 分位数,

2 作为 0.2 分位数,

3 为 0.3 分位数,依此类推。

然而,R 中的 quantile() 函数,type=1,给出:

4 作为 0.3 分位数和

8 作为 0.7 分位数。

请参阅下面的示例。

> sapply(1:9,function(x) quantile(c(1:10),probs=seq(0,1,0.1),type=x))
     [,1] [,2] [,3] [,4] [,5] [,6] [,7]      [,8]   [,9]
0%      1  1.0    1    1  1.0  1.0  1.0  1.000000  1.000
10%     1  1.5    1    1  1.5  1.1  1.9  1.366667  1.400
20%     2  2.5    2    2  2.5  2.2  2.8  2.400000  2.425
30%     4  4.0    3    3  3.5  3.3  3.7  3.433333  3.450
40%     4  4.5    4    4  4.5  4.4  4.6  4.466667  4.475
50%     5  5.5    5    5  5.5  5.5  5.5  5.500000  5.500
60%     7  7.0    6    6  6.5  6.6  6.4  6.533333  6.525
70%     8  8.0    7    7  7.5  7.7  7.3  7.566667  7.550
80%     8  8.5    8    8  8.5  8.8  8.2  8.600000  8.575
90%     9  9.5    9    9  9.5  9.9  9.1  9.633333  9.600
100%   10 10.0   10   10 10.0 10.0 10.0 10.000000 10.000