
Mi imbatto in un problema in cui voglio vedere come sarebbero i miei vecchi limiti di controllo rispetto ai limiti di controllo fissi attuali o nuovi per un insieme di carte di controllo. In genere, aggiungerei linee di riferimento a ciascun grafico, ma penso che potrebbe esserci un modo migliore, utilizzando un messaggio di piattaforma a lungo dimenticato (almeno per me).
All'inizio di quest'anno stavo giocando con l'idea di come sarebbe stato aggiungere una nuova proprietà di colonna, in questo caso Limiti di azione e allerta per i grafici di monitoraggio ambientale, quindi utilizzare la proprietà della colonna come linea di riferimento nei grafici di controllo.
Mentre cercavo qualcosa di completamente diverso nello Scripting Index, mi sono imbattuto in una funzione chiamata "Aggiungi limiti". Per quanto ne so, questa funzione esiste da molto tempo, almeno prima di JMP 14, e può essere utilizzata per inviare i limiti di controllo superiore e inferiore a un grafico di controllo. Questi limiti vengono visualizzati come linee tratteggiate e sono elencati in una tabella accanto al grafico. Mi ci vorrebbe molto JSL per farlo accadere, quindi è bello scoprire un'utilità così utile ..
L'utilizzo di base di "Aggiungi limiti" è simile a questo, in cui l'ultima riga di JSL invia un messaggio al grafico che include i valori da utilizzare come limiti della linea tratteggiata.:
//Example of adding limits to a control chart
ccb = dt << Control Chart Builder( Variables( Y( :Column 1 ) ), Show Control Panel( 0 ) );
ccb << chart( position( 1 ), Add Limits( {LCL( 20 ), UCL( 30 )} ) );
Ovviamente, vorrei utilizzare "Aggiungi limiti" in modo dinamico con qualsiasi colonna, in modo che richieda un po' di fantasia in più.
Innanzitutto, impostiamo una tabella da utilizzare come esempio.Si noti che durante l'impostazione della tabella elimino la formula che genera alcuni dati casuali con cui lavorare subito dopo la costruzione della tabella. Questo corregge i valori nella tabella.
dt=New Table( "old and new control limits",Add Rows( 50 ),
New Column( "Column 1",Numeric,"Continuous",Format( "Best", 12 ),
Formula( Round( Random Normal( 25, 3 ), 0 ) )));
column(dt, 1)<< Delete Formula;
Il passaggio successivo consiste nell'aggiungere un nuovo tipo di proprietà della colonna, qualcosa di personalizzato che non esiste nativamente in JMP.Dopo aver eseguito questa riga, la colonna nella tabella dati ora ha una proprietà chiamata Vecchi limiti di controllo .
Column( dt, 1 ) << set property( "Old Control Limits", {LCL( 20 ), UCL( 30 )} );
Quindi, solo per verificare se lo script ha funzionato, puoi dare un'occhiata ai valori dalla proprietà della colonna.La nuova variabile OCL , ha due valori, LC(20) , E UCL(30) . Posso usare questi valori in un nuovo grafico di controllo:
OCL = Column( dt, 1 ) << Get Property( "Old Control Limits" );Show( OCL[1], OCL[2] );
Le prossime due righe potrebbero sembrare davvero strane, ma sono super robuste e sfruttano la struttura basata sulle funzioni di JSL.
Per prima cosa, definirò un paio di argomenti vuoti o quasi vuoti e poi li anniderò insieme.Impostando queste espressioni posso gestire ogni parte senza valutarle.ccbe , l'espressione del generatore di carte di controllo è una funzione, Costruttore di carte di controllo con due argomenti Variabili E Mostra pannello di controllo .
Successivamente, voglio aggiungere un nuovo argomento chiamato c cuore() alla funzione Costruttore carte di controllo.
- La nuova variabile ce è un'espressione con argomento c cuore e il grafico include un argomento, posizione (1) .
- Voglio aggiungere, aggiungere limiti al grafico argomento quindi ho variabile ae , per fare riferimento a un oggetto vuoto aggiungere limiti espressione.
- Per ultimo creo una lista vuota chiamata le , che conterrà i limiti da cui ho ottenuto Ottieni proprietà nel OCL variabile del passaggio precedente.
ccbe = Expr(Control Chart Builder( Variables( Y( :Column 1 ) ), Show Control Panel( 0 ) ));
ce = Expr( chart( position( 1 ) ) );
ae = Expr( add limits() );
le = {};
Quindi, metto insieme i pezzi per fare questo:
- Per prima cosa, inserisco l'elenco delle cose OCL e inserirlo in le .
- Secondo, prendo le e inserirlo in ae , seguito dall'inserimento ae in ce . Nel secondo caso ho avvolto ae all'interno di un Nome Espr() . Questo mi dà l'espressione valutata di ae senza valutarlo. Questo NomeEspr() il metodo è super pratico.
- Terzo, inserisco ce dentro ccbe , che è l'intera espressione della carta di controllo.
- Ho incluso anche a Spettacolo dopo ogni passaggio in modo da poter vedere come viene creata la funzione nel registro.
- L'ultimo passo è ottenere un grafico. Solo correndo ccbe tutto da solo, viene valutata quella variabile che contiene l'espressione completa e ottengo un grafico di controllo con linee tratteggiate che rappresentano i vecchi limiti di controllo, che provenivano dalle proprietà delle colonne
Insert Into( le, OCL );show( le );
Insert Into( ae, le );Show( ae );
Insert Into( ce, Name Expr( ae ) );Show( ce );
Insert Into( ccbe, Name Expr( ce ), 2 );
ccbe;
Con un piccolo sforzo in più, sono abbastanza sicuro che sarebbe possibile iniziare con una tabella che includa i limiti di controllo attuali e vecchi, che potrebbe essere utilizzata per popolare tutte le proprietà della colonna per un'intera tabella di variabili di processo.
L'intero script è allegato.