ich endete mein vorheriger Blogeintrag An einem Punkt in meinem JMP Discovery Summit-Projekt, als ich das Ausmaß der Redundanz von Lebensmittelnamen in meinen fast vier Jahren mit der BodyMedia® Activity Manager-App gesammelten Lebensmittelprotokollen erkannte. Während ich wusste, dass ich unterschiedlich zubereitete Sorten bestimmter Lebensmittel gegessen hatte, war die Replikation auch ein Artefakt, bei dem die Stichwortsuche verwendet wurde, um die richtigen Elemente zu finden, die in mein Lebensmittelprotokoll aufgenommen werden sollten. Das Stichwort, nach dem ich nach einem bestimmten Artikel gesucht habe, variierte, und auch der passende Artikel, den ich bei einer bestimmten Mahlzeit angemeldet hatte, variierte. Daher habe ich oft unterschiedliche Artikelnamen für sehr ähnliche Lebensmittel ausgewählt.
Letztendlich wollte ich die Anzahl der Kalorien zusammenfassen, die ich von verwandten Produkten gegessen habe, und auch die nach Lebensmittelkategorie aufgenommenen Kalorien zusammenrechnen. Ein vernünftiger erster Schritt war, die Anzahl der überflüssigen Namen von Lebensmitteln in meiner Datentabelle zu reduzieren. Ich wollte, dass die Umkodierung von Lebensmitteln so einfach wie möglich ist und natürlich durch Skripte reproduzierbar ist, damit ich neue Daten mit minimalem Aufwand verarbeiten kann.
Ich erkundete mit der JMP 11 Umkodieren Sie die Plattform, um ähnliche Namen von Lebensmitteln in einem einzigen bereinigten Wert zusammenzufassen. Bevor ich mit dem Umcodieren begann, enthielt meine Datentabelle 1.859 eindeutige Namen von Nahrungsmitteln. Da die Namen der Lebensmittel in alphabetischer Reihenfolge im Recode-Fenster angezeigt wurden, war es schwierig, ähnliche Lebensmittel zu finden, die nicht alphabetisch aufgelistet waren. Wenn ich zum Beispiel fast identische Artikel umbenennen wollte, die unter verschiedenen Markennamen aufgeführt sind, musste ich zuerst alle verwandten Artikel in meiner Artikelliste finden (z. B. "CHIPS AHOY! Kaubare Schokoladenkekse", "Cookie, Chocolate Chip, Kommerziell, 12% -17% Fett, "Jason's Deli Chocolate Chip Cookie", "PILLSBURY Chocolate Chip Cookies, Gekühlter Teig") und benennen Sie sie in einen gemeinsamen Wert (z. B. "Cookie, Chocolate Chip") um. Um alle verwandten Elemente zu finden, habe ich die Datentabelle mit der Funktion Suchen durchsucht oder unter dem roten Dreieck-Menü Datenfilter die Option Suchen verwendet.

Nachdem ich alle verwandten Objekte gefunden hatte, scrolle ich im Recode-Fenster zu ihrer Position und fügte den Namen des gereinigten Objekts ein. An einem Punkt, an dem ich meinen Datensatz durchgearbeitet hatte, schloss ich versehentlich das Recode-Fenster, ohne meine Änderungen zu speichern. Anstatt meine Arbeit zu wiederholen, beschloss ich, eine alternative Strategie auszuloten, von der ich hoffte, dass sie meine Artikel schneller klassifizieren und neue Elemente meinen Lebensmittelgruppen zuordnen kann.
Ich habe die Funktion Freier Text (auf der Registerkarte Mehrere des Dialogfelds zum Starten der JMP Categorical-Plattform) verwendet, um die Liste der eindeutigen Wörter aus den Namen meiner Lebensmittelartikel zu extrahieren. Ich habe die Liste überprüft, um gebräuchliche oder nicht spezifische Wörter zu entfernen, und die übrigen Wörter in Lebensmittelkategorien eingeteilt. Dann habe ich eine JSL-Schleife verwendet, um nach diesen Schlüsselwörtern in Namen von Lebensmittelelementen zu suchen. Dazu wurde die Funktion PatMatch in JMP verwendet. Wenn ich ein Stichwort gefunden habe, habe ich die Kategorie dieses Wortes zu einer durch Kommas getrennten Liste in einer Spalte hinzugefügt, die mit einer Multiple-Response-Spalteneigenschaft gespeichert wurde.
Anfangs dachte ich, dieser Ansatz würde die Klassifizierung neuer Elemente vereinfachen. Es erwies sich jedoch als zeitaufwändig für mein Skript, alle Elemente nach Schlüsselwörtern zu durchsuchen. Es dauerte noch länger, bis ich alle klassifizierten Lebensmittel überprüft und anhand der darin enthaltenen Schlüsselwörter überprüft hatte, ob sie in vernünftige Kategorien eingestuft worden waren. Bei der Untersuchung meiner verarbeiteten Tabelle war ich sehr erstaunt, viele nicht spezifische Keyword-Übereinstimmungen festzustellen. In einem Beispiel paßte "Hühnchen vom Sea Chunk Light Thunfisch" sowohl die Fleischkategorien Fleisch (Stichwort: Hähnchen) als auch Fisch (Stichwort: Fisch) zusammen. Coffeemate Non-Dairy Creamer enthielt das Keyword coffee, wodurch es falsch der CoffeeMilk-Gruppe zugeordnet wurde. Mir wurde klar, dass ich einige der ursprünglichen Namen korrigieren müsste, bevor das Muster passt, und andere Kategorielisten nach dem Match bereinigen. Da ich jeden Schritt durch das Scripting reproduzieren musste, musste ich benutzerdefinierte JSL schreiben oder Datenbereinigungs-JSL mit Recode generieren. Daher entschied ich mich für meine ursprüngliche Recode-Strategie.
Zu dieser Zeit begann der neu eingestellte JMP-Entwickler James Preiss, Recode für JMP 12 zu überarbeiten. Ich habe meinen Recode-Anwendungsfall für Essensprotokolle mit James geteilt und viele meiner Herausforderungen standen in einer Reihe von Kundenanfragen, die bereits auf seiner To-Do-Liste standen. Sobald in den täglichen Builds von JMP 12 Updates für Recode auftauchten, testete ich sie mit meinen Nahrungsmittelprotokolldateien und teilte einen Teil meiner Artikelliste mit James und Recode-Tester Rosemary Lucas. Ich war begeistert, dass viele der Schritte, die ich in JMP 11 manuell mit einer Kombination aus Recode, Datenfilter, Suchen / Ersetzen und JSL-Scripting ausgeführt habe, in JMP 12 in Recode integriert sind.
Tatsächlich konnte ich, lange bevor die Recode-Plattformaktualisierungen abgeschlossen waren, eine Tabelle mit bereinigten, gruppierten Elementnamen aus meiner Liste mit Nahrungsmitteln erstellen, und zwar in viel kürzerer Zeit, als ich versucht hatte, das Keyword-Problem zu lösen. Dann fügte ich Kategorien für jeden gereinigten Lebensmittelartikelnamen hinzu und fügte sie in meine Tabelle mit den Lebensmittelprotokollen ein, indem ich den ursprünglichen Artikelnamen verband. Mit Recode konnte ich die ursprüngliche Anzahl eindeutiger Namen in meiner Tabelle (1.859) halbieren! Wenn ich jetzt neue Lebensmittelprotokolldateien importiere, gehe ich kurz zu Recode zurück, um alle neuen Artikel zu klassifizieren, meine Artikelnamen- / Kategorietabelle zu aktualisieren, sie mit meinen Daten zusammenzuführen und ich kann fortfahren.
JMP 12 wird erst im März 2015 verfügbar sein, also gebe ich zu, dass ich mit den vielen neuen Funktionen der Recode-Plattform absichtlich vage bin. Ich liebe die Recode-Updates, und ich weiß, dass Sie das auch tun werden! (Suchen Sie nach detaillierteren Blogbeiträgen zu Recode, wenn der März naht und nachdem die Software verfügbar ist.)
In meinen nächsten Blogbeiträgen werde ich einige der Diagramme vorstellen, die ich für mein Poster zu Discovery Summit erstellt habe, und zeigen, wie ich sie mit Hilfe von verbessert habe Xan Gregg , Entwickler der Graph Builder-Plattform und Leiter der Data Discovery-Gruppe bei JMP.
Weitere Hintergrundinformationen zu meinem Poster und meinen Interessen in der quantifizierten Selbstanalyse (QS) finden Sie im erster Blogeintrag in dieser Serie. Nachfolgende Beiträge zeigen Details darüber, wie ich Exportierte meine Excel-formatierten Aktivitätsübersichtsdateien und Lebensmittelprotokolldateien von der BodyMedia® Activity Manager-Software und importierte sie in JMP. Ich habe mit benutzerdefinierten JSL-Skripts zwei JMP-Datentabellen erstellt, eine mit 1.316 Aktivitätsdatenzeilen und die andere mit 34.432 Zeilen mit Lebensmitteln, die über einen Zeitraum von fast vier Jahren protokolliert wurden. Ich habe einen JMP geschrieben Add-In Diese Datentypen und CSV-formatierten Lebensmittelprotokolldateien werden von der kostenlosen MyFitnessPal-Website unterstützt.