Как я могу пересчитать данные с помощью взвешенного загрузчика в R? - PullRequest
0 голосов
/ 03 июля 2018

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

Ситуация такая.

У меня есть данные, которые состоят из нормальных субъектов (N=20000) и пациентов (N=500).

Я сделал новый набор данных с нормальными субъектами (N=2000) и пациентами (n=500), потому что я провел определенный эксперимент с субъектами (N=2500).

Как видите, нормальные субъекты извлекли 1/10 исходных данных, а пациенты - все.

Поэтому я должен дать вес нормальным предметам для выполнения алгоритма машинного обучения.

Пожалуйста, дайте мне знать, как я могу загрузиться с весом в R.

Спасибо.

1 Ответ

0 голосов
/ 03 июля 2018

Похоже, вам действительно нужно стратифицировать повторную выборку, а не взвешенную повторную выборку.

Ваши данные структурированы в две разные группы разных размеров, и вы хотели бы сохранить эту структуру в своем загрузочном устройстве. Вы не сказали, какую функцию вы применяли к этим данным, поэтому давайте воспользуемся чем-то простым, например, средним.

Сгенерируйте поддельные данные и возьмите (наблюдаемые) средства:

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...