Statistiche riassuntive di tutte le colonne numeriche per variabile di raggruppamentoHo preso in prestito una sezione di un altro JSL che qualcuno ha scritto qualche tempo fa, ma che purtroppo ora non è più disponibile.
Il JSL originale crea box plot insieme a una tabella con statistiche riassuntive di tutte le colonne numeriche in base alla variabile di raggruppamento ("split").
Il mio obiettivo è ottenere solo la tabella riepilogativa con le statistiche riepilogative (media, deviazione standard) di tutte le colonne numeriche raggruppando le variabili.
Sto utilizzando JMP16.
La tabella dei dati di input di esempio contiene 200 colonne numeriche, migliaia di righe con 5 valori univoci di variabili di carattere di raggruppamento ("split").
la tabella riepilogativa di output dovrebbe avere 200 righe con 5 colonne per la media e 5 colonne per la deviazione standard, dove ciascuna delle nuove colonne (10) è la media/deviazione standard di ciascuna colonna numerica raggruppata per ciascun valore univoco della variabile carattere di raggruppamento ("split").
Grazie
Automazione e scriptingIngegneria della qualità e dei processiFinestreRe: Statistiche riassuntive di tutte le colonne numeriche per variabile di raggruppamentoHo dimenticato di postare l'errore che ottengo con JSL
Grazie

Re: Statistiche riassuntive di tutte le colonne numeriche per variabile di raggruppamentoIl JSL per una piattaforma JMP che genera un'analisi della varianza è mancante dal codice. Il modo in cui la variabile "vv" viene utilizzata nel JSL fornito sembra puntare all'output display da un'analisi unidirezionale o da un modello di adattamento. Non trovo alcun riferimento del genere nel codice fornito.
Ho fatto un'ipotesi e ho aggiunto un Oneway al codice. Genera un output, ma devi verificare che sia quello che vuoi.
Input = Dialog( "Please Set Pvalue Limit", Pvalue_Threshold = EditNumber( 0.15 ), Button( "OK" ), Button( "Cancel" ) );
Pvaluelimit = Input[1];
vl = V List Box( Text Box( "Vmap Comparison" ) );
vl1 = V List Box();
vl2 = V List Box();
counter = 0;
i = 0;
k = 0;
j = 0;
w = 0;
WorkTable= current data table();
GetColName = WorkTable << get column names( Numeric );
Show( GetColName );
SumDT = New Table( "SummaryData" );
SumDT << New Column( "MDUT_Data", Character, Nominal, width( 30 ), values( GetColName ) );
SumDT << New Column( "P-Value", Numeric, Continuous );
nc1 = 1;
Temp = Data Table( WorkTable ) << Summary( Group( SPLIT ) );
nsplits = N Row( Temp );
SplitDef = Column( 1 ) << Get As Matrix;
Show( SplitDef, nsplits );
Close( Temp, no save );
For( i = 1, i <= nsplits, i++,
MeanCol = "Mean of " || Splitdef[i];
SumDT << New Column( MeanCol );
);
For( i = 1, i <= nsplits, i++,
SigmaCol = "Sigma of " || Splitdef[i];
SumDT << New Column( SigmaCol );
);
Current Data Table( SumDT );
For Each Row(
CurrentMDUT = Column( SumDT, "MDUT_Data" )[];
Current Data Table( WorkTable );
MeanCal = Summarize(
ExpCol = by( SPLIT ),
c = count,
meanD = Mean( Eval( CurrentMDUT ) ),
Sig = Std Dev( Eval( CurrentMDUT ) )
);
Current Data Table( SumDT );
For( w = nc1 + 2, w <= nsplits + nc1 + 1, w++,
BB = meanD[w - nc1 - 1];
Column( w )[] = BB;
CC = Sig[w - nc1 - 1];
Column( w + nsplits )[] = CC;
);
Current Data Table( WorkTable );
vx=worktable << Oneway( Y( column(SumDT:MDUT_Data[row()]) ), X( :Split ), Means( 1 ), Mean Diamonds( 1 ) );
vv=report(vx);
Pvalue = vv["Analysis of Variance"][Number Col Box( 5 )] << get( 1 );
Current Data Table( SumDT );
Column( nc1 + 1 )[] = Pvalue;
Current Data Table( WorkTable );
vv << close window;
If( Pvalue < Pvaluelimit,
counter = counter + 1;
layoutflag = Mod( counter, 2 );
If( layoutflag > 0,
vl1 << append( vv ),
vl2 << append( vv )
);
);
);
Re: Statistiche riassuntive di tutte le colonne numeriche per variabile di raggruppamentoGrazie per la rapida risposta.
Il nuovo JSL funziona e fornisce i risultati desiderati, ma penso che sia lento.
Vorrei utilizzare questo script per un set di dati molto ampio.
Ci sono opzioni per migliorare le prestazioni? Grazie.
Re: Statistiche riassuntive di tutte le colonne numeriche per variabile di raggruppamentoLo script funzionerebbe molto più velocemente utilizzando la piattaforma Response Screening per ottenere i p-Values. Sarebbe anche più efficiente utilizzare la piattaforma Tabulate per generare le medie e le deviazioni standard
Ecco un esempio di come creare la tabella Riepilogo usando i suggerimenti di cui sopra. Ho escluso la limitazione PValue, poiché non faceva nulla nello script originale.

Names Default To Here( 1 );
WorkTable = Current Data Table();
GetColName = WorkTable << get column names( Numeric );
// Generate the mean/std table
tab = WorkTable << (Tabulate(
Add Table(
Column Table( Grouping Columns( :split ), Statistics( Mean ) ),
Column Table( Grouping Columns( :split ), Statistics( Std Dev ) ),
Row Table( Analysis Columns( Eval( GetColName ) ) )
)
));
tab << Make Into Data Table;
tab << close window;
SumDT = Current Data Table();
SumDT << set name( "SummaryData" );
// Generate the p-values
rs = WorkTable << Response Screening(
Y( Eval( GetColName ) ),
X( :split ),
PValues Table on Launch( 1 )
);
ResponseDT = rs << get PValues;
Report( rs ) << close window;
ResponseDT << select columns( {"Y", "PValue"} );
ResponseDT << Invert Column Selection;
ResponseDT << delete columns;
ResponseDT:Y << set name( "Analysis Columns" );
SumDT << Update( With( ResponseDT ), Match Columns( :Analysis Columns = :Analysis Columns ) );
SumDT << Select columns( :PValue );
SumDT << Move Selected Columns( After( :Analysis Columns ) );
Close( ResponseDT, nosave );
Dovrebbe darti un vantaggio nel completare la sceneggiatura in modo che soddisfi esattamente le tue specifiche.
Ti consiglio di prenderti il tempo di leggere la guida allo scripting, reperibile nella Libreria di documentazione JMP nel menu a discesa della Guida.
Re: Statistiche riassuntive di tutte le colonne numeriche per variabile di raggruppamentoCome suggerimento alternativo, puoi generare una tabella temporanea impilata e utilizzare Tabelle/Riepilogo in combinazione con le opzioni Gruppo (colonna originale) e Sottogruppo (dividi):

dt = Open( "$SAMPLE_DATA/Semiconductor Capability.jmp" );
tmp = dt <<
Stack(
columns( Column Group( "Processes" ) )
);
tmp << Summary(
Group( :Label ),
Mean( :Processes ),
Std Dev( :Processes ),
Subgroup( :SITE ),
statistics column name format( "stat" )
);