2

1020 サイズ測定のデータセットがあります。これらの 1020 の数字に基づいて新しいデータセットを作成する必要があります。数字をランダムに取り出して置換する必要があります。ただし、次の方法でこのランダム サンプリングを行う必要があります。

  1. 元のデータセットからランダムに 2 つの数値を取り出します。
  2. これら 2 つの乱数のうち、大きい方の数を選択します。
  3. この大きな数値を新しいデータセットに取得します。
  4. 手順 1 ~ 3 を繰り返して、1020 サイズの新しいデータセット (元のデータセットのように) を作成し、合計で 1020 サイズの新しいデータセットを 10000 個作成します。

ブートストラップ法を使用して元のデータセットからランダムに番号を選択することにより、元のデータセットに基づいて 10000 個の新しいデータセットを作成することができます。

a <- numeric(10000)
for(i in 1:10000) a[i] <- sample(size, replace = T)

しかし、上記のこのコマンドを使用して 2 つの乱数を取得し、大きい方を選択し、この大きい方を新しいデータセットに含める方法がわかりません。

それは次のようなものでしょうか?

b <- numeric(10000)
for(i in 1:10000) b[i] <- sample(size, 2, ......, replace = T))

そして、いくつかのコマンド(私にはわかりません)があり、ドットは2つのうちより大きな数を新しいデータセットに取得するためのものでしたか?

4

2 に答える 2

1

これはあなたが望むことをするかもしれないと思います。 y1最初のドローがすべてペアでy2含まれ、2 番目のドローがすべて含まれます。関数はこれらのそれぞれの大きい方を取り、pmaxmatrix コマンドはデータを 1020 行 10000 列の行列に入れます。これらの「マジック」ナンバーの一部をスクリプト内の変数に置き換えて、テスト目的で小さなサンプルを簡単に試すことができるようにすることができます。

y1 <- sample(data, 1020 * 10000, replace = TRUE)
y2 <- sample(data, 1020 * 10000, replace = TRUE)

bigDat <- matrix( pmax(y1, y2), nrow = 1020)
于 2013-06-19T19:15:50.873 に答える
1

なぜあなたがこれをやりたいのか想像するのに苦労していますが、... ここにもっと小さなスケールの例があります. あなたが説明したように、10回の測定値でいくつかの偽のデータを作成dfし、3つのブートストラップサンプルを生成しました。df実際には、1020 の測定値の実際のデータ フレームに置き換えて、 nboots10000 に等しく設定します。

# fake data
df <- data.frame(meas=rnorm(n))
# number of bootstrap samples you want
nboots <- 3

# number of rows in fake data
n <- dim(df)[1]
# array of initial double bootstrap sample
init <- array(sample(1:n, n*2*nboots, replace=TRUE), dim=c(n, nboots, 2))
# keep only the bigger measurement from each pair of bootstrap samples
bootmeas <- matrix(pmax(df$meas[init[, , 1]], df$meas[init[, , 2]]), nrow=n)
于 2013-06-19T19:17:56.097 に答える