Dans une première colonne je simule une variable aléatoire pour créer une population (par exemple, 10000 lignes avec une loi normale).
Ensuite, j'aimerais, dans une autre colonne obtenir un échantillon aléatoire de taille n à fixer et extrait de la population créée dans la colonne précédente. Le top, serait d'obtenir plusieurs échantillons simultanément dans des colonnes juxtaposées.
Pour info, je découvre JMP que depuis quelques semaines (je travaille depuis des années avec Minitab), je n'ai pas trouvé la solution tout seul, si ce n'est un échantillonnage lors de la création d'un graphique.
Par avance, merci.
Il existe plusieurs façons de procéder.
Le plus simple est d'utiliser la fonctionnalité intégrée de la plateforme Subset
Tables=>Sous-ensemble
Étant donné un tableau avec une colonne de données contenant 1 000 lignes

Les Tableaux=>Sous-ensemble vous permettent de créer un échantillon aléatoire d'un pourcentage donné ou d'une taille d'échantillon donnée

Ce qui vous donnera une nouvelle table avec 100 lignes

il est alors simple de joindre cette table à la table d'origine en utilisant
Tables=>Rejoindre

Qui te donnera ce que tu as demandé

Le principal problème de cette approche est qu’elle viole quelque peu les hypothèses d’une table de données JMP.
Une autre approche consisterait à utiliser une formule de colonne. La formule que j'ai imaginée produit un échantillon aléatoire, mais plutôt que de placer les données sélectionnées dans les 100 premières lignes, elle place les valeurs dans la ligne d'où proviennent les données sélectionnées.
Voici la formule
As Constant(
rowCount = N Rows( Current Data Table() );
sampleMatrix = [];
For( i = 1, i <= 100, i++,
found = 0;
While( found == 0,
row = Random Integer( 1, rowCount );
If( N Rows( Loc( sampleMatrix, row ) ) == 0,
found = 1;
sampleMatrix = sampleMatrix || Matrix( row );
);
);
);
);
If( N Cols( Loc( sampleMatrix, Row() ) ) != 0,
:Column 1,
.
);
Ce qui produit

Maintenant, si l'on déplace la génération d'échantillons vers JSL, il devient assez facile de créer autant d'échantillons que nécessaire.
Names Default To Here( 1 );
dt = Current Data Table();
rowCount = N Rows( dt );
// Create 5 Random Samples of 100
For( k = 1, k <= 5, k++,
dt << New Column( "Random" || Char( k ) );
sampleMatrix = [];
For( i = 1, i <= 100, i++,
found = 0;
While( found == 0,
row = Random Integer( 1, rowCount );
If( N Rows( Loc( sampleMatrix, row ) ) == 0,
found = 1;
sampleMatrix = sampleMatrix || Matrix( row );
);
);
);
// Write the values to the new column
For Each( {row}, sampleMatrix,
Column( "Random" || Char( k ) )[row] = :Column 1[row]
);
);
Ce qui crée

Avec une petite modification, la génération d'échantillons aléatoires peut être un échantillonnage sans remplacement
Names Default To Here( 1 );
dt = Current Data Table();
rowCount = N Rows( dt );
masterSampleMatrix = [];
// Create 5 Random Samples of 100
For( k = 1, k <= 5, k++,
dt << New Column( "Random" || Char( k ) );
sampleMatrix = [];
For( i = 1, i <= 100, i++,
found = 0;
While( found == 0,
row = Random Integer( 1, rowCount );
If( N Rows( Loc( masterSampleMatrix, row ) ) == 0,
found = 1;
sampleMatrix = sampleMatrix || Matrix( row );
masterSampleMatrix = masterSampleMatrix || Matrix( row );
);
);
);
// Write the values to the new column
For Each( {row}, sampleMatrix,
Column( "Random" || Char( k ) )[row] = :Column 1[row]
);
);
