Jeśli mam duży zbiór danych w R, w jaki sposób mogę pobrać losową próbkę danych, biorąc pod uwagę dystrybucję oryginalnych danych, szczególnie jeśli dane są przekrzywione i tylko 1% należą do mniejszej klasy i chcę wziąć stronniczą próbkę danych?Pobieranie nieproporcjonalnej próbki z zestawu danych w R
12
A
Odpowiedz
20
Funkcja sample(x, n, replace = FALSE, prob = NULL)
pobiera próbkę z wektora x
o rozmiarze n
. Ta próbka może być z lub bez wymiany, a prawdopodobieństwo wybierając każdy element do próbki mogą być albo taka sama dla każdego elementu lub wektorem powiadomiony przez użytkownika.
Jeśli chcesz pobrać próbkę samych prawdopodobieństw dla każdego elementu z 50 przypadków, wszystko co musisz zrobić, to
n <- 50
smpl <- df[sample(nrow(df), 50),]
Jednakże, jeśli chcesz dać różne prawdopodobieństwa zostanie wybrany do elementów, powiedzmy, że elementy seks jest M ma prawdopodobieństwo 0,25, natomiast te, których seks jest F ma prob 0,75, to sh ould zrobić
n <- 50
prb <- ifelse(sex=="M",0.25,0.75)
smpl <- df[sample(nrow(df), 50, prob = prb),]
importować dane, znaleźć wagi dla firmy „poziomy” i niech 'kontrole wyrywkowe zadbać o resztę. Pomoże ci to, jeśli możesz zawęzić swoje pytanie (przynajmniej z przykładowymi danymi - http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). –
Zobacz także http://stackoverflow.com/questions/2923092/how-do-i-sub-sample-data-by-group-using-ddply –