我正在努力寻找单个国家的阿特金森指数( Atkinson Index ),它涵盖了11,000多个观察值。我有每个特定观察值的十进制度量,我可以创建一个单独的向量ex。c(d1,d2,...d10),并计算阿特金森指数,但我相信有一种更快的方法可以在11,000个观测值中做到这一点。有没有任何可能的方法,我可以指示R在所有11,000个观测值中创建一个唯一的向量,这些观测值使用特定于每个单独观测值的十进制?
我对R编码还是比较陌生的,但我已经尝试过创建某种类型的循环,该循环将返回与每个单独的观察值相对应的分位数的向量。
id2 <- c(3.86, 5.29, 6.38, 7.32, 8.38, 9.35, 10.82, 12.47, 14.90, 21.22)
atkinson(id2, epsilon = 1)
[1] 0.1079504
我可以这样做超过11,000次,但显然这需要一段时间,有没有办法构造R(循环?)为每个单独的观察做一些这样的事情?
以下是对Atkinson指数计算的解释:
假设y_1、…,y_10是连续10%的人口所拥有(赚取,分享)的收入的十进制份额。平均份额(算术平均值)为A=(y_1+⋯+y_10)/10;几何平均值为G=√(10&y_1∙…∙y_10 );阿特金森不等式测度(ε=1)的近似等于100∙(1-G/A)。
我使用的是具有atkinson功能的“acid”包。
发布于 2019-07-17 03:32:37
在这里,我使用matrixStats
包以一种矢量化的方式进行操作:
# LOAD PACKAGE
library(matrixStats)
# SOME MADE UP DATA
data <- matrix(runif(11000*10), ncol=10)
# CALCULATE ARITHMETIC MEAN
A <- rowMeans(data)
# CALCULATE GEOMETRIC
G <- rowProds(data)^(1/10)
#CALCULATE SCORES
atkinson <- 100 * (1 - G/A)
https://stackoverflow.com/questions/57063924
复制相似问题