Если у меня есть большой набор данных в R, как я могу взять произвольную выборку данных с учетом распределения исходных данных, особенно если данные искажены и только 1% относятся к второстепенному классу, и я хочу взять предвзятую выборку данных?
Взяв непропорциональный образец из набора данных в R
Ответ 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),]