我有一个简单的问题,但是我对十进制,分位数和百分位数的定义感到困惑。
我的目的是计算各种收入和财富份额。这就是总收入或财富占总人口x%的份额。
因此,假设一个人想要计算前10%的人拥有多少财富。
如何在R上执行此操作?我的以下计算正确吗?
MWE
w<-rgamma(10000, 3, scale = 1/3)
per <- quantile(w, c(0.1, 0.9))
top_1_percent <- (per[2]/sum(w))*100
bottom_90_percent <-per[1]/sum(w))*100
答案 0 :(得分:1)
前10%应该是:
sum(w[w > per[2]])/sum(w)
或者:
sum(tail(sort(w), .1 * length(w))) / sum(w)
后90%为1-前10%。
答案 1 :(得分:1)
如果我对问题的理解正确,那么下面的方法将解决该问题。
set.seed(1234) # Make the results reproducible
w <- rgamma(10000, 3, scale = 1/3)
per <- quantile(w, c(0.1, 0.9))
现在获得前10%的指数i1
并汇总其财富。
i1 <- w >= per[2]
sum(w[i1])
#[1] 2196.856
底部10%的索引相同,索引为i2
。
i2 <- w <= per[1]
sum(w[i2])
#[1] 254.6375
请注意,我正在使用>=
和<=
。请参阅帮助页面?quantile
,以了解R可以执行的分位数计算类型。这由参数type
给出。
编辑。
要计算前10%和后10%的财富比例和百分比,除以总财富,再乘以100
。
top10 <- sum(w[i1])/sum(w)
top10
#[1] 0.221291
100*top10
#[1] 22.1291
bottom10 <- sum(w[i2])/sum(w)
bottom10
#[1] 0.02564983
100*bottom10
#[1] 2.564983