Рассчитать из подобразца N раз в R - PullRequest
0 голосов
/ 07 мая 2018

Рассмотрим следующие данные с 4 наблюдениями:

library(Benchmarking)
d <- data.frame(x1=c(100,200,30,500), x2=c(300,200,10,50), y=c(75,100,3000,400),  row.names = LETTERS[1:4])
e <- dea(d[c('x1', 'x2')], d$y)
mean(eff(e))

Это дает мне:

[1] 0.4125

Теперь я хочу выбрать 3 наблюдений из d для всех 4 комбинаций (то есть без повторения). Для всех этих 4 комбинаций с 3 наблюдениями, которые я хочу вычислить:

e <- dea(d[c('x1', 'x2')], d$y)
mean(eff(e))

Это должно дать мне следующее среднее значение для всех 4 комбинаций:

0,45   0,5   1   0,483...

Из этих 4 средних я бы хотел посчитать среднее. Это дает мне:

0.6083333

Может кто-нибудь показать мне цикл / функцию, которые делают все это в одном?

1 Ответ

0 голосов
/ 07 мая 2018

Вы можете использовать combn, чтобы выяснить все возможные комбинации линий, а затем запустить цикл над ними:

row_comb = combn(1:4,3)

m = vector('numeric')

for (r in 1:4)
{
  e1 <- dea(d[row_comb[,r], c('x1', 'x2')], d$y[row_comb[,r]])
  m[r] <- mean(eff(e1))
}

mean(m)
...