Come selezionare ed escludere tramite la combinazione UniqueVals di due colonne?Quindi sono perplesso qui. Sto cercando di generare un dt schermato di soli dati statisticamente significativi, basato su due colonne: Chart_ID e Recipe_ID. Posso farlo funzionare con una singola colonna ma non riesco a capire due colonne.
- Sto tracciando i dati grezzi utilizzando Oneway (y=mean, x=chamber, BY:Chart_ID, Recipe_ID) ed eseguendo All-pairs Tukey tTest.
- Quindi prendendo la tabella dei dati pVal combinati.
- selezionando quindi tutte le righe in cui pVal >0,05 ed escludendo
- quindi creando un elenco di riepilogo degli UniqueVals per Chart_ID (questi sono tutti Chart_ID con pVal significativi.)
- quindi selezionando tutte le righe nell'origine dt con UniqueVals corrispondente
- quindi invertendo la selezione ed escludendo
- --> questo lascia l'origine dt con solo i dati che sono tTest significativi per Chart_ID.
Non riesco a capire come aggiungere Recipe_ID nel riepilogo UniqueVals.
Esiste un modo migliore per finire con una fonte dt che ha escluso tutte le classifiche/ricette non significative?
//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;Combinazione e pulizia dei datiRi: Come selezionare ed escludere dalla combinazione di due colonne UniqueVals?ha funzionato! una VITTORIA così semplice. invia un valore concatenato a una stringa.Ri: Come selezionare ed escludere dalla combinazione di due colonne UniqueVals?La mia precedente soluzione Associative Array() non funzionerà correttamente se ci sono valori duplicati nelle colonne (potrebbe essere risolto abbastanza facilmente), quindi sto usando la versione for-loop.
Questo fa quello che vuoi?
Names Default To Here(1);
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( :batch),
By(:trial, :popcorn),
//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 << set name( "pValue PairWise by Channel Tukey");
/***********************************/
/**********************************/
pVals = Loc(dt1:"p-Value"n << get as matrix <= 0.05);
comparisonStrings = {};
For(i = 1, i <= N Items(pVals), i++,
Insert Into(comparisonStrings, char(dt1:trial[pVals[i]]) || dt1:popcorn[pVals[i]]);
);
show(comparisonStrings);
dtPopCorn << clear select;
dtPopCorn << select where(contains(comparisonStrings, char(:trial)||:popcorn));L'unica combinazione con p-value inferiore a 0,05 è trial = 2 e popcorm = gourmet.

Ri: Come selezionare ed escludere dalla combinazione di due colonne UniqueVals?@jthi
Grazie per i suggerimenti, ma sono un po' confuso riguardo al tuo script. Sembra che stia solo selezionando alcune volte ma non fa nulla per tornare a una sorgente dt.
Posso selezionare bene i pVal dalla tabella dei dati combinati. Il problema che sto riscontrando è provare a riassumere in base a due colonne nella tabella dati combinati, quindi tornare ai dati di origine principali e selezionare utilizzando il riepilogo.
Ho trovato un set di campioni che sembra che possiamo usare per parlare di questo problema.
Non riesco a capire come riassumere il dt di origine usando le due colonne BY
Per(:prova, :olio 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;Ri: Come selezionare ed escludere dalla combinazione di due colonne UniqueVals?È possibile convertire la colonna numerica in carattere e quindi concatenare le due colonne per ottenere l'elenco delle stringhe di confronto. Quindi usa quell'elenco per selezionare le righe desiderate (o usa gli array associativi). Non ho un set di dati di esempio, quindi ecco una sorta di esempio:
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);Usa Scripting Index per ottenere una migliore comprensione di ciò che sta accadendo (e per il debug, se necessario).
Ri: Come selezionare ed escludere dalla combinazione di due colonne UniqueVals?Grazie per l'info. Ho letto la dichiarazione dell'ASA e per lo più ha senso. Tuttavia, la mia situazione (e presumo molte altre persone) ha a che fare con migliaia di grafici e ho bisogno di un modo per scorrere rapidamente e ridurre l'elenco per esaminare i più importanti. Ecco uno screenshot come esempio. Ho 5000 grafici da vagliare e ho bisogno di un buon metodo per identificare quelli più importanti a cui dedicare del tempo. Devo tracciare la linea da qualche parte.
Ho anche cercato FDR, ma non credo che questo si applichi, poiché sto usando solo una singola caratteristica X. Non succede FDR con una sola X.

Per quanto riguarda la selezione e il riepilogo:
Questa è la cosa. Non riesco a capire come ottenere il riepilogo per poi tradurlo per consentirmi di selezionare i dati di origine.
In precedenza, stavo selezionando una singola colonna (Chart_ID), quindi riconvertendo in numerico perché Riepiloga emette il carattere. Da lì, sono stato in grado di selezionare la sorgente dt Chart_ID Col dall'elenco di UniqueVals (che era Chart_ID).
Come fare in modo che ciò accada con due colonne diverse che sono numeriche e caratteri?
Ri: Come selezionare ed escludere dalla combinazione di due colonne UniqueVals?Ciao, alieno1!
Forse non capisco, ma potresti provare a selezionare valori p significativi, sottoimpostare una nuova tabella, quindi riassumere per Chart_ID e Recipe_ID?
Ancora una volta, forse non capisco, ma quello che stai facendo sa di " p hacking ".Per lo meno, ti consiglio di leggere la dichiarazione ASA sui valori p e quindi cercare il tasso di falsi rilevamenti nell'indice delle statistiche sotto la guida di JMP.
Buona fortuna!