Вы хотите, чтобы пропорции в образце были точно такими, как указано? или чтобы представить идею выборки из очень большой популяции с этими пропорциями (чтобы пропорции выборки были близки, но не точны)?
Если вам нужны точные пропорции, вы можете следовать предложению Брэндона и использовать sample
функцию R, чтобы рандомизировать порядок вектора, который имеет точные пропорции.
Если вы хотите произвести выборку из совокупности, но не ограничивать пропорции, чтобы быть точными, вы все равно можете использовать sample
функцию в R с prob
аргументом, например, так:
> 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) )
и вам не нужно указывать 10000 в вызове для выборки, это будет значение по умолчанию (хотя для ясности его не помешает указать).Я не сомневаюсь, что это действительно случайно. Я имею в виду, насколько это
runif()
случайно :)источник
prob
аргумент дляsample()
:sample(LETTERS[1:4], 10000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05))
sample(,prob=)
работает (по крайней мере, на польском языке это называется алгоритмом рулетки).Если вы являетесь пользователем SAS, последние версии предоставляют аналогичную возможность извлекать из так называемого «настольного» дистрибутива - то, что вы ищете, как часть функции Rand (). См. Http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001466748.htm
источник