Voulez-vous que les proportions dans l'échantillon soient exactement les proportions indiquées? ou pour représenter l'idée de l'échantillonnage d'une très grande population avec ces proportions (donc les proportions de l'échantillon seront proches mais pas exactes)?
Si vous voulez les proportions exactes, vous pouvez suivre la suggestion de Brandon et utiliser la sample
fonction R pour randomiser l'ordre d'un vecteur qui a les proportions exactes.
Si vous souhaitez échantillonner à partir de la population, mais sans restreindre les proportions pour être exact, vous pouvez toujours utiliser la sample
fonction dans R avec l' prob
argument comme suit:
> 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) )
et vous n'avez pas besoin de spécifier le 10000 dans l'appel à l'échantillon, ce serait la valeur par défaut (bien que pour plus de clarté, il ne soit pas difficile de le spécifier).Je ne doute pas que ce soit vraiment aléatoire. Je veux dire, dans la mesure où
runif()
c'est aléatoire :)la source
prob
argument poursample()
:sample(LETTERS[1:4], 10000, replace=TRUE, prob=c(0.1, 0.2, 0.65, 0.05))
sample(,prob=)
fonctionne (au moins en polonais, il est appelé algorithme de roulette).Si vous êtes un utilisateur SAS, les versions récentes offrent une capacité similaire à tirer de ce qu'elle appelle une distribution "table" - ce que vous recherchez, dans le cadre de la fonction Rand (). Voir http://support.sas.com/documentation/cdl/en/lrdict/64316/HTML/default/viewer.htm#a001466748.htm
la source