Wie kann man eine UniqueVals-Kombination aus zwei Spalten auswählen und ausschließen?Also ich bin hier ratlos. Ich versuche, ein gescreentes dt nur mit statistisch signifikanten Daten auszugeben, basierend auf zwei Spalten: Chart_ID & Recipe_ID. Ich kann es mit einer einzigen Spalte zum Laufen bringen, kann aber keine zwei Spalten herausfinden.
- Ich zeichne die Rohdaten mit Oneway (y=mean, x=chamber, BY:Chart_ID, Recipe_ID) und führe den All-pairs Tukey tTest aus.
- Dann nehmen Sie die kombinierte pVal-Datentabelle.
- Wählen Sie dann alle Zeilen aus, in denen pVal >0,05 ist und ausgenommen
- Erstellen Sie dann eine zusammenfassende Liste der UniqueVals nach Chart_ID (dies sind alle Chart_IDs mit signifikanten pVals.)
- Wählen Sie dann alle Zeilen in der Quelle dt mit übereinstimmenden UniqueVals
- dann Auswahl invertieren und ausschließen
- --> dies hinterlässt die Quelle dt nur mit Daten, die von Chart_ID tTest signifikant sind.
Ich kann nicht herausfinden, wie man die Recipe_ID in die Zusammenfassung UniqueVals einfügt.
Gibt es einen besseren Weg, um mit einer Quelle dt zu enden, die alle nicht signifikanten Diagramme / Rezepte ausgeschlossen hat?
//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;AnalytikDatentabelleSkriptingBetreff: Wie kann man eine UniqueVals-Kombination aus zwei Spalten auswählen und ausschließen?Hallo, aliegner1!
Vielleicht verstehe ich das nicht, aber Sie könnten versuchen, signifikante p-Werte auszuwählen, eine neue Tabelle zu unterteilen und dann nach Chart_ID und Recipe_ID zusammenzufassen?
Auch hier, vielleicht verstehe ich es nicht, aber was du tust, riecht nach " p hacken ".Ich empfehle Ihnen zumindest, die ASA-Erklärung zu p-Werten zu lesen und dann die False Discovery Rate im Statistikindex unter der JMP-Hilfe nachzuschlagen.
Viel Glück!
Betreff: Wie kann man eine UniqueVals-Kombination aus zwei Spalten auswählen und ausschließen?Danke für die Info. Ich habe die ASA-Erklärung gelesen und sie macht meistens Sinn. Meine Situation (und ich nehme an, viele andere Personen) haben es jedoch mit Tausenden von Diagrammen zu tun, und ich brauche eine Möglichkeit, die Liste schnell zu durchsuchen und zu reduzieren, um die wichtigsten zu sehen. Hier ist ein Screenshot als Beispiel. Ich habe 5000 Diagramme zu durchsuchen und brauche eine gute Methode, um die wichtigsten zu identifizieren, die ich mir ansehen kann. Irgendwo muss ich die Grenze ziehen.
Ich habe auch nach FDR gesucht, aber ich glaube nicht, dass dies zutrifft, da ich nur ein einzelnes X-Merkmal verwende. Es gibt keine FDRs mit nur einem einzigen X.

Zum Auswählen und Zusammenfassen:
Das ist es. Ich kann nicht herausfinden, wie ich die Zusammenfassung bekomme, um sie dann zu übersetzen, damit ich die Quelldaten auswählen kann.
Zuvor habe ich eine einzelne Spalte (Chart_ID) ausgewählt und dann wieder in numerisch konvertiert, da Summarize Zeichen ausgibt. Von dort aus konnte ich die Quelle dt Chart_ID Col durch die Liste der UniqueVals (das waren die Chart_IDs) auswählen.
Wie kann dies mit zwei verschiedenen Spalten geschehen, die numerisch und zeichenweise sind?
Betreff: Wie kann man eine UniqueVals-Kombination aus zwei Spalten auswählen und ausschließen?Sie können die numerische Spalte in Zeichen umwandeln und dann die beiden Spalten verketten, um eine Liste der Vergleichszeichenfolgen zu erhalten. Verwenden Sie dann diese Liste, um die gewünschten Zeilen auszuwählen (oder verwenden Sie assoziative Arrays). Ich habe kein Beispiel-Dataset, daher ist hier eine Art Beispiel:
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);Verwenden Sie den Scripting-Index, um ein besseres Verständnis darüber zu erhalten, was vor sich geht (und bei Bedarf zum Debuggen).
Betreff: Wie kann man eine UniqueVals-Kombination aus zwei Spalten auswählen und ausschließen?@jthi
Vielen Dank für die Tipps, aber ich bin etwas verwirrt über Ihr Skript. Es sieht so aus, als würde es nur ein paar Mal auswählen, tut aber nichts, um zu einem Quell-dt zurückzukehren.
Ich kann die pVals aus der kombinierten Datentabelle gut auswählen. Das Problem, das ich habe, besteht darin, dass ich versuche, dann in der kombinierten Datentabelle nach zwei Spalten zusammenzufassen, dann zu den Hauptquelldaten zurückzukehren und mithilfe der Zusammenfassung auszuwählen.
Ich habe ein Beispielset gefunden, mit dem wir über dieses Problem sprechen können.
Ich kann nicht herausfinden, wie ich mit den beiden BY-Spalten zurück zur Quelle dt zusammenfassen kann
Durch (: Versuch, :Ölamt),
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;