Sous-échantillonner au hasard à partir d'une colonneBonjour à tous, - J'ai une population de 200 magasins à travers le pays.Je suis intéressé de savoir si je peux sous-échantillonner une fraction de ces magasins et approximer la distribution des événements. Pourrait-il y avoir une méthode de Monte Carlo pour remplir, par exemple, 30 lignes dans une nouvelle colonne avec un sous-échantillon aléatoire des 200 d'origine.
Ensuite, je pourrais comparer la distribution des 30 comptes dans le sous-échantillon à la distribution dans la population de 200.
Répétez cette opération 100 fois pour déterminer le risque d’échantillonner 30 magasins pour représenter une population de 200 personnes.
Pensées?merci Paul
10 premières rangées des 200
Magasin # - colonne 1
Compte pair - colonne 2
19 20 21 22 23 25 26 27 29 34 | 1 4 7 3 4 3 12 5 8 8 |
Ingénierie Qualité et ProcédésRe : Sous-échantillonner aléatoirement à partir d'une colonne
merci Ron
Re : Sous-échantillonner aléatoirement à partir d'une colonneSalut @paulp ,
l'autre solution sans script qui peut être utile dans de telles applications consiste à utiliser le générateur de requêtes JMP dans le menu Tables.

vous pouvez y trouver un onglet d'échantillonnage aléatoire comme sur l'image

Comme d'habitude, vous l'exécutez de manière interactive, vous pouvez utiliser le script créé pour une utilisation supplémentaire.
Re : Sous-échantillonner aléatoirement à partir d'une colonneMerci, Sam, et à tous ceux qui ont publié des solutions.
Re : Sous-échantillonner aléatoirement à partir d'une colonneJe comprends que vous ne scénarisez pas votre solution. Vous pouvez également utiliser de manière interactive Tables > Sous-ensemble pour créer une nouvelle table plus petite avec des lignes sélectionnées au hasard à partir de la table de données d'origine. Cela fonctionnerait-il pour vous ?
Re : Sous-échantillonner aléatoirement à partir d'une colonneVoici un exemple de script qui crée des sous-ensembles d'une taille donnée sans remplacement
Names Default To Here( 1 );
dt =
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// New formula column: Row
Data Table( "semiconductor capability" ) << New Column( "Row",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Row() )
) << Move Selected Columns( {:Row}, after( :SITE ) );
// Loop through data creating sample data tables
sampleSize = 20;
For( i = 1, i <= 20, i++,
dtSample = Data Table( "semiconductor capability" ) << Subset(
Sample Size( sampleSize ),
Selected columns only( 0 ),
output table( "Sample " || Char( i ) )
);
matSelected = dtSample:Row << get values;
// Delete row column from sample data
dtSample << delete columns( Row );
// Delete selected rows from main table
dt << select rows( matSelected );
dt << delete rows;
);
// Delete row column from original data table
dt << delete columns( Row );Re : Sous-échantillonner aléatoirement à partir d'une colonneUn moyen rapide de créer un sous-échantillon à l’aide d’une formule de colonne consiste à utiliser la fonction Col Shuffle().La fonction renvoie une réorganisation aléatoire des numéros de ligne.Si vous choisissez des lignes où les valeurs de Col Shuffle() sont inférieures ou égales à la taille du sous-échantillon (n_sub), cela revient à faire un ordre aléatoire de la colonne et à sélectionner les premières n_sub lignes.
Par exemple, l'ajout d'une nouvelle colonne avec cette formule le fera pour une taille de sous-échantillon de 30.

exemple de tableau ci-joint.
Si vous souhaitez le faire à plusieurs reprises, l'apprentissage de certains scripts JMP faciliterait la tâche.Un script de base pour ajouter des colonnes comme celle-ci à plusieurs reprises est
Names Default to Here( 1 );
Number_of_Cols_to_Add = 100;
For( i = 1, i <= Number_of_Cols_to_Add, i++,
Current Data Table() <<
New Column( "Y Subsample (Size 30)",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( Col Shuffle() <= 30, :Y, . ) )
)
);
Re : Sous-échantillonner au hasard à partir d'une colonneBonjour Jeff, merci pour la réponse.Je ne comprends pas comment utiliser la fonction à mes fins, malheureusement.
- Resample Freq crée un nombre de ré-échantillons.Cela semble être une étape intermédiaire pour ensuite créer un nouveau tableau avec les données sous-échantillonnées. J'espère créer directement une colonne de données sous-échantillonnées à partir de la population d'origine de 200 lignes.
- Je préférerais échantillonner sans remplacement, pas bootstrap.
Si je n'avais besoin que des données originales sous-échantillonnées une seule fois, le chemin le plus simple serait Tableau > Sous-ensemble > Taille d'échantillon aléatoire = 30 (par exemple)
Je ne fais pas de script, sinon je créerais une boucle pour produire 100 tables de 30 échantillons aléatoires, puis je concatènerais les 100 tables en une table principale.
Existe-t-il un moyen de récupérer directement 30 échantillons aléatoires d'une colonne et de placer ces 30 valeurs dans une nouvelle colonne ?
En fin de compte, j'espère essayer Fiabilité> Distribution de la vie> Comparer les groupes pour évaluer la distribution des sous-échantillons par rapport à la distribution de la population d'origine.
- Ensuite, répétez pour la taille de l'échantillon = 20, puis 40, etc. afin que je puisse évaluer la taille minimale de l'échantillon qui donne une distribution similaire à la population de 200 magasins.
Merci Paul
Re : Sous-échantillonner aléatoirement à partir d'une colonneJetez un oeil à la Fréquence de rééchantillonnage() fonction.
Fréquence de rééchantillonnage
Génère une sélection aléatoire avec des comptages de fréquence de remplacement, adaptée à une utilisation dans l'amorçage. Par exemple, il prend en charge une seconde Colonne de fréquence argument, lui permettant de faire des échantillons bootstrap relatifs à une colonne de fréquence préexistante spécifiée dans le deuxième argument. Fréquence de rééchantillonnage() génère un rééchantillonnage à 100 %. ResampleFreq(taux) génère une taux échantillon de fréquence. Rééchantillonner (taux, colonne) génère un échantillon qui est calculé par le taux multiplié par la somme de la colonne spécifiée. Pour plus d'informations sur la syntaxe de la fonction Resample Freq, voir Fonctions de probabilité discrètes dans le Référence de syntaxe JSL .