2016-07-19 19 views
0

My-Datensatz wie folgt aussieht (nennen wir es data_xy)R Codierung: Bootstrap einen Datensatz mit wiederholten Messungen

id X Y 
1 5 10 
1 6 11 
1 4 8 
2 3 9 
2 3 12 
3 4 10 
... 

Beobachtungen von insgesamt N-IDs. Jede ID hat mehrere Messreihen.

Ich möchte die ID mit Ersatz booten. Es ist sehr wahrscheinlich, dass die Bootstrap-ID Duplikate enthält.

b_idx <- sample.int(N,N,T) 

ist es wahrscheinlich, dass

b_idx=c(1,1,3,4,4,4....) 

Dann, wie mit b_idx die Bootstrap-Probe zu schaffen? Wenn ich

tun
data_xy[data_xy$id==b_idx,] 

jeder id (mit seinen wiederholten Messungen) werden nur diejenigen in meinem Bootstrap-Datensatz auftreten. Was ich wirklich will ist, die Beobachtungen für id=k zu replizieren, wie oft diese ID in b_idx auftritt. Wie kann ich das erreichen?

Antwort

0

Ich benutze dafür die Funktion 'Matches' aus dem grr-Paket.

Indices <- unlist(matches(b.idx, data_xy$ID, list=TRUE)) 

b.data <- data_xy[Indices, ] 
0

Sie müssen die ID nicht direkt verwenden; Sie können nur Probe Zeilennummern, und dann direkt Index der data.frame mit denen:

# How many rows in the data.frame? 
n <- nrow(mtcars) 

# Sample them 
mtcars[sample(x = n, size = n, replace = TRUE), ] 

Wenn Sie zweimal auf die gleiche ganze Zahl passieren, können Sie diese Zeile zweimal bekommen. Hier ist ein Beispiel für dieses Prinzip in Aktion:

mtcars[c(1, 1), ] 

Wenn Sie es nicht wissen bereits, sollten Sie the boot package überprüfen, die für Sie eine Menge Bootstrapping Szenarien automatisiert.