Comment sélectionner et exclure par combo UniqueVals de deux colonnes ?Donc je suis perplexe ici. J'essaie de produire un dt filtré de données statistiquement significatives, basé sur deux colonnes : Chart_ID et Recipe_ID. Je peux le faire fonctionner avec une seule colonne mais je ne peux pas comprendre deux colonnes.
- Je trace les données brutes à l'aide de Oneway (y=mean, x=chambre, BY:Chart_ID, Recipe_ID) et j'exécute le tTest Tukey All-pairs.
- Ensuite, en prenant la table de données pVal combinée.
- puis en sélectionnant toutes les lignes où pVal > 0,05 et en excluant
- puis créer une liste récapitulative des UniqueVals par Chart_ID (il s'agit de tous les Chart_ID avec des pVal significatifs.)
- puis en sélectionnant toutes les lignes dans la source dt avec les UniqueVals correspondantes
- puis en inversant la sélection et en excluant
- --> cela laisse la source dt avec uniquement les données qui sont tTest significatives par Chart_ID.
Je ne peux pas comprendre comment ajouter le Recipe_ID dans le récapitulatif UniqueVals.
Existe-t-il un meilleur moyen de se retrouver avec une source dt qui a exclu tous les graphiques/recettes qui ne sont pas significatifs ?
//dtSPC --> my source data, raw SPC data. Need to exclude rows from Charts, Recipes with high pVals
/*plotting a basic Fit YbyX just to get pValues. Formatting and style done on final plot*/
ow1 = Oneway(
Y( :MEAN ),
X( :CHAMBER ),
By(:CHART_ID, :RECIPE),
//All pairs Tukey HSD test
All Pairs(
1,
Confidence Quantile( 0 ),
Difference Matrix( 0 ),
LSD Threshold Matrix( 0 ),
Connecting Letters Report( 0 ),
Ordered Differences Report( 1 )
),
);
/***********************************/
/***********************************/
// Create the combined data table, using xPath (return a list of the OutlineBoxes from the report that have the title Ordered Differences Report. Then, use the first of those to make the combined data table.)
outlines = (Report( ow1[1] ) << Top Parent) << XPath( "//OutlineBox[text()='Ordered Differences Report']" );
dt1 = outlines[1][Table Box( 1 )] << Make Combined Data Table;
dt1 = current data table();
dt1 << set name( "pValue PairWise by Channel Tukey");
dt1:CHART_ID << Data type( Numeric ) << Set Modeling Type( Nominal );
/***********************************/
/**********************************/
//Screen and show only the CHART_ID's w/ a Tukey pair pVal<0.05
//exclude all high pVal rows, leaving only low pVal Channels. Does not work in reverse.
dt1 << select where(:name("p-Value") > 0.05);
dt1 << exclude;
dt1 << clear select;
//create a list of remaining Unique CHART_ID's
summarize(dt1, uniqueVals=by(:CHART_ID));
//Convert to numeric
For( i = 1, i <= N Items(uniqueVals ), i++,
uniqueVals[i] = Num(uniqueVals[i] )
);
//extra, just to look at the data
//dtUnique = New Table( "uniqueVals less 0.05");
//dtUnique << New Column( "CHART_ID", Values(uniqueVals));
//select on SPC source data just the channels w/ low pVals
//need to choose SPC data table
dtSPC << clear select;
dtSPC << select where( contains( uniqueVals, :CHART_ID));
//invert and exclude, leaving only low pVal CHART_ID's
dtSPC << invert row selection << exclude;
dtSPC << clear select;AnalytiqueTableau de donnéesScriptRe: Comment sélectionner et exclure par combo UniqueVals de deux colonnes ?Salut, aliegner1 !
Peut-être que je ne comprends pas, mais vous pouvez essayer de sélectionner des valeurs p significatives, de sous-définir une nouvelle table, puis de résumer par Chart_ID et Recipe_ID ?
Encore une fois, peut-être que je ne comprends pas, mais ce que tu fais sent " p piratage ".À tout le moins, je vous recommande de lire la déclaration ASA sur les valeurs p, puis de rechercher le taux de fausses découvertes dans l'index des statistiques sous l'aide JMP.
Bonne chance!
Re: Comment sélectionner et exclure par combo UniqueVals de deux colonnes ?Merci pour l'info. J'ai lu la déclaration de l'ASA et cela a surtout du sens. Cependant, ma situation (et je suppose que beaucoup d'autres personnes) traitent des milliers de graphiques et j'ai besoin d'un moyen de filtrer et de réduire rapidement la liste pour examiner les plus importants. Voici une capture d'écran à titre d'exemple. J'ai 5000 graphiques à parcourir et j'ai besoin d'une bonne méthode pour identifier les plus importantes à examiner. Je dois tracer la ligne quelque part.
J'ai également recherché FDR, mais je ne pense pas que cela s'applique, car je n'utilise qu'une seule caractéristique X. Il n'y a pas de FDR qui se passe avec un seul X.

Concernant la sélection et la synthèse :
C'est ca le truc. Je ne sais pas comment obtenir le résumé pour ensuite le traduire pour me permettre de sélectionner les données source.
Auparavant, je sélectionnais une seule colonne (Chart_ID) puis je reconvertis en numérique car Summarize produit des caractères. À partir de là, j'ai pu sélectionner la source dt Chart_ID Col par la liste des UniqueVals (qui étaient les Chart_ID).
Comment faire en sorte que cela se produise avec deux colonnes différentes qui sont numériques et caractères ?
Re: Comment sélectionner et exclure par combo UniqueVals de deux colonnes ?Vous pouvez convertir la colonne numérique en caractère, puis concaténer les deux colonnes pour obtenir la liste des chaînes de comparaison. Utilisez ensuite cette liste pour sélectionner les lignes souhaitées (ou utilisez des tableaux associatifs). N'ayant pas d'exemple d'ensemble de données, voici une sorte d'exemple :
Names Default To Here(1);
dt = New Table("Untitled 22",
Add Rows(5),
Compress File When Saved(1),
New Column("CHART_ID",
Character,
"Nominal",
Set Values({"123", "1", "12", "0", "135"})
),
New Column("RECIPE",
Character,
"Nominal",
Set Values({"A", "A", "B", "B", "C"})
),
New Column("pval",
Numeric,
"Continuous",
Format("Best", 12),
Set Values([0.1, 0.001, 0.051, 0.002, 0.1])
)
);
pVals = Loc(dt:pval << get as matrix > 0.05); //get rows over 0.05
comparisonStrings = {};
For(i = 1, i <= N Items(pVals), i++,
Insert Into(comparisonStrings, char(dt:CHART_ID[pVals[i]]) || dt:RECIPE[pVals[i]]);
);
wait(1);
dt << Select Where(Contains(comparisonStrings, char(:CHART_ID)||:RECIPE));
wait(1);
dt << clear select;
wait(1);
aa = Associative Array(Eval List(dt:CHART_ID[pVals]), EvalList(dt:RECIPE[pVals]));
dt << Select Where(Contains(aa, :CHART_ID) & aa[:CHART_ID] == :RECIPE);Utilisez Scripting Index pour mieux comprendre ce qui se passe (et pour le débogage si nécessaire).
Re: Comment sélectionner et exclure par combo UniqueVals de deux colonnes ?@jthi
Merci pour les conseils, mais je suis un peu confus au sujet de votre script. On dirait qu'il ne fait que sélectionner quelques fois, mais ne fait rien pour revenir à un dt source.
Je peux très bien sélectionner les pVal dans la table de données combinées. Le problème que j'ai est d'essayer de résumer ensuite par deux colonnes dans le tableau de données combinées, puis de revenir aux données sources principales et de sélectionner à l'aide du résumé.
J'ai trouvé un ensemble d'échantillons que nous pouvons utiliser pour parler de ce problème.
Je ne peux pas comprendre comment résumer à la source dt en utilisant les deux colonnes BY
Par(:trial, :oil amt),
dtPopCorn = Open( "$SAMPLE_DATA/Popcorn.jmp" );
/*plotting a basic Fit YbyX just to get pValues. Formatting and style done on final plot*/
ow1 = Oneway(
Y( :yield ),
X( :popcorn ),
By(:trial, :oil amt),
//All pairs Tukey HSD test
All Pairs(
1,
Confidence Quantile( 0 ),
Difference Matrix( 0 ),
LSD Threshold Matrix( 0 ),
Connecting Letters Report( 0 ),
Ordered Differences Report( 1 )
),
);
/***********************************/
/***********************************/
// Create the combined data table, using xPath (return a list of the OutlineBoxes from the report that have the title Ordered Differences Report. Then, use the first of those to make the combined data table.)
outlines = (Report( ow1[1] ) << Top Parent) << XPath( "//OutlineBox[text()='Ordered Differences Report']" );
dt1 = outlines[1][Table Box( 1 )] << Make Combined Data Table;
dt1 = current data table();
dt1 << set name( "pValue PairWise by Channel Tukey");
dt1:trial << Data type( Numeric ) << Set Modeling Type( Nominal );
/***********************************/
/**********************************/
//Screen and show only the trial's w/ a Tukey pair pVal<0.05
//exclude all high pVal rows, leaving only low pVal Channels. Does not work in reverse.
dt1 << select where(:name("p-Value") > 0.5); //I know...just setting 0.5 so that one row stands out.
dt1 << exclude;
dt1 << clear select;
//create a list of remaining Unique trial's
summarize(dt1, uniqueVals=by(:trial));
//Convert to numeric
For( i = 1, i <= N Items(uniqueVals ), i++,
uniqueVals[i] = Num(uniqueVals[i] )
);
//extra, just to look at the data
//dtUnique = New Table( "uniqueVals less 0.5");
//dtUnique << New Column( "trial", Values(uniqueVals));
//select on SPC source data just the channels w/ low pVals
//need to choose SPC data table
dtPopCorn << clear select;
dtPopCorn << select where( contains( uniqueVals, :trial));
//invert and exclude, leaving only low pVal trial's
dtPopCorn << invert row selection << exclude;
dtPopCorn << clear select;