Échantillonnage aléatoire stratifié à partir d'une base de données
J'ai un bloc de données dans le format:
head(subset)
# ants 0 1 1 0 1
# age 1 2 2 1 3
# lc 1 1 0 1 0
J'ai besoin de créer un nouveau bloc de données avec des échantillons aléatoires en fonction de l'âge et de la lc. Par exemple je veux 30 échantillons à partir de l'âge:1 et lc:1, 30 échantillons à partir de l'âge:1 et lc:0 etc.
J'ai regardé aléatoire de la méthode d'échantillonnage;
newdata <- function(subset, age, 30)
Mais il n'est pas le code que je veux.
source d'informationauteur user3525533
Vous devez vous connecter pour publier un commentaire.
Je vous recommande d'utiliser soit
stratified
de mon "splitstackshape", ousample_n
de la "dplyr" package:Pour
stratified
vous avez essentiellement de spécifier le jeu de données, la stratification des colonnes, et un entier représentant la taille que vous voulez à partir de chaque groupe OU d'un décimal correspond à la fraction que vous voulez retourner (par exemple, .1 représente 10% de chaque groupe).Pour
sample_n
vous d'abord créer un groupe de table (à l'aide degroup_by
), puis spécifiez le nombre d'observations que vous voulez. Si vous voulais échantillonnage proportionnel au lieu de cela, vous devez utilisersample_frac
.Voici quelques données:
Vous voulez une scission s'appliquent-combiner stratégie, où vous
split
vos données.cadre (d
dans cet exemple), des exemples de lignes/observations de chaque sous-échantillon, et puis de combiner ensuite avec de l'rbind
. Voici comment cela fonctionne:Le résultat:
Voir la fonction
strata
de l'emballage l'échantillonnage. La fonction sélectionne l'échantillonnage aléatoire simple stratifié et donne un exemple de suite. Deux colonnes sont ajoutées - l'inclusion des probabilités (Prob
) et les strates de l'indicateur (Stratum
). Voir l'exemple.À moins que j'ai mal compris la question, c'est ridiculement facile à faire avec de simples fonctions.
Étape 1: création d'une strate à l'aide de l'indicateur de la
interaction
fonction.Étape 2: Utilisez
tapply
sur une séquence de la ligne des indicateurs pour identifier les indices de l'échantillon aléatoire.Étape 3: créer un sous-ensemble de données avec ces indices
En utilisant les données de l'exemple de @Thomas:
Vérifier la stratification