<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />Perfekte Datensätze sind selten. Umso mehr, wenn sie manuell eingegeben werden!Glücklicherweise bietet JMP Daten-Hausmeister-Tools an, mit denen wir unsere Probleme beseitigen können. Die folgenden Beispiele zeigen einige (aber definitiv nicht alle!) Methoden zum Auffinden und Beheben von zwei gängigen manuellen Eingaben.
Lassen Sie uns zunächst einen schnellen Datensatz für die Arbeit einrichten. Sie müssen das folgende Skript in ein neues Skriptfenster kopieren und auf das Symbol zum Ausführen des Skripts klicken.Stellen Sie sich vor, diese Daten werden manuell eingegeben. Magnetische Messungen der Beschichtungsdicke (mm) von 10 festgelegten Stellen entlang 10 pulverbeschichteten Stahlstangen. Die Dicke beträgt aufgrund von Prozesskontrollen immer weniger als 1.Es ist möglich, blanke unbeschichtete Stellen mit einer Dicke von 0 zu haben.
// Matrix und Datentabelle für die Hausmeisterübung einrichten
Namen Standard hier ( 1 ) ;;
// Zufallsmatrix mit simulierten Datenerfassungsfehlern laden
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
]] ;;
// Datentabelle aus Zufallsmatrix erstellen
dtNew = Als Tabelle ( rndMat ) ;;
Suchen wir nun nach Fehlern, indem wir unsere Daten zeichnen und zusammenfassen. In diesem Beispiel konzentriere ich mich auf die Datenbereinigung, aber im wirklichen Leben erhalte ich auch ein grundlegendes Verständnis meiner Daten. Denken Sie daran, vor jeder Analyse PDD (Plotten Sie den Daten-Dummy)!

Die Verteilungsplattform ist ein großartiges Werkzeug, um Anomalien in Daten zu erkennen. Beachten Sie, dass in unserem Datensatz Einträge vorhanden sind, die 1000-mal größer sind als erwartet. Ich persönlich stoße auf Daten, bei denen Inspektoren / Bediener die Dezimalstelle verfehlen oder sogar alle Dezimalstellen weglassen, um schneller zu sein! Es ist eine gute Idee, solche Fehler mit den Bedienern zu überprüfen, bevor Sie Änderungen vornehmen.
Der Columns Viewer ist ein schnelles und einfaches Zusammenfassungswerkzeug. Das Bild unten zeigt eine Übersichtstabelle für alle Spalten. Beachten Sie, dass in unseren Daten 10 Werte fehlen. Fehlende Werte, bei denen Nullen sein sollten, sind ein sehr häufiger Fehler bei der manuellen Eingabe, der meiner Erfahrung nach sogar häufiger auftritt als falsch platzierte oder abgelegte Dezimalstellen. Dies mag bei unserer kleinen Tabelle trivial erscheinen, in der wir alle fehlenden Werte leicht sehen können. Stellen Sie sich jedoch die Schwierigkeit vor, wenn unser Datensatz Tausende oder sogar Millionen von Datenzeilen enthält! Heuhaufen und Nadeln kommen mir in den Sinn.
Zusammenfassende Statistiken können genauso verwendet werden wie die oben genannte Verteilungsplattform. Beachten Sie, dass die Maximalwerte für col1-col4 100-mal höher sind als erwartet - genau wie wir in der Verteilung erfahren haben.

Unsere explorative Analyse hat zwei Arten von Fehlern in unseren Daten identifiziert. Fehlende Dezimalstellen und fehlende Werte, die Nullen sein sollten.Jetzt lasst sie uns reparieren!In einer kleinen Tabelle wie unserer ist es ziemlich einfach, die erforderlichen Änderungen manuell in der Datentabelle vorzunehmen. Wir gehen davon aus, dass dies nicht der Fall ist und dass effizientere Methoden erforderlich sind.
Das Dienstprogramm zum erneuten Codieren in JMP bietet eine menügesteuerte Option zum Ändern von Werten in einer Datentabelle. Für den Zugriff auf das Dienstprogramm müssen Spalten ausgewählt werden. Unsere beiden Fehler können beim Rekodieren behoben werden.


Stellen Sie sich nun vor, unser Datensatz enthält 10000 Zeilen und 100 Spalten. Auf einmal ist die Neukodierung nicht mehr so attraktiv. Zum Glück kann JSL (JMP Scripting Language) verwendet werden, um unser Problem schnell und effizient zu lösen!
Lassen Sie uns zuerst alle unsere Daten mit fehlenden Dezimalstellen finden und korrigieren. Es ist leicht vorstellbar, eine manuelle Such- und Korrekturroutine mit Schleifen zu automatisieren. Wie Sie sehen werden, erledigt dies die Arbeit.
Schließen Sie die Datentabelle und das Skriptfenster, um diese Übung einfach und übersichtlich zu halten. Fügen Sie das folgende Skript in ein neues Skriptfenster ein und führen Sie das Skript aus.
Namen Standard hier ( 1 ) ;;
// Zufallsmatrix mit simulierten Datenerfassungsfehlern laden
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
]] ;;
// Datentabelle aus Zufallsmatrix erstellen
dtNew = Als Tabelle ( rndMat ) ;;
myCols = N Cols ( dtNew ) ;;
Zum ( q = 1 , q <= myCols , q ++,
col = Säule ( q ) ;;
Für jede Reihe ( col [] =
Wenn (
col [] > 100 , col [] /. 1000 , col []
) ;;
Wenn (
Wird vermisst ( col []) == 1 , col [] = 0 , col []
) ;;
) ;;
) ;;
Die abgelegten Dezimalstellen und fehlenden Nullen sind jetzt behoben!Diese Methode ist legitim, aber langwierig und kann bei größeren Datenmengen langsam sein.Meiner Meinung nach ist die logische Indizierung ein besserer Weg. In JSL erfolgt die logische Indizierung mit der Funktion Loc (). Dies ist etwas einfacher zu zeigen als zu sagen.
Schließen Sie die Tabelle und das Skriptfenster (speichern Sie, wenn Sie möchten).Fügen Sie das folgende Skript in ein neues Skriptfenster ein. Klicken Sie auf Skript ausführen.
Namen Standard hier ( 1 ) ;;
// Zufallsmatrix mit simulierten Datenerfassungsfehlern laden
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
]] ;;
// Fehlerort suchen und durch korrekte Werte ersetzen
rndMat [ Loc ( rndMat > 100 )] = rndMat [ Loc ( rndMat > 100 )] : / 1000 ;;
rndMat [ Loc ( Wird vermisst ( rndMat ))] = 0 ;;
dtNew = Als Tabelle ( rndMat ) ;;
Schauen Sie sich die Ergebnisse an! Wir haben sowohl die fehlende Dezimalzahl als auch die fehlenden Nullen mit 2 Codezeilen und ohne Schleifen behoben! Beachten Sie, dass ich zur Vermeidung von Schleifen eine neue Datentabelle mit korrekten Werten erstellt habe.Wenn Sie eine vorhandene Tabelle beibehalten möchten, wird eine Schleife benötigt, um jeder Spalte in der Datentabelle Werte zuzuweisen.Ich werde Sie alle alleine damit experimentieren lassen.

Das ist, was passiert ist.Loc (rndMat> 100) ist eine Indexmatrix in rndMat, bei der die Werte größer als 100 sind. RndMat [ Loc ( rndMat > 100 )] = rndMat [ Loc ( rndMat > 100 )] : / 1000 Ersetzt die Werte an diesen Indizes durch den aktuellen Wert geteilt durch 1000. Das Ersetzen fehlender Werte ist einfacher, da wir nur fehlende Werte durch Null ersetzen.
Weitere Informationen zur Loc () - Funktion finden Sie in Kapitel 7 des Skripthandbuchs. Die Skriptanleitung finden Sie unter Help_Books.Die logische Indizierung ist über die Datenbereinigung hinaus nützlich und sollte untersucht werden, wenn sie für Sie neu ist.
Ich hoffe, diese Übung hilft Ihnen allen, mehr von der Kraft von JMP freizuschalten.
Genießen!