Teilmengenerstellung unter Beibehaltung der ursprünglichen VerteilungWie kann ich das tun, wenn ich eine Datentabelle mit einer kontinuierlichen Variablen habe und mehrere Teilmengen erstellen möchte, die dieselbe Verteilung wie die Originaltabelle beibehalten?
Ich habe JMP Pro und habe die Option „Stratifizieren“ im Menü „Teilmenge“ ausprobiert, konnte aber nicht herausfinden, wie das geht.
Datenexploration und -visualisierungBetreff: Teilmengenerstellung unter Beibehaltung der ursprünglichen VerteilungSie könnten eine Validierungsspalte (unter Predictive Modeling) erstellen, die nach Ihren Wünschen geschichtet ist, und diese Teilmengen dann verwenden. Ich denke, Sie sind zumindest anfangs auf drei Teilmengen (Trainings-, Validierungs- und Testteilmengen) beschränkt, können dies jedoch mehrmals tun, wenn Sie mehr benötigen. Ich habe die Stratifizierungsoption im Menü „Teilmenge“ noch nie verwendet, aber es scheint, dass sie funktioniert, aber jeweils nur eine Teilmenge erstellt.
Betreff: Teilmengenerstellung unter Beibehaltung der ursprünglichen VerteilungDa Sie JMP Pro haben und Stratify erwähnt haben, gibt es hier eine weitere Option: „Make K-Fold Columns“ aus dem XGBoost-Add-in für JMP Pro ( https://community.jmp.com/t5/JMP-Add-Ins/ XGBoost-Add-In-for-JMP-Pro/ta-p/319383 ) Und lesen Sie Seite 3, 4, 5
in der Datei „XGBoost Add-in.pdf“.

Die Funktion erstellt Teilmengen (das Add-in nennt es „Folds“), die die ursprüngliche Verteilung beibehalten (das Add-in nennt sie „ausgeglichen“) und gleichzeitig die Schichtung berücksichtigen, indem auch die Schichtungsvariablen ausgeglichen bleiben. Siehe die Histogramme auf Seite 5 in diesem PDF-Dokument.
Betreff: Teilmengenerstellung unter Beibehaltung der ursprünglichen VerteilungDanke für deine Antwort.
Ich habe festgestellt, dass mehr als 3 Teilmengen benötigt werden. Sie können „K-Falt-Validierungsspalte erstellen“ in Predictive Modeling -> Validierungsspalte erstellen verwenden.
Betreff: Teilmengenerstellung unter Beibehaltung der ursprünglichen VerteilungIch denke, Sie müssen lediglich die Teilmenge angeben, indem Sie die Zufallsstichprobenfunktion in der Tabellen=> Teilmengenplattform verwenden. Durch Zufallsstichproben nach Rate oder Größe erhalten Sie Datentabellen mit derselben Verteilung wie die Originaltabelle.
Betreff: Teilmengenerstellung unter Beibehaltung der ursprünglichen VerteilungStreng genommen ist Sampling mit Zurücklegen erforderlich, wenn Sie dieselbe Verteilung wie das Original wünschen. Dies ist die Grundlage für Resampling- und Bootstrap-Methoden. Der Subset-Befehl führt zufälliges Sampling ohne Zurücklegen durch. Ich glaube, Sie benötigen ein Skript, um das zu bekommen, was Sie brauchen. Das Sampling würde auf der Berechnung zufälliger Indizes wie diesem basieren:
subscript = J( sample size, 1, Random Integer( 1, N Row( dt ) )
Dieser Vektor könnte zum Erstellen einer Datenspalte in einer neuen Datentabelle verwendet werden.
New Table( "Sample", New Column( "Data", Value( dt:originalColumn[subscript] ) ) );
Betreff: Teilmengenerstellung unter Beibehaltung der ursprünglichen VerteilungHallo @bbenny7 ,
Ich fand dieses Thema aus einem ähnlichen Grund interessant: Ich wollte eine Datentabelle korrekt unterteilen, aber nach Spalten stratifizieren. Ich habe dies in der Vergangenheit getan, da @dlehman1 vorgeschlagen hatte, eine Validierungsspalte zur Stratifizierung nach relevanten Spalten zu verwenden, war aber auch neugierig, wie man es anders machen könnte, falls mehrere Datentabellen benötigt werden. Ich habe es nach @Mark_Baileys Vorschlag versucht, musste aber den JSL-Code für „New Table()“ in zwei Zeilen aufteilen: eine definiert die neue Tabelle und die nächste weist die Werte basierend auf der anderen relevanten Datentabellenspalte zu. Mit seinem ursprünglichen Code funktionierte es nicht. So funktionierte ein modifizierter Code bei mir:
Names Default To Here( 1 );
dt = Data Table( "originaldatatable" ); //assigns the original data table to the variable dt
subscript = J( samplesize, 1, Random Integer( 1, N Rows( dt ) ) ); //creates the random integer vector of length 'samplesize'
dt2 = New Table( "Sample", New Column( "Data" ) ); //creates new data table with column Data
dt2:Data << Set Values( dt:originalColumn[subscript] ); // assigns values to Data based on the row entries for the originalColumn
Als kleinen, lustigen Test habe ich 4 Teilmengen generiert, indem ich eine For()-Schleife erstellt und die Indexzeile darin eingefügt habe (um einen neuen Satz von Zeilennummern zu generieren) und die Verteilungen für die 4 Sätze verglichen habe. Ihre zusammenfassenden Statistiken sind alle sehr ähnlich.

Ich habe einen ähnlichen Test durchgeführt, aber vier geschichtete Validierungsspalten erstellt und mir anschließend deren Statistiken angesehen. Das N ist unterschiedlich, da die Plattform „Validierungsspalte erstellen“ nicht dieselben Verhältnisse generierte wie oben, wo ich zufällig 300 gewählt hatte. Die Ergebnisse sind jedoch alle sehr ähnlich.

Beide Wege sollten funktionieren und Sie an Ihr Ziel bringen.
Viel Glück!,
DS
Betreff: Teilmengenerstellung unter Beibehaltung der ursprünglichen VerteilungDanke für Ihre Antwort.
Mir ist aufgefallen, dass ich das Add-In nicht benötige, aber ich kann „K-fache Validierungsspalte erstellen“ in der prädiktiven Modellierung --> Validierungsspalte erstellen verwenden.