我有1020个尺寸测量的数据集。我需要通过随机取出替换数字来创建基于这些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))
然后有一些命令(我不知道)有没有点可以从两个中获得更大的数字到新的数据集中?
答案 0 :(得分:1)
我认为这可能会做你想要的。 y1
将包含一对中的所有第一次抽奖,y2
将包含所有第二次抽奖。 pmax
函数占用每个函数中的较大者,矩阵命令将数据放入具有1020行和10000列的矩阵中。您可能希望用脚本中的变量替换其中一些“魔术”数字,以便您可以轻松地尝试使用小样本进行测试。
y1 <- sample(data, 1020 * 10000, replace = TRUE)
y2 <- sample(data, 1020 * 10000, replace = TRUE)
bigDat <- matrix( pmax(y1, y2), nrow = 1020)
答案 1 :(得分:1)
我很难想象你为什么要这样做,但是......这是一个规模小得多的例子。我创建了一些假数据df
,进行了10次测量并生成了3个bootstrap样本。在现实生活中,您将使用1020次测量的实际数据框架替换df
,并将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)