Utilizzo delle colonne di configurazione per applicare selettivamente le regole ai grafici di controlloCiao,
Ho un problema nell'applicare le regole di tendenza appropriate, o "Test", ai grafici di controllo usando JSL. I miei dati sono costituiti dai risultati di analisi multiple per tutti i lotti di misure di un certo prodotto nell'ultimo anno. I dati con cui sto lavorando sono in un formato impilato e la tabella ha colonne che contengono limiti di controllo e di specifica, così come 8 colonne per tutti gli 8 Test. Nelle colonne dei test, ogni riga avrà un 1 o uno 0 per indicare se la regola verrà applicata. Ho impostato una tabella di esempio qui sotto in un formato simile per riferimento.
| ID lotto | Analisi | Risultato | LCL | Università della California | Regola 1 | Regola3 | Regola 5 |
| A | X | 12 | 10 | 18 | 1 | 0 | 0 |
| A | Y | 204 | 200 | 215 | 1 | 0 | 1 |
| A | Z | 0,8 | 0,5 | 1 | 1 | 1 | 1 |
| B | X | 13 | 10 | 18 | 1 | 0 | 0 |
| B | Y | 209 | 200 | 215 | 1 | 0 | 1 |
| B | Z | 0,7 | 0,5 | 1 | 1 | 1 | 1 |
| C | X | 15 | 10 | 18 | 1 | 0 | 0 |
| C | Y | 205 | 200 | 215 | 1 | 0 | 1 |
| C | Z | 0,8 | 0,5 | 1 | 1 | 1 | 1 |
In questo esempio, ci sono 3 analisi univoche per 3 lotti univoci. La colonna Risultato è univoca per ogni analisi di ogni lotto, ma i limiti di controllo e le regole di tendenza sono abbinati per le analisi corrispondenti, quindi per l'analisi X, dovrebbe essere applicata solo la Regola 1, ma per l'analisi Z, dovrebbero essere applicate tutte e 3 le regole. Ho grafici di controllo tracciati utilizzando il codice seguente, con piccole modifiche ai nomi delle colonne per il bene dell'esempio:
dt << Control Chart(
Sample Label( :Lot ),
Group Size( 1 ),
KSigma( 3 ),
By( :Analysis ),
Chart Col( :Result, Levey Jennings( Show Zones( 1 ), Shade Zones( 1 ), Test 1( :Rule1[1] ), Test 3( :Rule3[1] ), Test 5( :Rule5[1] ) ) ),
SendToReport(
Dispatch(
{},
"Levey Jennings of Result",
OutlineBox,
{Set Title("Parameter: "||char(:Analysis))}
),Il resto del codice è costituito da comandi Dispatch per aggiungere linee di riferimento, regolare le dimensioni del frame, ecc. Quelle sezioni di codice non presentano problemi, quindi le ho omesse per brevità. Come mostrato sopra, quando ho aggiunto le linee "Test 1", "Test 3" e "Test 5" al comando Levey Jennings, ho provato a fare riferimento al valore della prima riga dalle rispettive colonne di configurazione. In questo modo, mentre lo script traccia i grafici tramite Analysis, la prima riga conterrà la configurazione Trend Rule dell'analisi corrente tracciata. Tuttavia, quando eseguo lo script, applica solo tutte e 3 le regole, indipendentemente dal fatto che debbano essere applicate per quel parametro specifico. Qualcuno può aiutarmi a spiegare come posso far sì che JMP analizzi il valore dalle rispettive colonne di configurazione e determini se una determinata regola debba essere applicata a ciascun grafico tramite Analysis?
In precedenza ho fatto funzionare questa cosa in una tabella divisa, ma l'ho fatto usando un ciclo for per creare una stringa con i valori concatenati nella stringa, quindi usando i comandi Parse ed Eval per l'esecuzione. Preferirei davvero non usare un ciclo for qui se può essere evitato, perché è per questo che sto estraendo i dati in un formato impilato in primo luogo.
Automazione e scriptingEsplorazione e visualizzazione dei datiRe: Utilizzo di colonne di configurazione per applicare selettivamente le regole ai grafici di controlloHo eseguito il tuo JSL con 2 modifiche
- Hai specificato una colonna denominata Lotto e il nome effettivo è ID lotto
- Ho rimosso la sezione Invia a Segnala
Names Default To Here( 1 );
dt = Current Data Table();
dt << Control Chart(
Sample Label( :Lot ID ),
Group Size( 1 ),
KSigma( 3 ),
By( :Analysis ),
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( :Rule1[1] ),
Test 3( :Rule3[1] ),
Test 5( :Rule5[1] )
)
);
Il codice è stato eseguito e ha prodotto il seguente output

Per verificare che i test specificati fossero gestiti correttamente, ho salvato lo script dall'output del grafico di controllo
Control Chart(
SendToByGroup( {:Analysis == "X"} ),
Sample Label( :Lot ID ),
KSigma( 3 ),
SendToByGroup(
{:Analysis == "X"},
Chart Col(
:Result,
Levey Jennings( Show Zones( 1 ), Shade Zones( 1 ), Test 1( 1 ) )
)
),
SendToByGroup(
{:Analysis == "Y"},
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( 1 ),
Test 5( 1 )
)
)
),
SendToByGroup(
{:Analysis == "Z"},
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( 1 ),
Test 3( 1 ),
Test 5( 1 )
)
)
),
By( :Analysis )
);
Come si può vedere nello script generato, il grafico di controllo ha ricevuto le informazioni su quali test eseguire per ciascuna analisi
Ho eseguito il codice su Windows 11 con JMP 18.1.0
Non vedo alcun problema
Re: Utilizzo di colonne di configurazione per applicare selettivamente le regole ai grafici di controlloOk, quindi ho provato a replicare esattamente come avevi descritto. Questo è lo script che ho eseguito.
Names Default to Here( 1 );
dt = Current Data Table();
dt << Control Chart(
Sample Label( :Lot ID ),
Group Size( 1 ),
KSigma( 3 ),
By( :Analysis ),
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( :Rule1[1] ),
Test 3( :Rule3[1] ),
Test 5( :Rule5[1] )
)
)
);
Ma il mio output è impostato di default per avere tutte e tre le regole attive per ogni analisi. Ecco lo script per l'analisi X, che dovrebbe avere solo il test 1 applicato in base alle colonne di configurazione.
Control Chart(
Sample Label( :Lot ID ),
KSigma( 3 ),
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( 1 ),
Test 3( 1 ),
Test 5( 1 )
)
),
Where( :Analysis == "X" )
);
Sto usando JMP 17.0.0 su Windows 11, quindi forse è qualcosa che è stato affrontato in uno degli aggiornamenti tra le nostre versioni. Vedrò di aggiornare tramite il mio reparto IT prima di fare qualsiasi altra risoluzione dei problemi. Grazie per aver testato il codice, sono felice di vedere che il codice dovrebbe funzionare in linea di principio!
Re: Utilizzo di colonne di configurazione per applicare selettivamente le regole ai grafici di controlloHo replicato i tuoi risultati in JMP 17. Di seguito è riportato un modo per ottenere i risultati desiderati eseguendo ciascuno dei livelli di analisi uno alla volta
Names Default To Here( 1 );
dt = Current Data Table();
Summarize( dt, byGroup = By( :Analysis ) );
For Each( {level}, byGroup,
dt << select where( :Analysis == level );
dtTemp = dt << Subset( selected columns( 0 ), selected rows( 1 ) );
Eval(
Eval Expr(
dtTemp << Control Chart(
Sample Label( :Lot ID ),
Group Size( 1 ),
KSigma( 3 ),
//By( :Analysis ),
Chart Col(
:Result,
Levey Jennings(
Show Zones( 1 ),
Shade Zones( 1 ),
Test 1( Expr( dtTemp:Rule1[1] ) ),
Test 3( Expr( dtTemp:Rule3[1] ) ),
Test 5( Expr( dtTemp:Rule5[1] ) )
)
)
)
)
);
);Re: Utilizzo di colonne di configurazione per applicare selettivamente le regole ai grafici di controlloQuesto è simile a come avevo ottenuto questo risultato quando lavoravo con una tabella divisa, eseguendo un ciclo per numero di colonna e creando un'espressione che alla fine è stata analizzata in JSL e valutata. Speravo solo di evitare l'uso di un'istruzione For quando lavoravo con la tabella impilata e utilizzando le funzioni By e Where per separare tramite analisi. In definitiva, questo codice JMP17 è ancora molto più semplice di quello che avevo sviluppato per le tabelle divise. Grazie ancora per il contributo! Cercherò di incorporarlo nel mio script attuale finché non sarò in grado di eseguire l'aggiornamento a JMP18.