R中生成的分位数和百分位数之间的差异
Difference between Quantile and Percentile generated in R
请原谅我的数学问题,但为什么这两个代码的结果不同?预计 2015 年第 63 行和第 82 行累计百分比中的费用与第二行产生的费用相同。首先是 X63 的 0.591,X82 的 0.858,cumsum_pct 中的第二个代码分别显示 0.792 和 0.966。谢谢
set.seed(1)
library('dplyr')
Claims6 <- data.frame(year = factor(rep(c(2015, 2016), each = 10)),Expense = runif(20))
Claims6 %>%
group_by(year) %>%
do(data.frame(t(quantile(.$Expense, probs = c(0.10, 0.30, 0.63, 0.82)))))
# A tibble: 2 x 5
# Groups: year [2]
# year X10. X30. X63. X82.
# <fct> <dbl> <dbl> <dbl> <dbl>
# 1 2015 0.0488 0.439 0.591 0.858
# 2 2016 0.101 0.262 0.592 0.805
Claims6 %>% group_by(year) %>%
arrange(year,Expense) %>%
mutate(pct = round(Expense / sum(Expense),2),
cumsum_pct = round(cumsum(Expense) / sum(Expense),2))
# A tibble: 20 x 4
# Groups: year [2]
# year Expense pct cumsum_pct
# <fct> <dbl> <dbl> <dbl>
# 1 2015 0.0332 0.01 0.01
# 2 2015 0.0505 0.01 0.02
# 3 2015 0.384 0.07 0.09
# 4 2015 0.463 0.09 0.18
# 5 2015 0.467 0.09 0.26
# 6 2015 0.538 0.1 0.37
# 7 2015 0.617 0.12 0.48
# 8 2015 0.792 0.15 0.63
# 9 2015 0.966 0.18 0.82
# 10 2015 0.972 0.18 1
# 11 2016 0.0622 0.01 0.01
# 12 2016 0.106 0.02 0.03
# 13 2016 0.178 0.04 0.07
# 14 2016 0.298 0.06 0.13
# 15 2016 0.445 0.09 0.23
# 16 2016 0.591 0.12 0.35
# 17 2016 0.592 0.12 0.47
# 18 2016 0.765 0.16 0.63
# 19 2016 0.872 0.18 0.81
# 20 2016 0.904 0.19 1
这是两个相关但独立的摘要统计数据。第一个与排序有关,第二个与累计和有关。它们将涵盖相同的值范围,但元素的权重不同。
在下面的简单示例中,使用 quantile
的第一个计算与采样相关,表明 50% 的样本是 2,介于第二个和第三个值之间。即使第一个 and/or 最后一个值更极端,你也会得到相同的中值——quantile
只关心顺序。
第二个是数值的累积分布,显示50%的累积和在3处。
nums = c(0, 1, 3, 4)
quantile(nums)
# 0% 25% 50% 75% 100%
# 0.00 0.75 2.00 3.25 4.00
data.frame(nums = nums) %>%
mutate(pct = nums / sum(nums),
cumsum_pct = cumsum(pct))
# nums pct cumsum_pct
# 1 0 0.000 0.000
# 2 1 0.125 0.125
# 3 3 0.375 0.500
# 4 4 0.500 1.000
同样,您提供的两个计算结果之间的数字通常不会匹配,因为它们做的事情不同。 quantile
一个通过有序元素列表告诉给定分数的值,而另一个告诉累计和达到总数的给定分数时的值。
请原谅我的数学问题,但为什么这两个代码的结果不同?预计 2015 年第 63 行和第 82 行累计百分比中的费用与第二行产生的费用相同。首先是 X63 的 0.591,X82 的 0.858,cumsum_pct 中的第二个代码分别显示 0.792 和 0.966。谢谢
set.seed(1)
library('dplyr')
Claims6 <- data.frame(year = factor(rep(c(2015, 2016), each = 10)),Expense = runif(20))
Claims6 %>%
group_by(year) %>%
do(data.frame(t(quantile(.$Expense, probs = c(0.10, 0.30, 0.63, 0.82)))))
# A tibble: 2 x 5
# Groups: year [2]
# year X10. X30. X63. X82.
# <fct> <dbl> <dbl> <dbl> <dbl>
# 1 2015 0.0488 0.439 0.591 0.858
# 2 2016 0.101 0.262 0.592 0.805
Claims6 %>% group_by(year) %>%
arrange(year,Expense) %>%
mutate(pct = round(Expense / sum(Expense),2),
cumsum_pct = round(cumsum(Expense) / sum(Expense),2))
# A tibble: 20 x 4
# Groups: year [2]
# year Expense pct cumsum_pct
# <fct> <dbl> <dbl> <dbl>
# 1 2015 0.0332 0.01 0.01
# 2 2015 0.0505 0.01 0.02
# 3 2015 0.384 0.07 0.09
# 4 2015 0.463 0.09 0.18
# 5 2015 0.467 0.09 0.26
# 6 2015 0.538 0.1 0.37
# 7 2015 0.617 0.12 0.48
# 8 2015 0.792 0.15 0.63
# 9 2015 0.966 0.18 0.82
# 10 2015 0.972 0.18 1
# 11 2016 0.0622 0.01 0.01
# 12 2016 0.106 0.02 0.03
# 13 2016 0.178 0.04 0.07
# 14 2016 0.298 0.06 0.13
# 15 2016 0.445 0.09 0.23
# 16 2016 0.591 0.12 0.35
# 17 2016 0.592 0.12 0.47
# 18 2016 0.765 0.16 0.63
# 19 2016 0.872 0.18 0.81
# 20 2016 0.904 0.19 1
这是两个相关但独立的摘要统计数据。第一个与排序有关,第二个与累计和有关。它们将涵盖相同的值范围,但元素的权重不同。
在下面的简单示例中,使用 quantile
的第一个计算与采样相关,表明 50% 的样本是 2,介于第二个和第三个值之间。即使第一个 and/or 最后一个值更极端,你也会得到相同的中值——quantile
只关心顺序。
第二个是数值的累积分布,显示50%的累积和在3处。
nums = c(0, 1, 3, 4)
quantile(nums)
# 0% 25% 50% 75% 100%
# 0.00 0.75 2.00 3.25 4.00
data.frame(nums = nums) %>%
mutate(pct = nums / sum(nums),
cumsum_pct = cumsum(pct))
# nums pct cumsum_pct
# 1 0 0.000 0.000
# 2 1 0.125 0.125
# 3 3 0.375 0.500
# 4 4 0.500 1.000
同样,您提供的两个计算结果之间的数字通常不会匹配,因为它们做的事情不同。 quantile
一个通过有序元素列表告诉给定分数的值,而另一个告诉累计和达到总数的给定分数时的值。