2

我有一个 1020 尺寸测量的数据集。我需要根据这 1020 个数字创建一个新数据集,方法是随机取出替换数字。但是,我需要通过以下方式进行随机抽样:

  1. 从原始数据集中随机取出两个数字。
  2. 选择这两个随机数中较大的一个。
  3. 将这个更大的数字放入新数据集中。
  4. 多次重复步骤 1-3,我有一个 1020 大小的新数据集(就像在原始数据集中一样),并且我总共有 10000 个大小为 1020 的新数据集。

我确实设法通过使用引导方法从原始数据集中随机挑选数字来基于原始数据集创建 10000 个新数据集:

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

但我不知道,如何使用上面的这个命令来获取两个随机数,选择更大的一个,并在新数据集中拥有这个更大的一个。

会不会是下面的东西?

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

然后有一些命令(我不知道)有没有点是要从两个中获得更大的数字到新的数据集中?

4

2 回答 2

1

我认为这可能会做你想要的。 y1将包含您的所有第一次抽签,y2并将包含所有第二次抽签。该pmax函数采用其中较大的一个,matrix 命令将数据放入一个具有 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 个引导样本。在现实生活中,您将用df1020 个测量值的真实数据框替换并设置nboots为 10000。

# 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 回答