Échantillonnage aléatoire avec remplacementEst-il possible de faire cela? Il ne semble pas que la fonction Tables -> Sous-jeu le permette.
Je reconnais que vous pouvez obtenir des estimations Bootstrap dans différentes parties de la plate-forme JMP Pro, mais je me pose des questions sur la génération de tableaux de données.
Je vous remercie!
Re: échantillonnage aléatoire avec remplacementSalut Wendy,
Oui, voir le script ci-dessous. Il faut une table de 4 lignes et extrait 10 échantillons avec remplacement. La fonction AsList () est nécessaire pour retirer ceci, sinon vous obtiendrez une erreur, malheureusement.
Names Default To Here( 1 );
dt = astable((1::4)`);
nSamples = 10;
dt2 = dt << subset( rows( As List( J( nSamples, 1, Random Integer( 1, N Row( dt ) ) ) ) ) );
Re: échantillonnage aléatoire avec remplacementBonjour Wendy, vous pouvez le faire à partir du tableau de données. Cliquez avec le bouton droit de la souris sur un en-tête de colonne, sélectionnez Nouvelle colonne de formule, Aléatoire, puis Échantillon avec remplacement.
Re: échantillonnage aléatoire avec remplacementBonjour Wendy, je devrais clarifier.
La technique de nouvelle formule de colonne mentionnée par Mia fonctionnera aussi longtemps que l'utilisateur voudra un échantillon dont la taille est inférieure ou égale au nombre de lignes de la table. Si vous avez besoin d'un échantillon plus important, je ne connais pas de moyen de le faire (efficacement, c'est-à-dire concaténer une table avec elle-même jusqu'à ce que sa taille soit suffisante, qu'elle soit inefficace mais qu'elle fonctionne) via un simple clic. Peut-être que d’autres vont nous donner un moyen de le faire.
Le script fonctionne pour n’importe quelle taille d’échantillon, mais la fonction As List () doit être enroulée autour de la matrice de lignes chaque fois que le nombre de lignes demandé dépasse le nombre de lignes de la table d'origine.
Re: échantillonnage aléatoire avec remplacementMerci à vous deux! Oui. Je pense que le client peut avoir besoin de suréchantillonner. Il serait donc utile de savoir comment les autres l'ont fait.
L'autre question connexe concerne la stratification. Est-il possible de rééchantillonner avec remplacement en assurant une distribution d'un autre attribut?
Re: échantillonnage aléatoire avec remplacementsalut @wendytseng ,
Il y a un Échantillon avec complément de remplacement qui peut effectuer un suréchantillonnage, mais pas une stratification par rapport à une autre variable.
@julien
Re: échantillonnage aléatoire avec remplacementSalut Wendy,
Vous ne savez pas si votre client souhaite utiliser un script, mais l’idée peut facilement être étendue pour stratifier en fonction d’une variable catégorique. Le court script ci-dessous fait cela pour le jeu de données Car Physical Data et la colonne "Type". 1000 lignes sont demandées, où la table d'origine en contient 116. Notez que 1002 lignes sont renvoyées, car la taille de l'échantillon de chaque catégorie a été arrondie au nombre entier le plus proche.
Ce n’est pas le moyen le plus rapide de le faire, mais c’est relativement simple à comprendre. Peut-être votre client pourra-t-il écrire ce qu'il veut si vous le lui dites?
À votre santé,
Brady
Names Default To Here( 1 );
dt = Open( "$Sample_Data\Car Physical Data.jmp" );
stratCol = Column( dt, "Type" );
nSample = 1000;
//determine the (over)sampling ratio
sRatio = nSample / N Row( dt );
//get a list of the stratification column's values
categories = ((Associative Array( stratCol << get values ) << get keys));
// initialize the master row matrix
rowMat = [];
//For each category
For( i = 1, i <= N Items( categories ), i++,
// Get the table rows belonging to this category
catRows = dt << getrowswhere( dt:stratCol == categories[i] );
// Determine how many rows belong to this category
catN = N Items( catRows );
// Oversample these row values by the specified ratio, and append them to the master row list
rowMat |/= catRows[As List( J( Ceiling( catN * sRatio ), 1, Random Integer( 1, catN ) ) )];
);
// Subset the data table, using the final master row list
dt << subset( rows( As List( rowMat ) ) );
Re: échantillonnage aléatoire avec remplacementPour le suréchantillonnage, il y a aussi ce complément: Complément de partitionnement de données stratifié (avec options d'équilibrage)
N'a pas été testé dans JMP 15 ...
Re: échantillonnage aléatoire avec remplacementC'est celui que nous avons choisi pour le prof à UC Denver, non? J'ai regardé le code pour le trouver et je ne pouvais pas trouver un moyen de le faire fonctionner sans entrer dans Train / Test / Valider.