Sottocampione casuale da una colonnaCiao a tutti, ho una popolazione di 200 negozi in tutto il paese.Sono interessato a sapere se posso sottocampionare una frazione di questi negozi e approssimare la distribuzione degli eventi. Potrebbe esserci un metodo Monte Carlo per riempire, ad esempio, 30 righe in una nuova colonna con un sottocampione casuale dei 200 originali.
Quindi potrei confrontare la distribuzione dei 30 conteggi nel sottocampione con la distribuzione nella popolazione di 200.
Ripeti questo diciamo 100 volte per determinare il rischio di campionare 30 negozi per rappresentare la popolazione di 200.
Pensieri?grazie, Paolo
Prime 10 file dei 200
Negozio# - colonna 1
Conteggio pari - colonna 2
19 20 21 22 23 25 26 27 29 34 | 1 4 7 3 4 3 12 5 8 8 |
Qualità e ingegneria di processoRe: Sottocampione casuale da una colonna
grazie Ron
Re: Sottocampione casuale da una colonnaCIAO @paulp ,
l'altra soluzione non di scripting che può essere utile in tali applicazioni è l'utilizzo del generatore di query JMP nel menu Tabelle.

lì puoi trovare una scheda di campionamento casuale come nella foto

Come al solito, se lo esegui in modo interattivo, puoi utilizzare lo script creato per un utilizzo aggiuntivo.
Re: Sottocampione casuale da una colonnaGrazie, Sam, ea tutti coloro che hanno pubblicato soluzioni.
Re: Sottocampione casuale da una colonnaCapisco che non stai scrivendo la tua soluzione. Puoi anche utilizzare in modo interattivo Tabelle > Sottoinsieme per creare una nuova tabella più piccola con righe selezionate casualmente dalla tabella dati originale. In questo modo funzionerebbe per te?
Re: Sottocampione casuale da una colonnaEcco uno script di esempio che crea sottoinsiemi di una determinata dimensione senza sostituzione
Names Default To Here( 1 );
dt =
// Open Data Table: semiconductor capability.jmp
// → Data Table( "semiconductor capability" )
Open( "$SAMPLE_DATA/semiconductor capability.jmp" );
// New formula column: Row
Data Table( "semiconductor capability" ) << New Column( "Row",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( Row() )
) << Move Selected Columns( {:Row}, after( :SITE ) );
// Loop through data creating sample data tables
sampleSize = 20;
For( i = 1, i <= 20, i++,
dtSample = Data Table( "semiconductor capability" ) << Subset(
Sample Size( sampleSize ),
Selected columns only( 0 ),
output table( "Sample " || Char( i ) )
);
matSelected = dtSample:Row << get values;
// Delete row column from sample data
dtSample << delete columns( Row );
// Delete selected rows from main table
dt << select rows( matSelected );
dt << delete rows;
);
// Delete row column from original data table
dt << delete columns( Row );Re: Sottocampione casuale da una colonnaIl modo rapido per eseguire un sottocampione utilizzando una formula di colonna è utilizzare la funzione Col Shuffle().La funzione restituisce un riordinamento casuale dei numeri di riga.Se scegli righe in cui i valori di Col Shuffle() sono minori o uguali alla dimensione del sottocampione (n_sub), ciò equivale a eseguire un ordinamento casuale della colonna e selezionare le prime n_sub righe.
Ad esempio, l'aggiunta di una nuova colonna con questa formula lo farà per una dimensione del sottocampione di 30.

tabella di esempio allegata.
Se vuoi farlo ripetutamente, imparare alcuni script JMP lo renderebbe più semplice.Uno script di base per aggiungere ripetutamente colonne come questa è
Names Default to Here( 1 );
Number_of_Cols_to_Add = 100;
For( i = 1, i <= Number_of_Cols_to_Add, i++,
Current Data Table() <<
New Column( "Y Subsample (Size 30)",
Numeric,
"Continuous",
Format( "Best", 12 ),
Formula( If( Col Shuffle() <= 30, :Y, . ) )
)
);
Re: Sottocampione casuale da una colonnaCiao Jeff, grazie per la risposta.Purtroppo non capisco come utilizzare la funzione per il mio scopo.
- Resample Freq crea conteggi di ricampionamenti.Questo sembra essere un passaggio intermedio alla creazione di una nuova tabella con i dati sottocampionati. Spero di creare direttamente una colonna di dati sottocampionati dalla popolazione originale di 200 righe.
- Preferirei campionare senza sostituzione, non bootstrap.
Se avessi bisogno solo dei dati originali sottocampionati una volta, il percorso più semplice sarebbe Tabella> Sottoinsieme> Dimensione campione casuale = 30 (ad es.)
Non scrivo, altrimenti creerei un ciclo per produrre 100 tabelle di 30 campioni casuali, quindi concatenerei le 100 tabelle in una tabella principale.
C'è un modo per prendere direttamente 30 campioni casuali da una colonna e inserire quei 30 valori in una nuova colonna?
In definitiva, spero di provare Affidabilità> Distribuzione della vita> Confronta gruppi per valutare la distribuzione dei sottocampioni rispetto alla distribuzione della popolazione originale.
- Quindi ripeti per Sample Size = 20, poi 40, ecc. così posso valutare la dimensione minima del campione che dà una distribuzione simile alla popolazione di 200 negozi.
Grazie, Paolo
Re: Sottocampione casuale da una colonnaDai un'occhiata al Ricampiona frequenza() funzione.
Ricampiona frequenza
Genera una selezione casuale con conteggi della frequenza di sostituzione, adatta per l'uso nel bootstrap. Ad esempio, supporta un secondo Colonna Freq argomento, consentendogli di eseguire campioni di bootstrap relativi a una colonna di frequenza preesistente specificata nel secondo argomento. Ricampiona frequenza() genera un ricampionamento al 100%. ResampleFreq(frequenza) genera un valutare campione di frequenza Ricampiona(frequenza, colonna) genera un campione calcolato per il tasso moltiplicato per la somma della colonna specificata. Per ulteriori informazioni sulla sintassi per la funzione Resample Freq, vedere Funzioni di probabilità discrete nel Riferimento alla sintassi JSL .