Zusammenfassende Statistik aller numerischen Spalten nach GruppierungsvariableIch habe einen Abschnitt einer anderen JSL übernommen, den jemand vor einiger Zeit geschrieben hat, der das Unternehmen inzwischen aber leider verlassen hat.
Original-JSL erstellt Boxplots zusammen mit einer Tabelle mit zusammenfassenden Statistiken aller numerischen Spalten nach Gruppierungsvariable („Split“).
Mein Ziel besteht darin, durch Gruppieren der Variablen nur die Übersichtstabelle mit den Übersichtsstatistiken (Mittelwert, Standardabweichung) aller numerischen Spalten zu erhalten.
Ich verwende JMP16.
Die Beispiel-Eingabedatentabelle hat 200 numerische Spalten, Tausende von Zeilen mit 5 eindeutigen Werten der Gruppierungszeichenvariable („Split“).
Die Ausgabe-Zusammenfassungstabelle sollte 200 Zeilen mit 5 Spalten für den Mittelwert und 5 Spalten für die Standardabweichung enthalten, wobei jede der neuen Spalten (10) den Mittelwert/die Standardabweichung jeder numerischen Spalte darstellt, gruppiert nach jedem eindeutigen Wert der Gruppierungszeichenvariable („Split“).
Danke
Automatisierung und SkriptingQualitäts- und ProzesstechnikWindowsBetreff: Zusammenfassende Statistik aller numerischen Spalten nach GruppierungsvariableIch habe vergessen, den Fehler zu posten, den ich mit dem JSL bekomme
Danke

Betreff: Zusammenfassende Statistik aller numerischen Spalten nach GruppierungsvariableDas JSL für eine JMP-Plattform, die eine Varianzanalyse generiert, fehlt im Code. Die Art und Weise, wie die Variable „vv“ in Ihrem bereitgestellten JSL verwendet wird, scheint auf die Ausgabeanzeige einer Einweganalyse oder eines Anpassungsmodells zu verweisen. Ich finde keinen solchen Verweis in dem von Ihnen bereitgestellten Code.
Ich habe eine Vermutung angestellt und dem Code ein Oneway hinzugefügt. Es erzeugt eine Ausgabe, aber Sie müssen überprüfen, ob es das ist, was Sie wollen.
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 )
);
);
);
Betreff: Zusammenfassende Statistik aller numerischen Spalten nach GruppierungsvariableVielen Dank für die schnelle Antwort.
Das neue JSL funktioniert und liefert die gewünschten Ergebnisse, ist meiner Meinung nach aber langsam.
Ich möchte dieses Skript für einen sehr großen Datensatz verwenden.
Gibt es Möglichkeiten zur Leistungssteigerung? Danke.
Betreff: Zusammenfassende Statistik aller numerischen Spalten nach GruppierungsvariableDas Skript würde viel schneller ausgeführt, wenn die Response Screening-Plattform zum Abrufen der p-Werte verwendet würde. Es wäre auch effizienter, die Tabulate-Plattform zum Generieren der Mittelwerte und Standardabweichungen zu verwenden.
Hier ist ein Beispiel, wie Sie die Übersichtstabelle mit den oben genannten Vorschlägen erstellen. Ich habe die PValue-Begrenzung ausgeschlossen, da sie im ursprünglichen Skript nichts bewirkte.

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 );
Dies sollte Ihnen einen Vorsprung bei der Fertigstellung des Skripts verschaffen, sodass es genau Ihren Anforderungen entspricht.
Ich schlage vor, dass Sie sich die Zeit nehmen, den Skriptleitfaden durchzulesen, den Sie in der JMP-Dokumentationsbibliothek im Pulldown-Menü „Hilfe“ finden.
Betreff: Zusammenfassende Statistik aller numerischen Spalten nach GruppierungsvariableAls alternativen Vorschlag können Sie eine temporäre gestapelte Tabelle generieren - und Tabellen/Zusammenfassung in Kombination mit den Optionen Gruppieren (ursprüngliche Spalte) und Untergruppieren (aufteilen) verwenden:

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" )
);