<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />I set di dati perfetti sono rari. Ancora di più se vengono inseriti manualmente!Fortunatamente, JMP offre strumenti di pulizia dei dati per aiutare a ripulire i nostri pasticci. Gli esempi seguenti mostrano alcuni metodi (ma sicuramente non tutti!) Per trovare e correggere due errori di immissione manuale comuni.
Per prima cosa configuriamo un rapido set di dati con cui lavorare. Sarà necessario copiare lo script seguente in una nuova finestra di script e fare clic sull'icona Esegui script.Immagina che questi dati siano misurazioni magnetiche immesse manualmente dello spessore del rivestimento (mm) da 10 posizioni impostate lungo 10 barre di acciaio rivestite a polvere. Lo spessore è sempre inferiore a 1 a causa dei controlli di processo.È possibile avere punti nudi non rivestiti di spessore 0.
// Imposta la matrice e la tabella dati per l'esercizio di pulizia dei dati
Nomi predefiniti qui ( 1 ) ;
// Carica la matrice casuale con errori di raccolta dati simulati
rndMat = [
0.35 830 0.71 0.91 0.74 . 0.71 0.92 0.96 0.28 ,
0.50 0.93 0.48 0.13 0.70 0,04 0.25 . 0.99 0.98 ,
0.26 0.19 750 0.22 0.97 0.35 0.30 0.25 0.64 . ,
0.19 0.19 0,53 0.31 0,58 0.65 0.64 0,53 0,02 0.35 ,
640 0.27 0.48 0.63 0.70 0.26 0.83 0.78 0.12 0.30 ,
0,54 0.38 0.47 . 0.89 0.71 0.91 . 0.74 0.16 ,
0.38 0,09 0.18 0.87 0.38 0.45 0.97 0.13 0,08 0,03 ,
0.75 0.17 0.33 580 0.88 0.63 0.14 0.18 0.40 0.79 ,
0,59 0.48 0.19 0.71 0.70 0,01 . 0,52 0,01 0.41 ,
0.44 0,07 0.87 0.34 0,05 0.64 0.11 1.00 0.70 0.91
] ;
// Crea una tabella dati da una matrice casuale
dtNew = Come tabella ( rndMat ) ;
Cerchiamo ora gli errori tracciando e riassumendo i nostri dati. Mi sto concentrando sulla pulizia dei dati in questo esempio, ma nella vita reale sto anche acquisendo una conoscenza di base dei miei dati. Ricorda, prima di qualsiasi analisi PDD (traccia i dati fittizi) !!

La piattaforma di distribuzione è un ottimo strumento per vedere le anomalie nei dati. Si noti che nel nostro set di dati sono presenti voci 1000 volte maggiori del previsto. Personalmente incontro dati in cui gli ispettori / operatori perdono il decimale o addirittura scelgono di omettere tutti i decimali per essere più veloci! È una buona idea verificare errori come questo con gli operatori prima di apportare modifiche.
Il visualizzatore di colonne è uno strumento di riepilogo rapido e semplice. L'immagine seguente mostra una tabella di riepilogo per tutte le colonne. Notare che ci sono 10 valori mancanti nei nostri dati. I valori mancanti dove dovrebbero essere gli zeri è un errore di immissione manuale molto comune, anche più comune dei decimali fuori posto o caduti nella mia esperienza. Questo può sembrare banale con il nostro tavolino in cui possiamo facilmente vedere tutti i valori mancanti. Ma immagina la difficoltà se il nostro set di dati ha migliaia o addirittura milioni di righe di dati! Mi vengono in mente mucchi di fieno e aghi.
Le statistiche di riepilogo possono essere utilizzate nello stesso modo in cui abbiamo utilizzato la piattaforma di distribuzione sopra. Notare che i valori massimi per col1-col4 sono 100 volte maggiori del previsto, come abbiamo appreso nella distribuzione.

La nostra analisi esplorativa ha identificato 2 tipi di errori nei nostri dati. Decimali mancanti e valori mancanti che dovrebbero essere zeri.Ora risolviamoli!In una piccola tabella come la nostra è abbastanza facile apportare manualmente le modifiche necessarie nella tabella dei dati. Daremo per scontato che non sia così e che siano necessari metodi più efficienti.
L'utilità di ricodifica in JMP fornisce un'opzione guidata da menu per modificare i valori in una tabella dati. Le colonne devono essere selezionate per accedere all'utilità. Entrambi i nostri errori possono essere corretti in recode.


Ora immagina che il nostro set di dati abbia 10000 righe e 100 colonne. All'improvviso, ricodificare non è così attraente. Fortunatamente per noi JSL (linguaggio di scripting JMP) può essere utilizzato per risolvere il nostro problema in modo rapido ed efficiente!
Per prima cosa troviamo e correggiamo tutti i nostri dati con i decimali mancanti. È facile immaginare di automatizzare una routine di ricerca e correzione manuale con i loop. Come vedrai, questo porta a termine il lavoro.
Per mantenere questo esercizio semplice e chiaro, chiudere la tabella dati e la finestra dello script. Incolla lo script seguente in una nuova finestra di script ed esegui lo script.
Nomi predefiniti qui ( 1 ) ;
// Carica la matrice casuale con errori di raccolta dati simulati
rndMat = [
0.35 830 0.71 0.91 0.74 . 0.71 0.92 0.96 0.28 ,
0.50 0.93 0.48 0.13 0.70 0,04 0.25 . 0.99 0.98 ,
0.26 0.19 750 0.22 0.97 0.35 0.30 0.25 0.64 . ,
0.19 0.19 0,53 0.31 0,58 0.65 0.64 0,53 0,02 0.35 ,
640 0.27 0.48 0.63 0.70 0.26 0.83 0.78 0.12 0.30 ,
0,54 0.38 0.47 . 0.89 0.71 0.91 . 0.74 0.16 ,
0.38 0,09 0.18 0.87 0.38 0.45 0.97 0.13 0,08 0,03 ,
0.75 0.17 0.33 580 0.88 0.63 0.14 0.18 0.40 0.79 ,
0,59 0.48 0.19 0.71 0.70 0,01 . 0,52 0,01 0.41 ,
0.44 0,07 0.87 0.34 0,05 0.64 0.11 1.00 0.70 0.91
] ;
// Crea una tabella dati da una matrice casuale
dtNew = Come tabella ( rndMat ) ;
myCols = N Cols ( dtNew ) ;
Per ( q = 1 , q <= myCols , q ++,
col = Colonna ( q ) ;
Per ogni riga ( col [] =
Se (
col [] > 100 , col [] / 1000 , col []
) ;
Se (
Manca ( col []) == 1 , col [] = 0 , col []
) ;
) ;
) ;
Le cifre decimali rilasciate e gli zeri mancanti sono ora corretti!Questo metodo è valido ma lungo e può essere lento con set di dati più grandi.Secondo me l'indicizzazione logica è un modo migliore per procedere. In JSL l'indicizzazione logica viene eseguita utilizzando la funzione Loc (). Questo sarà un po 'più facile da mostrare che da raccontare.
Chiudi la tabella e la finestra dello script (salva se vuoi).Incolla il seguente script in una nuova finestra di script. Fare clic su Esegui script.
Nomi predefiniti qui ( 1 ) ;
// Carica la matrice casuale con errori di raccolta dati simulati
rndMat = [
0.35 830 0.71 0.91 0.74 . 0.71 0.92 0.96 0.28 ,
0.50 0.93 0.48 0.13 0.70 0,04 0.25 . 0.99 0.98 ,
0.26 0.19 750 0.22 0.97 0.35 0.30 0.25 0.64 . ,
0.19 0.19 0,53 0.31 0,58 0.65 0.64 0,53 0,02 0.35 ,
640 0.27 0.48 0.63 0.70 0.26 0.83 0.78 0.12 0.30 ,
0,54 0.38 0.47 . 0.89 0.71 0.91 . 0.74 0.16 ,
0.38 0,09 0.18 0.87 0.38 0.45 0.97 0.13 0,08 0,03 ,
0.75 0.17 0.33 580 0.88 0.63 0.14 0.18 0.40 0.79 ,
0,59 0.48 0.19 0.71 0.70 0,01 . 0,52 0,01 0.41 ,
0.44 0,07 0.87 0.34 0,05 0.64 0.11 1.00 0.70 0.91
] ;
// Trova la posizione degli errori e sostituisci con i valori corretti
rndMat [ Loc ( rndMat > 100 )] = rndMat [ Loc ( rndMat > 100 )] : / 1000 ;
rndMat [ Loc ( Manca ( rndMat ))] = 0 ;
dtNew = Come tabella ( rndMat ) ;
Dai un'occhiata ai risultati! Abbiamo corretto sia i decimali mancanti che gli zeri mancanti con 2 righe di codice e nessun loop! Tieni presente che per evitare loop ho generato una nuova tabella dati con valori corretti.Se si desidera mantenere una tabella esistente, è necessario un ciclo per assegnare valori a ciascuna colonna nella tabella dati.Lascerò che tutti voi lo sperimentiate da soli.

Questo è quello che è successo.Loc (rndMat> 100) è una matrice di indici in rndMat dove i valori sono maggiori di 100. rndMat [ Loc ( rndMat > 100 )] = rndMat [ Loc ( rndMat > 100 )] : / 1000 sostituisce i valori in questi indici con il valore corrente diviso per 1000. La sostituzione dei valori mancanti è più semplice in quanto stiamo semplicemente sostituendo i valori mancanti con zero.
Ulteriori informazioni sulla funzione Loc () possono essere trovate nel Capitolo 7 della guida allo scripting. La guida allo scripting può essere trovata in Help_Books.L'indicizzazione logica ha utilità oltre la pulizia dei dati ed è degna di studio se non conosci.
Spero che questo esercizio ti aiuti a sfruttare maggiormente la potenza di JMP.
Godere!