r - 为大型数据集创建唯一向量



我试图找到跨越11,000多个观测值的单个国家的阿特金森指数度量。我有每个特定观察的十分位数度量,我可以创建一个单独的向量,例如 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(循环?)来为每个单独的观察做一些事情?

以下是对阿特金森指数计算的解释:

假设连续 10% 的人口拥有(赚取、分享)的收入份额y_1,...,y_10十分位数。平均份额(算术平均值)为 A=(y_1+⋯+y_10)/10;几何平均值为 G=√(10&y_1∙...∙y_10 );阿特金森不等式度量 (ε=1) 的近似值等于 100∙(1-G/A)。

我正在使用具有阿特金森函数的"酸"包。

在这里,我使用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)

最新更新