Creazione di sottoinsiemi mantenendo la distribuzione originaleSe ho una tabella dati con variabile continua e voglio creare più sottoinsiemi che mantengano la stessa distribuzione della tabella originale, come posso fare?
Ho JMP Pro e ho provato l'opzione Stratifica nel menu Sottoinsieme, ma non sono riuscito a capire come farlo.
Esplorazione e visualizzazione dei datiRe: Creazione di sottoinsiemi mantenendo la distribuzione originalePotresti creare una colonna di convalida (sotto Modellazione predittiva) stratificata come desideri e quindi utilizzare tali sottoinsiemi. Penso che tu sia limitato, almeno inizialmente, a 3 sottoinsiemi (formazione, convalida e sottoinsiemi di test) ma potresti farlo più volte se ne hai bisogno di più. Non ho mai utilizzato l'opzione di stratificazione nel menu Sottoinsieme, ma sembra che funzioni ma creerà solo un sottoinsieme alla volta.
Re: Creazione di sottoinsiemi mantenendo la distribuzione originalePoiché disponi di JMP Pro e hai menzionato Stratify, ecco un'altra opzione: "Crea colonne K-Fold" dal componente aggiuntivo XGBoost per JMP Pro ( https://community.jmp.com/t5/JMP-Add-Ins/ XGBoost-Add-In-for-JMP-Pro/ta-p/319383 ) E leggere pagina 3, 4, 5
nel file "XGBoost Add-in.pdf".

La funzione crea sottoinsiemi (il componente aggiuntivo lo chiama ripiega) che mantengono la distribuzione originale (il componente aggiuntivo lo chiama bilanciato), rispettando al tempo stesso la stratificazione mantenendo bilanciate anche le variabili di stratificazione. Vedi gli istogrammi a pagina 5 in quel documento pdf.
Re: Creazione di sottoinsiemi mantenendo la distribuzione originaleGrazie per la tua risposta.
Mi sono reso conto che sono necessari più di 3 sottoinsiemi, puoi utilizzare "Crea colonna di convalida K-fold" in Modellazione predittiva --> Crea colonna di convalida.
Re: Creazione di un sottoinsieme mantenendo la distribuzione originalePenso che tutto ciò che devi fare è specificare di sottoinsiemi usando la capacità di campionamento casuale in Tabelle=> Piattaforma sottoinsiemi. Il campionamento casuale per tasso o dimensione ti darà tabelle di dati con la stessa distribuzione della tabella originale.
Re: Creazione di un sottoinsieme mantenendo la distribuzione originaleIn senso stretto, il campionamento con sostituzione è necessario se si desidera la stessa distribuzione dell'originale. Questa è la base per i metodi di ricampionamento e bootstrap. Il comando Subset esegue il campionamento casuale senza sostituzione. Penso che ti serva uno script per ottenere ciò di cui hai bisogno. Il campionamento si baserebbe sul calcolo di indici casuali come questo:
subscript = J( sample size, 1, Random Integer( 1, N Row( dt ) )
Questo vettore potrebbe essere utilizzato nella creazione di una colonna di dati in una nuova tabella di dati.
New Table( "Sample", New Column( "Data", Value( dt:originalColumn[subscript] ) ) );
Re: Creazione di un sottoinsieme mantenendo la distribuzione originaleCiao @bbenny7 ,
Ho trovato questo argomento interessante per un motivo simile: volevo creare correttamente un sottoinsieme di una tabella dati, ma stratificarla su una colonna. L'ho fatto in passato, come suggerito da @dlehman1 , utilizzando una colonna di convalida per stratificare sulle colonne di interesse, ma ero anche curioso di sapere come farlo in modo diverso nel caso in cui fossero necessarie più tabelle dati. Ho provato il metodo suggerito da @Mark_Bailey , ma ho scoperto che dovevo dividere il codice JSL per New Table() in due righe, una che definiva la nuova tabella e la successiva che assegnava i valori in base all'altra colonna della tabella dati di interesse. Non sono riuscito a farlo funzionare come era strutturato il suo codice originale. Ecco come ha funzionato per me un codice modificato:
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
Come piccolo test divertente, ho generato 4 sottoinsiemi creando un ciclo For() e inserendovi la riga di indice (per generare un nuovo set di numeri di riga) e ho confrontato le distribuzioni per i 4 set; le loro statistiche riassuntive sono tutte molto simili.

Ho eseguito un test simile, ma ho creato 4 colonne di convalida stratificate e ne ho poi esaminato le statistiche. Il valore N è diverso perché la piattaforma "Make Validation Column" non generava gli stessi rapporti che avevo usato in precedenza, dove avevo scelto 300 in modo casuale. In ogni caso, i risultati sono tutti molto simili.

In entrambi i casi dovresti riuscire a raggiungere la tua meta.
Buona fortuna!,
DS
Re: Creazione di un sottoinsieme mantenendo la distribuzione originaleGrazie per la risposta.
Mi sono reso conto che non ho bisogno del componente aggiuntivo, ma posso usare "Crea colonna di convalida K-fold" in Predictive Modeling --> Crea colonna di convalida.