私は40人の個人を含み、それぞれが10ビネットを評価している研究を分析しています。
indiv vign score score2 gender
1 1 5 3 1
1 2 2 4 1
1 3 8 1 1
. . . . .
. . . . .
. . . . .
39 10 9 1 1
40 8 1 5 0
40 9 3 8 0
ブートストラップを取りたかったのですが、ビネットをサンプリングするのは意味がないことにすぐに気付きました。代わりに人をサンプリングする必要があります(したがって、1人あたり約10行をサンプリングします)。
次の関数は機能しますが、次の関数のボトルネックのようなものです。問題は、どうすればこれをより効率的に行うことができるかということです。
ResampleMultilevel <- function(data, groupvar) {
n <- length(unique(data[,groupvar]))
index <- sample(data[ , groupvar], n, replace = TRUE)
resampled <- NULL # one of the issues is that we do not know
# the size of the matrix yet, since it may vary.
for (i in 1:n) {
resampled <- rbind(resampled, data[data[, groupvar] == index[i], ])
}
return(resampled)
}
サブセットの問題は、重複を保持する方法が見つからなかったことです。
a <- cbind(rep(1:40, each = 10), rep(1:10, 4), rnorm(40), rnorm(40)), rep(1:10, 4), rnorm(40), rnorm(40))
index <- c(1,1)
subset(a, a[,1] == index)