web-dev-qa-db-ja.com

Rのデータセットから不均衡なサンプルを取得する

Rに大きなデータセットがある場合、特にデータが偏っていて1%だけがマイナークラスに属していて、バイアスをかけたい場合は、元のデータの分布を考慮してデータのランダムサンプルをどのように取得できますか?データのサンプル?

12
simplyme

sample(x, n, replace = FALSE, prob = NULL)関数は、サイズxのベクトルnからサンプルを取得します。このサンプルはwithまたは置換なしであり、サンプルへの各要素を選択する確率は各要素で同じ、またはベクトルユーザーから通知されます。

50のケースで各要素について同じ確率のサンプルを取得する場合は、必要なのは

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

ただし、要素に対して選択される確率を変えたい場合は、たとえば、sexである要素が[〜#〜] m [〜#〜]である確率があるとします。 .25sex[〜#〜] f [〜#〜]であるものは確率.75、やったほうがいい

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