Statistiques récapitulatives de toutes les colonnes numériques par variable de regroupementJ'ai emprunté une section d'un autre JSL que quelqu'un a écrit il y a quelque temps, mais qui a malheureusement quitté l'entreprise maintenant.
Le JSL original crée des boîtes à moustaches ainsi qu'un tableau avec des statistiques récapitulatives de toutes les colonnes numériques en regroupant des variables (« split »).
Mon objectif est d'obtenir uniquement le tableau récapitulatif avec les statistiques récapitulatives (moyenne, écart type) de toutes les colonnes numériques par variable de regroupement.
J'utilise JMP16.
L'exemple de tableau de données d'entrée comporte 200 colonnes numériques, des milliers de lignes avec 5 valeurs uniques de variable de caractère de regroupement (« split »).
Le tableau récapitulatif de sortie doit comporter 200 lignes avec 5 colonnes pour la moyenne et 5 colonnes pour l'écart type, où chacune des nouvelles colonnes (10) est la moyenne/l'écart type de chaque colonne numérique regroupée par chaque valeur unique de la variable de caractère de regroupement (« split »).
Merci
Automatisation et scriptsIngénierie de la qualité et des procédésFenêtresRé: Statistiques récapitulatives de toutes les colonnes numériques par variable de regroupementJ'ai oublié de poster l'erreur que j'obtiens avec le JSL
Merci

Ré: Statistiques récapitulatives de toutes les colonnes numériques par variable de regroupementLe JSL pour une plate-forme JMP qui génère une analyse de variance est manquant dans le code. La façon dont la variable « vv » est utilisée dans votre JSL fourni semble pointer vers l'affichage de sortie d'une analyse à sens unique ou d'un modèle d'ajustement. Je ne trouve aucune référence de ce type dans le code que vous avez fourni.
J'ai fait une supposition et ajouté un Oneway au code. Il génère une sortie, mais vous devez vérifier que c'est ce que vous voulez.
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 )
);
);
);
Ré: Statistiques récapitulatives de toutes les colonnes numériques par variable de regroupementMerci pour votre réponse rapide.
Le nouveau JSL fonctionne et fournit les résultats souhaités, mais je pense qu'il est lent.
Je cherche à utiliser ce script pour un très grand ensemble de données.
Existe-t-il des options pour améliorer les performances ? Merci.
Ré: Statistiques récapitulatives de toutes les colonnes numériques par variable de regroupementLe script s'exécuterait beaucoup plus rapidement en utilisant la plateforme Response Screening pour obtenir les valeurs p. Il serait également plus efficace d'utiliser la plateforme Tabulate pour générer les moyennes et les écarts types
Voici un exemple de création du tableau récapitulatif à l'aide des suggestions ci-dessus. J'ai exclu la limitation PValue, car elle n'avait aucun effet dans le script d'origine.

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 );
Cela devrait vous donner une longueur d'avance pour terminer le script afin qu'il réponde exactement à vos spécifications.
Je vous suggère de prendre le temps de lire le guide de script, qui se trouve dans la bibliothèque de documentation JMP sous le menu déroulant Aide.
Ré: Statistiques récapitulatives de toutes les colonnes numériques par variable de regroupementEn guise d'alternative, vous pouvez générer un tableau empilé temporaire - et utiliser Tableaux/Résumé en combinaison avec les options Groupe (colonne d'origine) et Sous-groupe (fractionnement) :

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