выбор двух случайных чисел с помощью начальной загрузки

У меня есть набор данных 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))

А потом у какой-то команды (какой я не знаю) были точки, чтобы получить большее число из двух в новые наборы данных?


person user2120231    schedule 19.06.2013    source источник
comment
Я бы написал функцию, чтобы сделать это один раз, а затем вызвал бы ее с помощью boot из загрузочного пакета.   -  person IRTFM    schedule 19.06.2013


Ответы (2)


Я думаю, это может сделать то, что вы хотите. 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)
person John    schedule 19.06.2013
comment
Большое спасибо! Мне удалось сделать то, что я хотел с этим советом. :) - person user2120231; 20.06.2013

Мне трудно представить, зачем вам это нужно, но... вот пример в гораздо меньшем масштабе. Я создал некоторые поддельные данные, df, с 10 измерениями и сгенерировал 3 образца начальной загрузки, как вы описываете. В реальной жизни вы бы заменили df своим реальным кадром данных из 1020 измерений и установили 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)
person Jean V. Adams    schedule 19.06.2013