Czy chcesz, aby proporcje w próbce były dokładnie takie, jak podano? lub reprezentować ideę pobierania próbek z bardzo dużej populacji przy tych proporcjach (więc proporcje próby będą bliskie, ale nie dokładne)?
Jeśli chcesz uzyskać dokładne proporcje, możesz zastosować się do sugestii Brandona i użyć sample
funkcji R, aby losowo uporządkować wektor o dokładnych proporcjach.
Jeśli chcesz próbkować z populacji, ale nie ograniczać dokładnych proporcji, nadal możesz użyć sample
funkcji w R z prob
argumentem w ten sposób:
> x <- sample( LETTERS[1:4], 10000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05) )
> prop.table(table(x))
x
A B C D
0.0965 0.1972 0.6544 0.0519
x <- rep( c("A","B","C","D"), 10000*c(0.1,0.2,0.65,0.05) )
i nie musisz określać 10000 w wywołaniu próbkowania, byłoby to ustawienie domyślne (chociaż dla jasności nie zaszkodzi to określić).Nie mam wątpliwości, że to naprawdę przypadek. Chodzi mi o to, że
runif()
jest to losowe :)źródło
prob
argumentu dlasample()
:sample(LETTERS[1:4], 10000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05))
sample(,prob=)
działa (przynajmniej po polsku nazywa się to algorytmem ruletki).Jeśli jesteś użytkownikiem SAS, najnowsze wersje oferują podobną możliwość wyciągnięcia z tak zwanej dystrybucji „tabelowej” - tego właśnie szukasz, w ramach funkcji Rand (). Zobacz http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001466748.htm
źródło