| Oratore |
Trascrizione |
| Mia Stephens |
Benvenuti al JMP Discovery Summit. Sono Mia Stephens e sono una product manager di JMP. Sono affiancata da Jordan Hiller, un ingegnere di sistema. Oggi parleremo dell'automazione del flusso di lavoro di data curation. |
| |
Questo è solo un riassunto, non ne parlerò. |
| |
E divideremo questo intervento in due parti. Inizierò parlando del flusso di lavoro analitico. |
| |
Parleremo della creazione dei dati, di cosa intendiamo per data curation. E vedremo come identificare potenziali problemi di qualità dei dati nei vostri dati. |
| |
Poi passerò la parola a Jordan, che parlerà della necessità di riproducibilità. |
| |
Condividerà con noi un promemoria per la cura dei dati e mostrerà come...come curare i dati in JMP. |
| |
il registratore di azioni e il registro migliorato. |
| |
Parliamo quindi del flusso di lavoro analitico. |
| |
Tutto inizia quando abbiamo un problema aziendale che stiamo cercando di risolvere. |
| |
E naturalmente dobbiamo compilare i dati, e si possono compilare dati da diverse fonti e importarli in un JMP. |
| |
E alla fine, dobbiamo essere in grado di condividere i risultati, comunicare le nostre scoperte agli altri. A volte questo può essere un progetto una tantum, |
| |
Ma spesso abbiamo analisi che dobbiamo ripetere. Quindi una domanda fondamentale affrontata in questa presentazione è: è possibile riprodurre facilmente i risultati? |
| |
Altri possono riprodurre i tuoi risultati? Oppure, se hai nuovi dati o se hai dati aggiornati, puoi facilmente ripetere l'analisi e, in particolare, le fasi di data curation su questi nuovi dati? Ecco, questo è ciò di cui ci occuperemo in questa presentazione. |
| |
Ma cos'è esattamente la data curation? |
| |
E perché dovremmo preoccuparcene? |
| |
Beh, la data curation consiste essenzialmente nel garantire che i nostri dati siano utili per guidare le scoperte analitiche. Fondamentalmente, dobbiamo essere in grado di risolvere i problemi che stiamo cercando di affrontare. |
| |
E riguarda in gran parte l'organizzazione dei dati, la struttura dei dati e anche la pulizia dei dati. |
| |
Se pensiamo ai problemi che potremmo incontrare con i dati, tendono a rientrare in quattro categorie generali |
| |
potresti avere una formattazione errata, dati incompleti, dati mancanti oppure dati sporchi o disordinati. |
| |
Per aiutarci ad affrontare questi temi, prenderemo in prestito alcuni contenuti da STIPS. E se non avete familiarità con STIPS, STIPS è il nostro corso gratuito, "Pensiero statistico per la risoluzione di problemi industriali". |
| |
Si tratta di un corso basato su sette moduli indipendenti, il secondo dei quali riguarda l'analisi esplorativa dei dati. |
| |
E a causa della natura iterativa e interattiva dell'analisi esplorativa dei dati e della loro cura, l'ultima lezione di questo modello...in questo modulo si chiama Preparazione dei dati per l'analisi, quindi nel corso di questa presentazione prenderemo molto spunto da questa lezione. |
| |
Analizziamo singolarmente questi problemi. Formattazione errata. Cosa intendiamo per formattazione errata? Beh, questo si verifica quando i dati sono nella forma sbagliata o nel formato sbagliato per l'analisi. Questo può applicarsi all'intera tabella dati. Quindi, ad esempio, potresti avere |
| |
chiamati...dati memorizzati in colonne separate, ma in realtà hai bisogno che i dati siano memorizzati in una colonna. |
| |
Oppure potrebbe essere che i tuoi dati siano in tabelle dati separate e che tu abbia bisogno di concatenare, aggiornare o unire insieme le tabelle dati. |
| |
Può riferirsi a singole variabili. Ad esempio, potresti avere il tipo di modellazione sbagliato. Oppure potresti avere delle date nella tabella dati, quindi potresti avere colonne di date che potrebbero non essere formattate come giorni, quindi l'analisi potrebbe non riconoscere che si tratta di dati di tipo data. |
| |
La formattazione può anche essere estetica. Ad esempio, se si ha a che fare con una tabella dati di grandi dimensioni, si potrebbero avere molte colonne... |
| |
potresti avere dei nomi...nomi di colonne non realmente riconoscibili che potresti voler modificare. |
| |
Potresti avere molte colonne che potresti voler raggruppare per renderle un po' più gestibili. |
| |
La colonna delle risposte potrebbe trovarsi proprio alla fine della tabella dati e potrebbe essere necessario spostarla verso l'alto. In questo caso, i problemi estetici non ostacoleranno necessariamente l'analisi, ma se riesci a risolvere alcuni di questi problemi, puoi semplificarla un po'. |
| |
I dati incompleti si verificano quando mancano dati. Questo può riguardare la mancanza di dati su variabili importanti. Ad esempio, potresti non aver acquisito dati su variabili fondamentali per la risoluzione del problema. Potrebbe anche trattarsi di una mancanza di dati su una combinazione di variabili. |
| |
Ad esempio, potresti non avere informazioni sufficienti per stimare un'interazione. |
| |
Oppure potresti avere una variabile target di tuo interesse che è sbilanciata, quindi potresti studiare qualcosa come i difetti. Potrebbe riguardare solo il 5% delle tue osservazioni. |
| |
sono per difetti e potresti non avere dati sufficienti, perché sai, potresti avere solo un sottoinsieme molto piccolo dei tuoi dati |
| |
dove è presente il difetto. Potresti non avere dati sufficienti per comprendere le potenziali cause dei difetti. Potresti anche non avere un campione sufficientemente ampio, quindi semplicemente non hai dati sufficienti per ottenere stime attendibili. |
| |
I dati mancanti si verificano quando mancano valori per le variabili e questo può assumere diverse forme. |
| |
Se mancano dei dati e la mancanza dei dati non è casuale, ciò può causare un problema serio e le stime potrebbero essere distorte. |
| |
Se mancano dei dati in modo del tutto casuale, questo potrebbe non rappresentare un problema se mancano solo alcune osservazioni, ma se mancano molti dati, allora potrebbe essere problematico. |
| |
Dati sporchi e disordinati si verificano quando si verificano problemi con le osservazioni o con le variabili. Quindi, i valori potrebbero essere errati, o semplicemente sbagliati. |
| |
Potrebbero esserci incongruenze. Ad esempio, potrebbero esserci errori di battitura o di stampa quando le persone inseriscono i dati in modo diverso. |
| |
I valori potrebbero essere imprecisi. Ad esempio, potresti avere problemi con il tuo sistema di misurazione. Potrebbero esserci errori, refusi, o i dati potrebbero essere obsoleti. |
| |
I dati obsoleti sono dati relativi, ad esempio, a una struttura o a una macchina che non sono più in servizio. |
| |
I dati potrebbero essere obsoleti, quindi potresti avere dati risalenti a un periodo di due o tre anni fa, ma il processo potrebbe essere cambiato da qualche parte in quel lasso di tempo, |
| |
Ciò significa che quei dati storici potrebbero non essere rilevanti per il processo attuale, così come è strutturato. I tuoi dati potrebbero essere censurati o troncati. |
| |
Potrebbero esserci colonne ridondanti, ovvero colonne che contengono essenzialmente le stesse informazioni. Oppure potresti avere osservazioni duplicate. |
| |
Quindi i dati sporchi o disordinati possono assumere molte forme diverse. |
| |
Quindi, come si individuano i potenziali problemi? |
| |
Beh, un buon punto di partenza è esplorare i dati e, in effetti, identificare i problemi porta all'esplorazione dei dati e poi all'analisi. E man mano che si inizia a esplorare i dati, si inizia a identificare ciò che potrebbe causare problemi nell'analisi. |
| |
Un buon punto di partenza è quindi quello di analizzare la tabella dei dati alla ricerca di problemi evidenti. |
| |
Quindi useremo un esempio per tutto il resto di questa presentazione chiamato Componenti, e questo è un esempio dal corso STIPS |
| |
Un'azienda che produce piccoli componenti ha un problema di resa. I dati raccolti riguardano 369 lotti. Sono state rilevate 15 caratteristiche e vogliamo utilizzare questi dati per comprendere le potenziali cause profonde della bassa resa. |
| |
Quindi, se iniziamo a osservare la tabella dati stessa, troviamo alcuni indizi sui tipi di problemi di qualità dei dati che potremmo avere. E un ottimo punto di partenza (e questo è stato aggiunto in JMP 15). |
| |
Questi sono i grafici di intestazione. Adoro i grafici di intestazione. Quello che fanno è, se hai una variabile continua, mostrarti un istogramma, così puoi vedere la centratura, la forma e la dispersione della distribuzione. |
| |
Mostrano anche l'intervallo dei valori. Se hai dati categoriali, ti mostrerà un grafico a barre con i valori per le barre più popolate. Diamo un'occhiata ad alcuni di questi. Inizierò con il numero di lotto. Il numero di lotto mostra un istogramma, e in realtà ha una forma uniforme. |
| |
I numeri di lotto sono probabilmente qualcosa che serve da identificatore, quindi, fin da subito, mi rendo conto che questi dati sono probabilmente codificati in modo errato. |
| |
Vedo che questa distribuzione è fortemente asimmetrica e che il valore più basso è -6, il che può farmi chiedere se sia fattibile avere un numero di scarti negativo. |
| |
Un altro esempio è "Processo". Ho praticamente due barre e mi mostra un istogramma con solo due valori. |
| |
E mentre guardo questi grafici a colonne, questi grafici di intestazione, posso guardare il pannello delle colonne, |
| |
ed è abbastanza facile vedere che, ad esempio, il numero di lotto, il numero di parte e il processo sono tutti codificati come continui. Quando si importano dati in JMP, se JMP rileva dei numeri, codifica automaticamente queste colonne come numeriche continue. Quindi, queste sono cose che potremmo voler modificare. |
| |
Possiamo anche analizzare i dati stessi. Quindi, ad esempio, quando considero l'umidità (e il contesto è fondamentale quando si analizzano i dati), l'umidità è qualcosa che considereremmo un dato continuo. |
| |
Ma ho un paio di campi qui in cui ho N/D. |
| |
Se si hanno dati alfanumerici, se si hanno dati di testo in una colonna numerica, la colonna verrà codificata come nominale quando si importano i dati in JMP. Quindi, questo è un problema che ci rendiamo subito conto di dover correggere. |
| |
E posso anche guardare le altre colonne. Quindi, ad esempio, Fornitore, vedo che mancano alcuni valori. Quando si importano i dati in JMP, se ci sono |
| |
Celle vuote per dati categorici: sappiamo che mancano dei valori. Vedo che ci sono alcune voci in cui non siamo coerenti... non coerenti nel modo in cui sono stati inseriti i dati. |
| |
Quindi sto iniziando ad ottenere indizi seri su alcuni potenziali problemi relativi ai miei dati. |
| |
Notate tutti i puntini. La temperatura è una variabile continua e dove vedo dei puntini, significa che mi mancano dei valori. Quindi la temperatura è un dato molto importante per la mia analisi, e questo potrebbe essere problematico. |
| |
Un'estensione naturale di questo approccio è iniziare a esplorare i dati, una variabile alla volta. Uno dei miei strumenti preferiti quando voglio iniziare a esaminare i dati è il visualizzatore di colonne. E il visualizzatore di colonne ci fornisce riepiloghi numerici per le variabili che abbiamo selezionato. |
| |
Se mancano dei valori, ci sarà una colonna "N mancanti". E qui vedo che mancano 265 dei 369 valori per la temperatura, quindi questa è una lacuna seria se pensiamo che la temperatura sia importante nell'analisi. |
| |
Posso anche vedere se ho dei valori strani. Quindi, quando guardo valori come i minimi e i massimi per il numero di scarti e il tasso di scarto, ottengo valori negativi. E se questo non è fattibile, allora ho un problema con i dati o con il sistema di raccolta dati. |
| |
È anche piuttosto facile individuare errori di codifica delle variabili. Ad esempio, il numero di stabilimento e di lotto, che probabilmente dovrebbero essere codificati come nominali, riportavano una media e una deviazione standard. |
| |
Un buon modo per ragionare su questo è questo: se non è fisicamente possibile avere un numero di lotto medio o (il numero di parte era l'altra variabile) o un numero di parte, allora queste dovrebbero essere trasformate in variabili nominali, anziché continue. |
| |
Le distribuzioni sono il posto successivo a cui mi rivolgo quando inizio a familiarizzare con i miei dati. |
| |
Le distribuzioni, se si hanno dati continui, consentono di comprendere la forma, la centratura e la diffusione dei dati, ma consentono anche di verificare se sono presenti valori insoliti. |
| |
Per i dati categoriali, puoi anche vedere quanti livelli hai. Ad esempio, il numero del cliente. Se il numero del cliente è una variabile importante o potenzialmente importante, |
| |
Ho molti livelli o valori per il numero di cliente. Quando preparo i dati, potrei volerli combinare in quattro o cinque gruppi, con un'altra categoria per i clienti per i quali non ho molti dati. |
| |
Umidità. Vediamo il problema con la presenza di N/D nella colonna. Vediamo un grafico a barre invece di un istogramma. |
| |
Possiamo vedere facilmente cosa stavamo osservando nei dati relativi al fornitore. Ad esempio, Cox Inc. e Cox, Anderson sono scritti in tre modi diversi, Hersh è scritto in tre modi diversi. |
| |
Per quanto riguarda la velocità, notiamo che abbiamo una distribuzione a cumulo che va da circa 60 a 140 ma, proprio in fondo, vediamo che c'è un valore o due |
| |
è piuttosto vicino allo zero, e potrebbe essere... potrebbe essere stato un errore di immissione dati, ma è sicuramente qualcosa su cui vorremmo indagare. |
| |
Un'estensione di questo metodo consiste nell'iniziare a esaminare i dati con due variabili alla volta, ad esempio utilizzando Graph Builder o i grafici a dispersione. |
| |
E quando si osservano due variabili alla volta, si possono individuare degli schemi e più facilmente si possono individuare schemi insoliti che interessano più di una variabile. |
| |
Quindi, ad esempio, se guardo il tasso di scarto e il numero di scarti, vedo che ci sono delle bande. E potresti avere qualcosa nella tua tabella dati che possa spiegare questo andamento. |
| |
In questo caso, la fascia è attribuita a diverse dimensioni del lotto, quindi questa fascia viola è quella in cui ho un lotto di 5.000. |
| |
E ho molte più opportunità di scarto con un lotto più grande rispetto a uno più piccolo. Quindi potrebbe avere senso, ma vedo anche qualcosa che non ha senso. Questi due valori qui sotto, nell'intervallo negativo. |
| |
È piuttosto facile vederli quando osservo i dati in due dimensioni. |
| |
Posso aggiungere ulteriore dimensionalità ai miei grafici utilizzando i commutatori di colonna e i filtri di dati. |
| |
Questo mi sta anche portando a un'analisi potenziale, quindi potrei essere interessato a capire quali sono le x che potrebbero essere importanti, che potrebbero essere correlate al tasso di scarto. |
| |
Allo stesso tempo, considerate i problemi di qualità dei dati o potenziali problemi. Quindi, per quanto riguarda il tasso di scarto, sembra che ci sia una relazione positiva tra pressione e tasso di scarto. |
| |
Non sembra che ci sia una relazione significativa. Il tasso di scarto rispetto alla temperatura è piuttosto piatto, quindi non c'è molto da dire. |
| |
Ma nota la velocità. C'è una relazione negativa, ma in alto vedo quei due valori; il valore che ho visto sull'istogramma, ma ce n'è un secondo che sembra risaltare. |
| |
Quindi potrebbe essere che questo valore intorno a 60 sia semplicemente un valore anomalo, ma potrebbe essere un punto valido. Probabilmente mi chiederei se questo punto qui sotto, vicino a 0, sia valido o meno. |
| |
Abbiamo esaminato la tabella dei dati. Abbiamo analizzato i dati una variabile alla volta. Abbiamo analizzato i dati due variabili alla volta, e tutto questo si adatta perfettamente all'esplorazione dei dati e ci guida nell'analisi. |
| |
Potremmo utilizzare strumenti più avanzati (ad esempio, esplorare i valori anomali o quelli mancanti) che vanno oltre lo scopo di questo corso o di questa presentazione. |
| |
E quando inizi ad analizzare i tuoi dati, probabilmente identificherai ulteriori problemi. Ad esempio, se hai molte categorie di variabili categoriali |
| |
E se provi ad adattare un'interazione a un modello di regressione, sai che JMP ti avvertirà che non puoi farlo. Quindi, quando inizi ad analizzare i dati, l'intero processo è iterativo e identificherai potenziali problemi durante tutto il processo. |
| |
Un aspetto fondamentale è prendere nota dei problemi che si incontrano quando si esaminano i dati. Alcuni di questi possono essere |
| |
Correggeteli man mano che procedete, in modo da poter nascondere ed escludere valori, rimodellare e ripulire i dati man mano che procedete, ma potreste decidere di dover raccogliere nuovi dati. Potreste voler condurre un DOE per avere maggiore fiducia nei dati stessi. |
| |
Se sai che ripeterai questa analisi o che qualcun altro vorrà ripeterla, |
| |
Quindi dovrai assicurarti di registrare i passaggi che stai eseguendo in modo da avere riproducibilità. Qualcun altro può riprodurre i tuoi risultati, oppure puoi ripetere l'analisi in seguito. Quindi è qui che passo la parola a Jordan, e Jordan... |
| |
Parliamo di conservazione dei dati riproducibili. |
| Jordan Hiller |
Okay, grazie, Mia. |
| |
Ciao, sono Jordan Hiller. Sono un ingegnere di sistema per JMP. Approfondiamo un po' la questione e parliamo ancora di riproducibilità. |
| |
per la cura dei tuoi dati. |
| |
Mia ha introdotto questa idea molto bene, ma diamo qualche dettaglio in più. L'idea qui è che vogliamo essere in grado di rieseguire facilmente |
| |
Tutti i passaggi di cura che utilizziamo per preparare i dati per l'analisi, e vedo tre vantaggi principali in questo. Il primo è l'efficienza. Se è necessario... se i dati cambiano e in futuro è necessario ripetere questi passaggi di cura su nuovi dati, |
| |
È molto più efficiente eseguirlo una volta con uno script one-click piuttosto che ripetere tutte le attività point-and-click. Il secondo vantaggio è la precisione. Le attività point-and-click possono essere soggette a errori e, trasformandole in uno script, si garantisce una riproduzione accurata. |
| |
E infine c'è la documentazione, e questo è forse sottovalutato. Se hai uno script, documenta i passaggi che devi seguire. |
| |
ha preso. È una scia di briciole di pane che puoi rivisitare in seguito quando, inevitabilmente, dovrai riesaminare questo progetto e ricordare: cosa ho fatto per preparare questi dati? |
| |
Avere quello script è di grande aiuto. Quindi oggi analizzeremo un caso di studio. Vi mostrerò come generare uno di questi script riproducibili per la cura dei dati. |
| |
Utilizzando solo il puntamento e il clic. E la tecnologia abilitante è una novità in JMP 16. Si tratta del registro avanzato e della registrazione delle azioni che si trovano nel registro avanzato. |
| |
Ecco cosa faremo: eseguiremo le nostre attività di data curation come di consueto, tramite puntamento e clic. Mentre lo facciamo, |
| |
lo script di cui abbiamo bisogno, il codice del computer (si chiama codice JSL, JSL per linguaggio di scripting JMP) verrà catturato per noi automaticamente |
| |
nel nuovo registro migliorato. E poi, una volta terminata la nostra curatela "punta e clicca", non dobbiamo far altro che prendere quel codice e salvarlo. Potremmo voler apportare qualche modifica, giusto per renderlo un po' più efficace, ma questa parte è facoltativa. |
| |
Bene, questo è un promemoria che puoi usare. Ecco alcune delle attività di pulizia dei dati più comuni. |
| |
e come eseguirli in JMP 16 in modo da lasciare una traccia di breadcrumb, in modo da lasciare lo script JSL nel log avanzato. Quindi, copre argomenti come l'operare su righe e colonne, |
| |
modi per modificare la tabella dati, tutte le nostre operazioni di pulizia dei dati e come farlo tramite punta e clicca. |
| |
Quindi non si tratta di un elenco esaustivo di tutto ciò che potrebbe essere necessario fare per la pulizia dei dati, né di tutto ciò che è stato acquisito nel registro avanzato, ma ecco le informazioni più importanti a portata di mano. |
| |
Bene, entriamo nel nostro caso di studio utilizzando il file Components introdotto da Mia e creiamo il nostro script di cura dei dati in JMP 16 utilizzando il registro migliorato. |
| |
Eccoci qui con JMP 16. Vorrei sottolineare che questa è l'ultima versione del programma early adopter per JMP 16, quindi si tratta di una pre-release. Tuttavia, sono sicuro che sarà molto, molto simile alla versione di rilascio effettiva di JMP 16. |
| |
Quindi, per arrivare al registro, |
| |
Ve lo mostro qui. Sembra diverso se siete abituati al log delle versioni precedenti di JMP. È diviso in due pannelli, |
| |
Ok, un pannello messaggi in alto e un pannello codice in basso. Ci soffermeremo un po'. Vi mostrerò come funziona, ma diamo solo un'anteprima rapida, se dovessi eseguire alcune operazioni rapide come importare un file e magari eliminare questa colonna. |
| |
Puoi vedere che i due passaggi che ho eseguito (l'importazione dei dati e l'eliminazione della colonna) sono elencati qui in questo pannello dei messaggi |
| |
e il codice, il codice JSL di cui abbiamo bisogno per uno script riproducibile di curatela dei dati, è qui sotto, in questo pannello inferiore. Ok, quindi |
| |
È davvero entusiasmante la possibilità di avere a disposizione questo codice e di prenderlo ogni volta che serve semplicemente puntando e cliccando: è un vantaggio enorme di JMP 16. |
| |
In JMP 16, questa nuova visualizzazione del log migliorata è attiva per impostazione predefinita. Se si desidera tornare alla vecchia versione del log, ovvero il semplice log di testo, è possibile farlo qui, nella sezione delle preferenze di JMP. C'è un nuovo |
| |
sezione per il log e, se preferisci, puoi tornare alla vecchia visualizzazione testuale del log. L'impostazione predefinita quando installi JMP 16 è il log migliorato e parleremo di alcune di queste funzionalità più avanti, più avanti nel nostro caso di studio. |
| |
Bene, allora vado a fare un po' di pulizia |
| |
Per ora, il log è visibile nel triangolo rosso. Cancella il log e iniziamo con il nostro caso di studio. Importiamo i dati di Components che Mia ha condiviso con voi. Inizieremo da questo file csv. |
| |
COSÌ |
| |
Eseguirò il tipo di importazione più semplice, semplicemente trascinandolo. Oh, ne avevo... ne avevo già una versione aperta. Scusate, lasciatemi, lasciatemi iniziare chiudendo la vecchia versione. |
| |
e cancellare il registro ancora una volta. |
| |
Ok, importazione semplice |
| |
trascinandolo nella finestra di JMP. Ora abbiamo quel file, Componente A, con 369 batch, e ora procediamo con le nostre attività di pulizia dei dati. Attiverò |
| |
I grafici di intestazione. E la prima cosa che possiamo vedere è che la colonna "impianto" ha una sola voce, un solo valore, FabTech, quindi non c'è variazione, niente di interessante. Lo elimino semplicemente con un clic destro, eliminando la colonna. |
| |
E ancora una volta, tutto questo viene catturato man mano che procediamo nel registro migliorato. |
| |
Ok, cos'altro? Immaginiamo che questa colonna del tasso di scarto, verso la fine della tabella, sia davvero importante per noi e vorrei vederla prima. La sposterò in quarta posizione. |
| |
Prendendolo dal pannello delle colonne e trascinandolo subito dopo il numero del cliente. Ecco fatto. |
| |
Mia ha detto che questa colonna di umidità è rappresentata in modo errato durante l'importazione, principalmente a causa di quei N/A |
| |
Caratteri alfabetici che causano la visualizzazione come variabile carattere. Quindi, risolviamo il problema. Andiamo nelle informazioni della colonna cliccando con il tasto destro del mouse qui. |
| |
e cambiamo il tipo di dati da carattere a numerico, cambiamo il tipo di modellazione da nominale a continuo. Clicchiamo su OK. E clicchiamo sul log qui, e come potete vedere, abbiamo quattro passaggi che sono stati acquisiti e continueremo. |
| |
Bene, cosa succede ora? Abbiamo diverse variabili che devono essere modificate da continue a nominali. Queste sono il numero di lotto, il codice articolo e il processo. Quindi, con queste tre selezionate, clicco con il pulsante destro del mouse e cambio da continue a nominali. |
| |
E sono stati tutti corretti. |
| |
E ancora una volta, possiamo vedere che questi tre passaggi sono registrati qui nel registro. |
| |
Bene, cos'altro? Un'altra cosa un po' estetica, questa colonna, Pressione. Ai miei ingegneri piace vedere il nome di quella colonna come PSI, quindi lo cambieremo semplicemente selezionando quella colonna e digitando PSI. Premi Tab per uscire da lì e andare altrove. Anche questo verrà registrato nel log. |
| |
Il fornitore. Mia ci ha mostrato che ci sono alcune, sai, ortografie incoerenti. Probabilmente troppi valori qui. Dobbiamo correggere i valori dei caratteri. Quando si hanno valori di caratteri errati e incoerenti in una colonna, pensate allo strumento di ricodifica. |
| |
Lo strumento di ricodifica è un modo davvero efficiente per risolvere questo problema. Quindi, cliccando con il tasto destro del mouse sul fornitore, andiamo a ricodificare. |
| |
E raggruppiamoli in modo appropriato. Inizierò con alcune opzioni del triangolo rosso. Convertiamo tutti i valori in maiuscolo, |
| |
Ritagliamo anche quello spazio vuoto, in modo da correggere la spaziatura incoerente. Questo ha già corretto un paio di problemi. Correggiamo tutto il resto manualmente. Raggrupperò gli Anderson. Raggrupperò i Cox. |
| |
Raggruppa gli Hershey. Trutna e Worley hanno già ragione con una sola categoria. E l'ultima correzione che farò riguarda le cose che sono, sai, semplicemente elencate come vuote o mancanti, a cui darò un'indicazione esplicita. |
| |
etichetta mancante qui. |
| |
Bene, e quando clicchiamo su "ricodifica", |
| |
abbiamo inserito queste correzioni in una nuova colonna denominata fornitore 2. |
| |
In questo modo sono state corrette e ridotte solo le categorie 1, 2, 3, 4, 5, 6. |
| |
Bene. |
| |
Ok, facciamo un calcolo. Calcoleremo la resa qui, usando la dimensione del lotto e il numero di scarti. |
| |
Giusto. E sì, mi rendo conto che è un po' ridondante. Abbiamo già il tasso di scarto e la resa è solo uno meno il tasso di scarto, ma giusto per amor di discussione, lo faremo |
| |
il calcolo. Quindi voglio che la colonna "resa" venga inserita subito dopo il numero scartato, quindi evidenzio il numero scartato e poi vado al menu delle colonne e scelgo "nuova colonna". |
| |
Chiameremo questa cosa yield. |
| |
Inseriremo la nostra nuova colonna dopo la colonna selezionata, dopo il numero scartato, e le forniremo una formula per calcolare la resa. |
| |
Abbiamo bisogno del numero di unità valide. Questo sarà il numero di unità scartate meno il numero di unità scartate. |
| |
Quindi questo è il numero di unità valide e divideremo il tutto per |
| |
la dimensione del lotto. |
| |
Il numero di unità buone diviso per la dimensione del lotto: questo è il nostro calcolo della resa. |
| |
Quindi fare clic su OK. |
| |
Ecco la nostra novità |
| |
Colonna di rendimento. Possiamo vedere che è uno meno il tasso di scarto. Questo è... questo è un buon risultato e ignoriamo, per ora, il fatto che abbiamo alcuni rendimenti superiori al 100%. |
| |
Ok, abbiamo quasi finito. Solo qualche altra modifica. Ho notato che abbiamo due processi, che per ora sono etichettati semplicemente come processo 1 e processo 2. |
| |
Non è molto descrittivo, non è molto utile. Diamo loro etichette più descrittive. Il processo 1 lo chiameremo "processo di produzione"; e il processo 2 lo chiameremo "sperimentale". Quindi lo faremo con le etichette dei valori, invece che con la ricodifica. Entrerò nelle informazioni delle colonne. |
| |
e assegneremo etichette di valore a uno e due. |
| |
Uno in questa colonna rappresenterà la produzione. |
| |
Aggiungi questo. |
| |
E due rappresenta la sperimentazione. |
| |
Aggiungi questo. |
| |
Fai clic su OK. Bene. Mostra uno e due nei grafici dell'intestazione, ma produzione e sperimentazione qui nella tabella dati. |
| |
Bene, un ultimo passaggio prima di salvare il nostro script. Supponiamo, per amor di discussione, che io sia interessato solo ai dati... voglio procedere con l'analisi solo quando il vuoto è spento. |
| |
Bene, quindi esplorerò i dati e creerò una nuova tabella dati che contenga solo le righe in cui il vuoto è disattivato. Lo farò cliccando con il tasto destro del mouse su una di queste celle in cui il vuoto è disattivato. |
| |
e selezionando le celle corrispondenti. |
| |
Questo seleziona le 313 righe in cui il vuoto è disattivato. E ora andiamo al sottoinsieme della tabella, |
| |
creiamo una nuova tabella dati, che chiameremo vac_off. |
| |
Fare clic su OK. |
| |
Bene, questa è la nostra nuova tabella dati con 313 righe che mostrano solo i dati in cui il vuoto è disattivato. |
| |
Quindi, è finita. Abbiamo completato la nostra cura dei dati e ora torniamo indietro, rivediamo il registro e scopriamo qualcosa in più su ciò che abbiamo. |
| |
Bene, quindi tutti questi passaggi, più altri che non avevo intenzione di fare, sono stati riportati qui nel registro. |
| |
Guarda qui, abbiamo...ogni riga è uno dei passaggi che eseguiamo. |
| |
Ci sono anche alcune cose superflue, tipo che a un certo punto ho cancellato la selezione delle righe. Non ne avevo davvero bisogno... non ho davvero bisogno di includerlo nel mio script. |
| |
Cancella le righe selezionate, quindi rimuoviamolo. Faccio clic destro e pulisco l'elemento per rimuoverlo. Bene. |
| |
Ok, quindi i messaggi qui sopra, il codice JSL qui sotto. Vorrei attirare la vostra attenzione sull'origine e sul risultato. È davvero interessante. |
| |
Ogni volta che eseguiamo un passaggio, ogni volta che eseguiamo un'azione puntando e cliccando, c'è qualcosa su cui eseguiamo quell'azione e c'è qualcosa che ne consegue. Quindi questa è l'origine e il risultato. Quindi, ad esempio, quando abbiamo eliminato la colonna "facility"... |
| |
Beh, forse è un cattivo esempio... scegliamo invece di cambiare le informazioni della colonna per l'umidità. L'origine, la cosa su cui l'abbiamo fatto |
| |
Era la tabella Componenti A, e la vediamo elencata qui come tabella dati. Quando ci passo sopra con il mouse, compare la scritta "Porta Componenti A in primo piano", quindi cliccandoci sopra, sì, si accede alla tabella Componenti A. Molto bello. |
| |
E il risultato è qualcosa che abbiamo fatto alla colonna dell'umidità. Abbiamo modificato l'umidità. L'abbiamo modificata in "dati numerici" e "modellazione continua". Lo potete vedere qui sotto. |
| |
Quindi posso cliccare qui, andare alla colonna dell'umidità e... la evidenzia, la seleziona per noi. JMP seleziona la colonna dell'umidità per noi. |
| |
Verde ovunque, tranne che per quest'ultimo risultato in blu. Questo ci aiuta a tenere traccia delle nostre attività su diverse tabelle dati. Abbiamo svolto tutte queste attività sulla tabella dati "Componenti A". |
| |
E nella nostra ultima attività, abbiamo eseguito un sottoinsieme sulla tabella dati dei Componenti A, il risultato è stata una nuova tabella dati chiamata vac_off. Quindi vac_off è in blu. Bene, quindi possiamo usare questi colori per aiutarvi a tenere traccia delle cose. |
| |
Bene, l'ultima funzionalità che voglio mostrarvi qui nel registro è... è |
| |
Utile se hai una serie di passaggi molto lunga e devi trovarne solo uno, questa casella filtro ti permette di trovarlo. Supponiamo che io voglia trovare il sottoinsieme. Eccolo. Abbiamo trovato la tabella dati del sottoinsieme e posso accedere direttamente al codice di cui ho bisogno. |
| |
Bene, quindi questo... questo è tutto ciò di cui abbiamo bisogno. I nostri passaggi di data curation sono stati acquisiti. Tutto ciò che dobbiamo fare per creare uno script di data curation riproducibile è andare sul triangolo rosso e salvare lo script in una nuova finestra. |
| |
La fase di importazione, la fase di eliminazione della colonna e la fase di spostamento del tasso di scarto. Tutti questi passaggi sono presenti nello script. |
| |
Abbiamo la colorazione sintattica per aiutarci a leggere lo script. Abbiamo tutti questi utili commenti che ci dicono esattamente cosa stavamo facendo in ognuno di quei passaggi. |
| |
Bene, quindi questo è tutto. Questo è tutto ciò di cui abbiamo bisogno e lo salverò. Lo salverò sul desktop come "import and clean"... chiameremo "import and curate components". |
| |
Giusto, questo è il nostro script di cura dei dati riproducibile. Quindi, se tornassi alla finestra principale di JMP e chiudessi tutto tranne il nostro nuovo script, |
| |
Ecco cosa facciamo se devo ripetere i passaggi di data curation. Ho appena aperto il file script e possiamo eseguirlo cliccando sul pulsante "Esegui script". Apre i dati, esegue la pulizia, esegue il subsetting e crea il nuovo file di dati con 313 righe. |
| |
Immaginiamo ora di dover ripetere questa operazione su nuovi dati. |
| |
Ho un'altra versione del file Components. Si chiama Components B. Contiene altre 50 righe, quindi invece di 369, ne ha 419. Immagina di aver eseguito il processo per altri 50 batch e di avere più dati. |
| |
Quindi si chiama Componente B e voglio eseguire questo script sul componente B. Ma noterete che in tutto lo script chiama il componente A più volte. Quindi dovremo solo cercare e sostituire il componente A e cambiarlo in componente B. Ecco fatto. Modifica. |
| |
Ricerca. |
| |
Troveremo i componenti A e li sostituiremo con i componenti B. Sostituiamo tutto. Sono state sostituite 15 occorrenze. |
| |
Lo potete vedere qui e qui. |
| |
E ora rieseguiamo semplicemente lo script, ed ecco la nuova versione dei dati. Potete vedere che ha più righe, in effetti, era spento. Prima era 313, ora è 358. |
| |
Bene, ecco uno script di cura dei dati riproducibile che può essere eseguito su nuovi dati. |
| |
Bene, ecco di nuovo quel foglietto riassuntivo. Lo troverete nei materiali che salveremo con la presentazione, così potrete trovarlo facilmente. E questo vi spiega come procedere con puntamento e clic attraverso la cura dei dati e creare uno script di cura dei dati riproducibile e ripetibile. |
| |
Lo script che abbiamo realizzato non ha richiesto alcuna codifica, ma ti darò solo una manciata di suggerimenti, quattro suggerimenti che puoi utilizzare |
| |
Per migliorare un po' gli script. Il primo consiglio è quello di inserire questa riga all'inizio dei tuoi script. È una buona idea per tutti i tuoi script. Inserisci semplicemente i nomi delle righe predefiniti qui. |
| |
Questo serve a impedire che il tuo script interagisca con altri script. Si chiama collisione di namespace e non è necessario capire cosa fa, basta farlo. È una buona cosa da fare. È una buona pratica di programmazione. |
| |
Il secondo consiglio è di assicurarsi che ci siano punti e virgola tra le espressioni JSL. |
| |
Il registro avanzato lo fa automaticamente. Inserisce il punto e virgola richiesto tra ogni passaggio. Tuttavia, se apportate modifiche autonomamente, dovrete assicurarvi che i punti e virgola siano posizionati correttamente. Quindi, un consiglio. |
| |
aggiungere commenti. |
| |
I commenti sono un modo per lasciare note nel programma e lasciarle in modo da non rovinare il programma, giusto? È un modo per |
| |
Lascia qualcosa nel programma che non verrà interpretato dall'interprete JSL. E ci sono delle note che il registro avanzato ha lasciato per te... la registrazione delle azioni nel registro avanzato ha lasciato per te, ma puoi modificarle e aggiungerle, se vuoi. Ecco i punti principali sui commenti. |
| |
Il formato tipico prevede due barre e tutto ciò che segue le barre è un commento. Quindi è possibile inserirlo all'inizio o alla fine di una riga. Quindi l'interprete eseguirà questa espressione JSL X = 9, ma ignorerà tutto ciò che segue le barre. |
| |
Se hai un commento più lungo, puoi anche usare questo formato, che prevede /* all'inizio e */ alla fine. Questo racchiude un commento. I commenti sono utili per lasciare note, ma sono utili anche per il debug del tuo script JSL. |
| |
Se vuoi rimuovere una riga di codice e impedirne l'esecuzione, puoi semplicemente anteporla con quelle due barre e, se vuoi farlo per una porzione di codice più grande, puoi usare questo formato. È quindi utile sapere come usare i commenti. |
| |
L'ultimo consiglio che vi lascio è di generalizzare i riferimenti alle tabelle dati. Ricordate come abbiamo dovuto fare una ricerca e sostituzione per far funzionare quello script su un nuovo nome di file, Componente B? |
| |
Abbiamo dovuto modificare 15 istanze nella tabella dati, nello script. Non sarebbe bello se dovessimo modificarle solo una volta, invece di 15 volte? Così puoi rendere i tuoi script più robusti. |
| |
Generalizzando i riferimenti alle tabelle dati. Invece di usare i nomi, useremo una variabile JSL per contenere i nomi delle tabelle. Ecco di cosa sto parlando. Vi mostrerò un esempio. |
| |
Sulla sinistra è presente del codice generato dalla registrazione delle azioni nel registro avanzato. |
| |
Stiamo aprendo la tabella dati Big Class. Stiamo operando sulla colonna età, modificandola in un modello di tipo continuo e quindi stiamo creando una nuova colonna calcolata, |
| |
all'apertura, lo usiamo per apportare la modifica alla colonna età e lo usiamo qui. |
| |
Ciò che bisogna fare per rendere il tutto più solido e generalizzato è molto semplice. |
| |
Devi apportare tre modifiche. |
| |
Questa prima modifica qui, le stiamo assegnando un nome. Io ho scelto BC; puoi scegliere quello che vuoi. Vedrai spesso DT. |
| |
Quindi BC è il nome con cui faremo riferimento alla tabella dati Big Class nel resto dello script. Quindi, quando vogliamo cambiare l'età, |
| |
età indica la tabella dati BC e la colonna età in quella tabella dati. |
| |
Qui sotto, stiamo inviando un messaggio alla tabella dati Big Class, ed è questo il significato della sintassi a doppia freccia. Quindi stiamo semplicemente generalizzando, in modo da usare il nuovo nome per inviare quel messaggio. |
| |
alla tabella dati. E ora, se dovessimo eseguire questo script su una nuova tabella dati con un nome diverso da Big Class, ecco l'unica modifica che dobbiamo apportare. Dobbiamo modificare solo un punto nello script. Non dobbiamo usare la funzione "cerca e sostituisci". |
| |
Bene, quindi dopo questi quattro consigli, se sei pronto a portare il tuo script di curatela al livello successivo, ecco alcuni passaggi successivi. Potresti aggiungere un selettore di file. Non richiede molto codice. |
| |
per modificarlo in modo che quando qualcuno esegue questo script, possa semplicemente andare al file su cui desidera eseguirlo invece di dover modificare manualmente lo script. |
| |
Questa è un'ottima idea. Se vuoi distribuire lo script ad altri utenti della tua organizzazione, puoi integrarlo in un componente aggiuntivo JMP, in modo che gli utenti possano eseguirlo semplicemente selezionandolo da un menu all'interno di JMP. |
| |
Davvero utile. Infine, se hai bisogno di eseguire questo script di curation in base a una pianificazione per aggiornare una tabella dati JMP master che tieni in rete da qualche parte, puoi usare lo scheduler di Windows o Automator di Mac OS per farlo in base a una pianificazione. |
| |
Quindi, riassumendo, Mia ha parlato di come effettuare la data curation esplorando i dati e ripetendoli per identificare i problemi. |
| |
Automatizzando questi passaggi, otterrai i vantaggi della riproducibilità, ovvero efficienza, accuratezza e documentazione del tuo lavoro. |
| |
Per fare ciò in JMP 16, basta puntare e cliccare come di consueto e i passaggi di gestione dei dati verranno acquisiti dalla registrazione delle azioni che si verifica nel registro avanzato. |
| |
Infine, puoi esportare e modificare il codice JSL dal log avanzato per creare il tuo script riproducibile di data curation. Con questo si conclude il nostro intervento. Grazie mille per il tempo e l'attenzione. |