R语言中quantile函数求分位数
1、分位数表示有百分之多少的数值小于该处的数值。
quantile函数默认返回五个数值:
最小值、第一分位数值、 第二分位(中位数)、第三分位数值、最大值。
当数值个数为奇数时最为简单:
举例1:
> a <- c(1, 3, 4, 6, 7, 9, 15) > a ## 测试向量, 长度为7,奇数 [1] 1 3 4 6 7 9 15 > quantile(a) ## 中位数为6; 第一分位为3和4的平均值,即3.5; 第三分位为7和9的平均值,即8; 0% 25% 50% 75% 100% 1.0 3.5 6.0 8.0 15.0
举例2:
> a <- c(1, 2, 3, 4, 6, 7, 9, 15, 20) > a ## 测试向量,长度为9, 奇数 [1] 1 2 3 4 6 7 9 15 20 > quantile(a) ## 中位数为6; 第一分位为3; 第二分位为9; 0% 25% 50% 75% 100% 1 3 6 9 20
当数值个数为偶数时,计算较为复杂。
无论是数值个数是奇数还是偶数,其计算公式为:
x%(n - 1) + 1; 得到的数值表示所求的x%的位置及其左右的权重, 采用加权平均的方法计算具体的分位数。
举例1:n为奇数
> a <- c(1, 3, 4, 6, 7, 9, 15) > a ## 测试向量,长度为n = 7;奇数 [1] 1 3 4 6 7 9 15 > quantile(a) 0% 25% 50% 75% 100% 1.0 3.5 6.0 8.0 15.0
计算第一分位:
x%(n - 1) + 1 = 25%(7 - 1) + 1 = 1.5 + 1 = 2.5;
2.5表示所求的25%分位数位于第2个数和第3个数之间,且权重分别为0.5、0.5;
以及可计算25%分位数为:
3 * 0.5 + 4 * 0.5 = 1.5 + 2 = 3.5;
举例2:n为偶数
> a <- c(1, 5, 8, 9, 12, 20) > a ## 测试向量, n = 6; 偶数 [1] 1 5 8 9 12 20 > quantile(a) 0% 25% 50% 75% 100% 1.00 5.75 8.50 11.25 20.00
计算第一分位:
x%(n - 1)+ 1 = 25%(6 - 1)+ 1 = 1.25 + 1 = 2.25;
表明25%分位的数位于第2个数和第3个数之间;且第2个数的权重为0.75,第3个数的权重为0.25,即:
5 * 0.75 + 8 * 0.25 = 3.75 + 2.00 = 5.75.
同理计算第三分位:
x%(n - 1) + 1 = 75%(6 - 1)+ 1 = 3.75 + 1 = 4.75;
表明75%分位为数在第4个数和第5个数之间; 且第4个数的权重为0.25,第5个数的权重为0.75, 即:
9 * 0.25 + 12 * 0.75 = 2.25 + 9 = 11.25。