Ich habe mich für die Zusammenarbeit mit Lieferanten interessiert, da ich sehe, dass es bei vielen Daten, die ich betrachte, immer mehr zu Problemen kommt. Sie fragen sich, ob Kunden dies als einen wichtigen Punkt angesprochen haben? Diese Inliers werden vom Tool zum Ermitteln von Ausreißern in vielen Fällen nicht gut verarbeitet. Am Ende mache ich also eine Kombination aus einer oder mehreren dieser Techniken. Offen für Vorschläge zu anderen Taktiken hier.
Ich hatte ein Beispiel für die Anzahl der Benutzer unserer Kundendaten. Ein Großteil der Daten war in Bezug auf die Anzahl der Benutzer realistisch, aber es gab diese Teile der Benutzeranzahl und 100, 200, 500, 2500 usw. Hierbei handelt es sich nur um eine bestimmte maximale Anzahl von Benutzern, jedoch nicht um eine genaue Anzahl von Benutzern an einem Standort. Sie sind Lieferanten und sollten wirklich fehlen oder auf andere Weise behandelt werden. Wenn Sie diese Werte kennen, bei denen es sich um Zulieferer handelt (im Graph Builder leicht zu erkennen oder zu unterscheiden), können Sie Folgendes tun:
For Each Row(
:Name( "Potassium (mg)" ) = Match( :Name( "Potassium (mg)" ),
200, .,
:Name( "Potassium (mg)" )
)
);
Dadurch werden diese Inlier-Werte destruktiv aus der Zeile entfernt (Sie können auch in "Fehlend" wechseln, fehlende Wertecodes verwenden oder ähnliches).
Ich verwende die Range Check-Spalteneigenschaft auch ausgiebig, um Werte herauszusuchen, die in der Analyse weggelassen werden sollten:
dt:Name( "Resting Calories (kcal)" ) << set property ("Range Check", LTLT( 1400, 2500 ) );
Dieser wird zum Beispiel Ausreißer auf der hohen Seite und auch unvollständige Tage auf der niedrigen Seite auswaschen.
Aber das automatische Markieren von Werten, die zu häufig vorkommen, interessiert mich. Ich denke tatsächlich, dass recode hier ein gutes Werkzeug ist, und es generiert das Skript, um diese in fehlende usw. zu ändern.
Wenn Sie eine numerische Spalte neu codieren und nach Anzahl sortieren, erhalten Sie eine Momentaufnahme der Werte, die möglicherweise zu häufig auftreten, oder eines Geräts, das nur einen Standardwert ausgibt. Im obigen Beispiel könnte 1822 der Verdacht bestehen und eine weitere Untersuchung rechtfertigen.
Ich denke, es geht darum, einige der anderen Tools als Off-Label-Ausreißer und -Inlier-Detektoren zu betrachten. Sie können sehr nützlich sein.
Es ist auch erwähnenswert, dass es möglich ist, mit der Maus darauf zu zeigen und zu klicken, indem Sie im Hauptmenü suchen + ersetzen, wenn Sie:
- Suche nach 0
- Ersetzen mit .
- Aktivieren Sie das Kontrollkästchen "Gesamten Zellenwert abgleichen"
- Aktivieren Sie das Kontrollkästchen "Daten suchen".
Das ist großartig, weil es einfach ist, aber eine Einschränkung (vielleicht ... Ich bin mir nicht sicher, ob dies in "echten" Datensätzen häufig vorkommen würde. Es wird nicht nach Zeichen / Zahlen gesucht. Daher werden alle Zellen in Zeichenspalten, die nur "0" enthalten, zu "."
// get the continuous columns as a list of strings
dtcollist = dt << get column names( continuous, string );
// when doing lots of updates to the data table, use this to
// prevent the window being updated for each change
dt << Start Data Update();
For Each Row(
// Loop over each column within each row
// probably the same performance whichever way you do it
For( c = 1, c <= N Items( dtcollist ), c++,
AsColumn( dt, dtcollist[c] ) = Match( AsColumn( dt, dtcollist[c] ),
0, .,
AsColumn( dt, dtcollist[c] )
)
)
);
// Tell JMP it's okay to update the data in the window now
dt << End Data Update();
Dies ist ein wirklich nützlicher Codeausschnitt, insbesondere für den Datensatz, den ich gerade betrachte. Bedauerlicherweise hat die Datentabelle 0s, was wirklich bedeutet, dass sie fehlt. Dieses Skript durchläuft alle fortlaufenden numerischen Spalten und ändert alle Nullen in fehlende. Vielen Dank, Justin, dass du geholfen hast, dies zu optimieren.
Ich benutze auch Recode in dieser, wie ich es nenne, "Off-Label-Prescription" -Technik, um Lieferanten zu reparieren.