In einer ersten Spalte simuliere ich eine Zufallsvariable, um eine Population zu erstellen (beispielsweise 10.000 Zeilen mit einer Normalverteilung).
Dann möchte ich in einer weiteren Spalte eine Zufallsstichprobe der Größe n erhalten, die festgesetzt und aus der in der vorigen Spalte erstellten Grundgesamtheit extrahiert werden soll. Am besten wäre es, mehrere Proben gleichzeitig in nebeneinanderliegenden Spalten zu entnehmen.
Zu Ihrer Information: Ich habe JMP erst vor ein paar Wochen entdeckt (mit Minitab arbeite ich schon seit Jahren) und habe die Lösung, abgesehen von der Stichprobennahme beim Erstellen eines Diagramms, noch nicht selbst gefunden.
Vielen Dank im Voraus.
Hierfür gibt es mehrere Möglichkeiten.
Am einfachsten ist es, die integrierten Funktionen der Subset-Plattform zu nutzen
Tabellen=>Teilmenge
Gegeben sei eine Tabelle mit einer Datenspalte mit 1000 Zeilen

Mit den Tabellen=>Teilmengen können Sie eine Zufallsstichprobe mit einem bestimmten Prozentsatz oder einer bestimmten Stichprobengröße erstellen.

Dadurch erhalten Sie eine neue Tabelle mit 100 Zeilen

Anschließend können Sie diese Tabelle ganz einfach mit der Originaltabelle verknüpfen, indem Sie
Tabellen=>Verbinden

Das wird Ihnen geben, wonach Sie gefragt haben

Das Hauptproblem bei diesem Ansatz besteht darin, dass er die Annahmen einer JMP-Datentabelle in gewisser Weise verletzt.
Ein anderer Ansatz wäre die Verwendung einer Spaltenformel. Die Formel, die ich mir ausgedacht habe, erzeugt eine Zufallsstichprobe, aber anstatt die ausgewählten Daten in die ersten 100 Zeilen zu platzieren, platziert sie die Werte in der Zeile, aus der die ausgewählten Daten stammen.
Hier ist die Formel
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,
.
);
Das erzeugt

Wenn man nun die Beispielgenerierung auf JSL verschiebt, wird es eine ziemlich einfache Aufgabe, so viele Beispiele wie nötig zu erstellen
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]
);
);
Das schafft

Mit einer kleinen Modifikation kann die Zufallsstichprobengenerierung eine Stichprobe ohne Zurücklegen sein.
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]
);
);
