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

时间:2019-07-16 19:06:53

标签: r loops vector

我正在尝试找到涵盖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); Atkinson不等式测度(ε= 1)的近似值等于100∙(1-G / A)。

我正在使用具有atkinson功能的'acid'软件包。

1 个答案:

答案 0 :(得分:0)

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