0

datta次のコードを使用してデータ フレームからブートストラップ サンプルを作成する場合

boot1a <- replicate(3, do.call("rbind", lapply(sample(unique(datta$pid),2000,replace=TRUE), function(x) datta[datta$pid==x,])), simplify=FALSE)
boot1b <- data.frame(boot1a) # data frame from the list
sample1 <- boot1b[order(boot1b$pid),] # sorting based on pid and storing 

ブートストラップ サンプルの変数には、 でsample1終わる名前が付いてい.1, .2, .3, ...ます。(pidは人物 ID です。同じ人物のさまざまな観測に対して同様の値を取ります)。たとえば、上記のコードでは、変数xydatta名前xyは 、xy.1、およびxy.21 番目、2 番目、3 番目のブートストラップ サンプルに関連付けられます。それぞれの変数名が元のデータ フレームと同じままで、さまざまなブートストラップ サンプルに別の名前を付けることをお勧めします。上記の場合、3 つの異なるデータ フレームに格納されたブートストラップ サンプルが必要です。たとえば、boot1, boot2, boot3ここで、各データ フレームの変数名は、元のデータ フレームの変数名と同じです。一度に 1 つのレプリケーションで手動で始めましたが、多くのブートストラップ サンプルを作成するには多くの時間がかかります。誰かがこれをより良い方法で行う方法について何か提案がありますか?

編集 データフレーム内の多くの変数のうちの 4 つの最初のいくつかの観察結果dattは次のとおりです。

    pid xy  zy  wy
     1  10  2   -5
     1  12  3   -4.5
     1  14  4   -4
     1  16  5   -3.5
     1  18  6   -3
     1  20  7   -2.5
     2  22  8   -2
     2  24  9   -1.5
     2  26  10  -1
     2  28  11  -0.5
     2  30  12  0
     2  32  13  0.5
4

1 に答える 1

2

サンプルの例を次に示します。

データ

set.seed(123)
data<-rnorm(100, 160, 20)
data1<-as.data.frame(matrix(data, nrow = 20, ncol = 5, byrow = FALSE))
n<-5
data2<-do.call("rbind", replicate(n, data1, simplify=FALSE))
data2$fac<-as.factor(rep(1:n,each=20))

サンプリング

library(plyr)
sample1<-ddply(data2,.(fac),summarize, mysample=sample((1:length(fac)),size=1,replace=TRUE))
  fac mysample
1   1       18
2   2       14
3   3       13
4   4       20
5   5       14
于 2013-08-26T17:18:49.160 に答える