Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesBonjour à tous
Je travaille sur une recherche qui implique de travailler sur un échantillon représentatif. J'ai déjà collecté des données, mais je dois sélectionner un sous-ensemble qui répond aux critères de représentation qui sont 4 : L'échantillon doit être conforme aux quotas suivants :
-
sur le genre : 50% d'hommes et 50% de femmes.
-
par âge : 1/3 de 18 à 30 ans, 1/3 de 31 à 50 ans et 1/3 de plus de 51 ans.
-
au niveau du revenu du ménage : 1/3 de faible, 1/3 de moyen et 1/3 de élevé.
1/5 de la population étudiée par chacune des cinq régions de la ville (Nord, Sud, Centre, Est et Ouest)
Comment puis-je créer cet échantillon ?
J'utilise JMP pro 17
Accès aux donnéesFusion et nettoyage des donnéesRé: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesCela ressemble à un exercice de manuel - y a-t-il un chapitre avec la solution ?
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesNon
En fait, je discutais de cette question avec un collègue pour démarrer l'analyse des données d'un projet avec cette technique d'échantillonnage par quotas.Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesIl s'agit d'un problème complexe. Quelle est la taille de votre tableau de données à partir duquel vous extrayez des données ? Quelle est la taille de l'échantillon que vous extrayez ? Vous avez 90 combinaisons de vos 4 colonnes. Est-ce que vous et votre collègue avez trouvé une idée sur la façon d'aborder le problème ?
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesEt vous ne voulez pas sélectionner les données d'échantillon en fonction de la part réelle de la distribution, mais en fonction de la fraction artificielle ?
Qu'en est-il des femmes, de plus de 51 ans, à revenus élevés, vivant dans le nord ?
Est-ce que ça devrait être 1/2 * 1/3 * 1/3 * 1/5 ? (*)
C'est très facile à calculer - mais peut-être trop strict - et pas intentionnel ?
Pensez simplement au cas où il n’y a pas de femme, de plus de 51 ans, à revenu élevé, au nord dans la distribution d’origine.
D'autre part : si seulement les 1/2, 1/3, 1/3 et 1/5 doivent être remplis, on pourrait inventer des cas extrêmes avec 0 données d'échantillon pour les femmes, > 51 ans, revenus élevés, nord.
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesCe n'est pas élégant et je ne suis même pas sûr que cela fonctionnera, mais cela pourrait fonctionner. Vous pouvez créer des colonnes 0,1 pour chacun de vos critères, puis les combiner en une seule colonne 0,1 où 1 signifie que toutes les colonnes de critères individuels étaient =1. Cela donnera le sous-ensemble souhaité. Et, si vous voulez une sélection aléatoire à partir de ces lignes, utilisez simplement une colonne de validation stratifiée par cette colonne 0,1. Comme je l'ai dit, ce n'est pas élégant mais cela pourrait fonctionner.
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéestableau de données - cas idéal :
New Table( "quota_samples",
Add Rows( 100000 ),
Compress File When Saved( 1 ),
New Column( "gender",
Character,
Formula( Match( Floor( Random Uniform() * 2 ), 0, "M", "F" ) ),
Compact(),
Set Selected
),
New Column( "income",
Character,
Formula(
Match( Floor( Random Uniform() * 3 ), 0, "low", 1, "medium", "high" )
),
Compact()
),
New Column( "region",
Character,
Formula(
Match( Floor( Random Uniform() * 5 ),
0, "N",
1, "S",
2, "W",
3, "E",
"C"
)
)
),
New Column( "age",
Character,
Formula(
Match( Floor( Random Uniform() * 3 ), 0, "young", 1, "medium", "old" )
)
)
)
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesPour un tel tableau idéal (si les probabilités de votre ensemble de données correspondent aux fractions souhaitées), vous pouvez choisir des échantillons aléatoires - des échantillons aléatoires par variante ou un nombre spécifique d'échantillons par variante - ou une combinaison des 3 ...
vous obtiendrez toujours les sous-groupes avec la fraction demandée (1/2, 1/3, 1/3 et 1/5)

// random sampling : full data set
if(not(current data table() << has column ("cum_prob")),New Column( "cum_prob",
Formula(
Col Rank( random uniform()) / (
Col Number( 1 ))
)
));
// random sampling : per variant
if(not(current data table() << has column ("cum_prob_indiv")),New Column( "cum_prob_indiv",
Formula(
tmp = random uniform(); // tmp =1; // **)
Col Rank( tmp, :gender, :income, :region, :age ) / (
Col Number( tmp, :gender, :income, :region, :age ))
)
));
// force ratios: 1/2, 1/3, 1/3, 1/5
if(not(current data table() << has column ("rank_indiv")),
New Column( "rank_indiv",
Formula( Col Rank( random uniform(), :gender, :income, :region, :age ) )
));
Graph Builder(
Size( 518, 448 ),
Show Control Panel( 0 ),
Graph Spacing( 4 ),
Variables( X( :gender ), X( :income ), X( :region ), X( :age ) ),
Elements( Position( 1, 1 ), Bar( X, Summary Statistic( "N" ) ) ),
Elements( Position( 2, 1 ), Bar( X, Summary Statistic( "N" ) ) ),
Elements( Position( 3, 1 ), Bar( X, Summary Statistic( "N" ) ) ),
Elements( Position( 4, 1 ), Bar( X, Summary Statistic( "N" ) ) ),
Local Data Filter(<BR /> Title( "how many samples do you want ? " ),
Add Filter(
columns( :cum_prob, :cum_prob_indiv, :rank_indiv )
)
)
);
**) au lieu d'utiliser des CDF avec random uniform() , on peut randomiser l'ordre des lignes et utiliser des CDF de "1".
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesLa dernière option fonctionne également pour les tableaux moins systématiques comme celui ci-dessous.
La seule limitation est que s’il y a peu d’échantillons pour une variante spécifique, il existe une limite claire au nombre d’échantillons qui peuvent être sélectionnés.
Cela suit une règle simple :
Si pour l'une des variantes (A), il n'y a que N échantillons, prenez-les et choisissez le même nombre d'échantillons aléatoires parmi les autres variantes.
En fait, pour la variante « A », il ne s’agit PAS d’un échantillonnage.
Alors, peut-être choisir juste M << N échantillons - au hasard parmi toutes les variantes.
Vous pouvez adopter la même logique (JSL) : ajustez simplement N à une valeur inférieure.
variants = {};
For Each( {gender}, {"F", "M"},
For Each( {age}, {"young", "medium", "old"},
For Each( {income}, {"low", "medium", "high"},
For Each( {region}, {"N", "S", "E", "W", "C"},
Insert Into( variants, Concat Items( {gender, age, income, region} ) )
)
)
)
);
Eval(
Eval Expr(
new table(
"unfair",
add rows( 100000 ),
New Column( "variant",Character,
formula(
variants = As constant(Expr( variants ));
Try(
variants[Floor( Random Normal( 45, 30 ) )],
"F young medium C"
);
)
),
New column ("gender",Character, formula(Word(1,:variant))),
New column ("age",Character, formula(Word(2,:variant))),
New column ("income",Character, formula(Word(3,:variant))),
New column ("region",Character, formula(Word(4,:variant))),
)
)
);
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesJ'ai passé beaucoup de temps à réfléchir à cette question et je n'ai pas trouvé de bonne réponse. J'ai généré un exemple de table de données similaire à @hogi . Vous trouverez ci-dessous une modification du JSL @hogi avec mon code que j'ai utilisé. Fondamentalement, je pense qu'il est plus facile à lire et, dans le cas d'Age, il représente mieux la distribution telle qu'indiquée par @Samira .
New Table( "Samp",
Add Rows( 100000 ),
Compress File When Saved( 1 ),
New Column( "gender",
Character,
Set Each Value( Match( Random Integer( 1, 2 ), 1, "Male", "Female" ) ),
Compact()
),
New Column( "income",
Character,
Set Each Value(
Match( Random Integer( 1, 3 ), 1, "Low", 2, "Medium", "High" )
),
Compact()
),
New Column( "region",
Character,
Set Each Value(
Match( Random Integer( 1, 5 ),
1, "North",
2, "South",
3, "West",
4, "East",
"Ccentre"
)
)
),
New Column( "age",
Character,
Set Each Value(
temp = Random Integer( 18, 80 );
If(
temp <= 30, "Young",
temp <= 50, "Middle Age",
"Old"
);
)
)
)
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesMerci pour votre réponse
L'idée est de mener la recherche sur un échantillon représentatif de la population vivant dans toute la ville
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesMerci beaucoup pour vos efforts
Votre suggestion m'a donné une bonne idée pour explorer efficacement mon ensemble de données en utilisant d'abord le filtre de données locales dans le générateur de graphiques. Pour mes données, il semble qu'avec certaines combinaisons (comme les hommes d'âge moyen vivant dans la région centrale avec un revenu IM), l'échantillon est de 0
L'idée même de créer un échantillon représentatif de cette manière ne semble plus pratique. La technique d'échantillonnage qui aurait dû être utilisée dès le début est l'une des techniques d'échantillonnage probabiliste. Il peut s'agir d'un échantillonnage aléatoire stratifié, en utilisant uniquement les 5 régions comme strates. Un échantillon aléatoire est ensuite prélevé dans chaque strate.
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesMerci beaucoup pour votre temps et vos efforts
L'idée même de créer un échantillon représentatif de cette manière ne semble plus pratique. La technique d'échantillonnage qui aurait dû être utilisée dès le début est l'une des techniques d'échantillonnage probabiliste. Il peut s'agir d'un échantillonnage aléatoire stratifié, en utilisant uniquement les 5 régions comme strates. Ensuite, un échantillon aléatoire est prélevé dans chaque strate.
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesMerci pour votre réponse
Je pense que tu as raison,
L'idée même de créer un échantillon représentatif de cette manière ne semble plus pratique. La technique d'échantillonnage qui aurait dû être utilisée dès le début est l'une des techniques d'échantillonnage probabiliste. Il peut s'agir d'un échantillonnage aléatoire stratifié, en utilisant uniquement les 5 régions comme strates. Ensuite, un échantillon aléatoire est prélevé dans chaque strate.
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesCela semble être une approche raisonnable
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesDonc, ce que vous avez demandé dans le message original est :
échantillonnage aléatoire stratifié disproportionné , n'est-ce pas ?
Et les strates sont les 90 sous-groupes de sexe x âge x revenu x région.
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesAprès avoir soigneusement révisé différentes techniques d'échantillonnage dans les manuels, j'ai découvert que mon idée originale ne correspondait à aucune d'entre elles. Pour obtenir un échantillon représentatif, vous devez choisir l'une des techniques d'échantillonnage probabiliste (qui offrent à chaque répondant de la population étudiée une probabilité ou une chance égale d'être inclus dans l'échantillon). Ces techniques comprennent 4 types :
- – Échantillonnage aléatoire simple
- –Échantillonnage systématique
- – Échantillonnage en grappes
- –Échantillonnage stratifié
C'est pourquoi je pense qu'un échantillonnage stratifié aurait pu être utilisé pour obtenir l'échantillon de l'étude dès le début ( en utilisant uniquement les 5 régions comme strates. Ensuite , un échantillon aléatoire est prélevé dans chaque strate). Les techniques d'échantillonnage stratifié, par grappes et par quotas nécessitent de classer la population en groupes mutuellement exclusifs , ce qui n'est pas le cas dans ma question. C'est pourquoi je pense que ma question initiale n'est pas correcte en premier lieu.
:
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesHm, quand on compare ce cas avec celui du DOE...
Dans un DOE bien conçu, on ne sélectionne même pas un (unique) échantillon de chacun des 90 sous-ensembles.
[1 échantillon de chacun des 90 sous-ensembles : « full-factorial » -> bien trop « cher »]
Alors, peut-être qu'avec une certaine simplification du modèle, il est également possible d'utiliser ici un ensemble de données avec des entrées manquantes dans certains points d'intersection ? Et un pas plus loin, peut-être qu'en supprimant intentionnellement (certains points de données de) certains points d'intersection, on peut obtenir quelque chose d'utile entre les données d'entrée stratifiées et un DOE équilibré ?
@Victor_G a peut-être une suggestion ?
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de données
Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesPour l'approche « échantillonnage aléatoire - par variante » de
https://community.jmp.com/t5/Discussions/How-to-Select-a-quota-sample-from-a-data-set/mp/821078/highlight/true#M100011
J'ai créé un extrait JSL pour stratifier des données arbitraires - sélectionnez simplement les colonnes et cliquez sur OK.
librecall peut être téléchargé ici : Bibliothèque de fonctions de rappel
Names Default To Here( 1 );
verbose=0;
//Include( ".\libRecall_v2.jsl" );
objects = {"si^myCols", "s^Ncolumns", "s^Nfolds"};
values = {{}, {1}, {5}};
Try( // issue with projects
librecall:genArrays( objects, values, "Stratify", verbose )
);
dt = Current Data Table();
nw = New Window( "K Fold Creator",
<<TYPE></TYPE>Ré: Comment sélectionner un échantillon de quota à partir d'un ensemble de donnéesSalut @hogi et @Samira ,
Je viens de lire rapidement le message et les réponses et je ne suis toujours pas sûr à 100 % de votre objectif, car un ensemble de données « représentatif » peut avoir des implications différentes :
Souhaitez-vous mieux comprendre et modéliser une réponse/un phénomène en vous basant sur des données démographiques (âge, sexe, localisation, etc...), ou souhaitez-vous un échantillon "représentatif" afin de faire des inférences/généralisations sur la population ?
- Dans le premier cas, parce que vous souhaitez lier la réponse/le phénomène à des attributs spécifiques, il est préférable d'avoir un ensemble de données équilibré, donc ayant des niveaux équilibrés pour l'âge, le sexe, la localisation, etc... pour avoir une modélisation et une interprétation plus faciles des résultats.
En utilisant une approche DoE, soit en construisant votre conception personnalisée « à partir de zéro » et en trouvant la bonne personne correspondant aux différents attributs, soit en construisant votre conception D-Optimal grâce à une approche Candidate Set avec des données démographiques collectées, vous aideriez à étudier et à analyser les différents facteurs démographiques de manière aussi indépendante et individuelle que possible.
- Dans le deuxième cas, comme on veut généraliser les résultats de l'échantillon à la population, il faut avoir un échantillon représentatif (aussi "biaisé" que la population) de sa population. On n'aura donc peut-être pas 50/50 homme/femme, car la population pourrait être biaisée à 40/60 par exemple, il faut donc respecter cette spécificité démographique.
Il peut être utile d'utiliser une approche stratifiée sur les données démographiques que vous avez collectées sur vos 5 régions. Vous devrez peut-être prendre en compte deux aspects : la création d'échantillons de vos régions en fonction de leur population (assurez-vous que la proportion de votre échantillon par rapport à la population de la région est la même, de sorte qu'une région très/dense peuplée aura plus de personnes dans l'ensemble de données de l'échantillon) et en fonction des données démographiques (sexe, âge, etc...).
Dans les deux cas, je recommanderais de recueillir autant de données que possible sur les populations de vos 5 régions, pour mieux comprendre et éclairer votre méthode de création d'échantillons.
A noter que vous pouvez également trouver de la littérature sur la segmentation des données démographiques, je ne suis pas sûr que la segmentation par âge proposée ici soit vraiment utile en raison des différentes tranches d'âge : 18-30 (12 ans), 31-50 (19 ans), 51+ (20+ ans ?). De plus, comment définissez-vous le niveau de revenu des ménages faible/moyen et élevé ? Sur la base d'analyses ou de seuils/critères prédéfinis ?
Quelques exemples sur la segmentation démographique : https://xperiencify.com/what-is-demographic-segmentation/
J'espère que cette réponse pourra vous donner quelques idées,