Похоже, вам действительно нужно стратифицировать повторную выборку, а не взвешенную повторную выборку.
Ваши данные структурированы в две разные группы разных размеров, и вы хотели бы сохранить эту структуру в своем загрузочном устройстве. Вы не сказали, какую функцию вы применяли к этим данным, поэтому давайте воспользуемся чем-то простым, например, средним.
Сгенерируйте поддельные данные и возьмите (наблюдаемые) средства:
controls <- rnorm(2000, mean = 10)
patients <- rnorm(500, mean = 9.7)
mean(controls)
mean(patients)
Скажите R, что мы хотим выполнить 200 загрузок, и настройте два пустых вектора для хранения средств для каждого примера начальной загрузки:
nbootraps <- 200
boot_controls <- numeric(nbootraps)
boot_patients <- numeric(nbootraps)
Используя цикл, мы можем нарисовать повторные образцы того же размера, что и в исходном образце, и рассчитать средние значения для каждого.
for(i in 1:nbootraps){
# draw bootstrap sample
new_controls <- controls[sample(1:2000, replace = TRUE)]
new_patients <- patients[sample(1:500, replace = TRUE)]
# send the mean of each bootstrap sample to boot_ vectors
boot_controls[i] <- mean(new_controls)
boot_patients[i] <- mean(new_patients)
}
Наконец, построите начальные распределения для групповых средних:
p1 <- hist(boot_controls)
p2 <- hist(boot_patients)
plot(p1, col=rgb(0,0,1,1/4), xlim = c(9.5,10.5), main="")
plot(p2, col=rgb(1,0,0,1/4), add=T)