Подтвердить что ты не робот

Взяв непропорциональный образец из набора данных в R

Если у меня есть большой набор данных в R, как я могу взять произвольную выборку данных с учетом распределения исходных данных, особенно если данные искажены и только 1% относятся к второстепенному классу, и я хочу взять предвзятую выборку данных?

4b9b3361

Ответ 1

Функция sample(x, n, replace = FALSE, prob = NULL) берет образец из вектора x размера n. Этот образец может быть с или без замены, а вероятность выбора каждого элемента в образце может быть либо одинаковой для каждого элемента, либо вектор, информированный пользователем.

Если вы хотите взять образец одинаковых вероятностей для каждого элемента с 50 случаями, все, что вам нужно сделать, это

n <- 50
smpl <- df[sample(nrow(df), 50),]

Однако, если вы хотите дать разные вероятности выбора для элементов, допустим, элементы sex M имеют вероятность 0,25 > , тогда как те, у кого пол F, имеет значение 0,75, вы должны сделать

n <- 50
prb <- ifelse(sex=="M",0.25,0.75)
smpl <- df[sample(nrow(df), 50, prob = prb),]