Überblick
Diese Materialien demonstrieren die in JMP 18 eingeführten Python-Integrationsfunktionen. Die Demo konzentriert sich auf die Netzwerkanalyse eines anonymisierten Facebook-Datensatzes mit dem NetworkX Python-Paket . Sie ist als Beispiel für die Untersuchung von Daten in JMP und den nahtlosen Aufruf von Python für eine spezifische Analyse gedacht, die JMP nicht bietet.
Das Ziel der Analyse besteht darin, zu quantifizieren, wie „wichtig“ jeder Knoten für das Netzwerk ist. Dazu werden für jeden Knoten vier Zentralitätsmaße berechnet: Grad , Zwischenwert , Eigenvektor und Nähe . Die Analyse gibt ein Netzwerkdiagramm und eine JMP-Datentabelle mit Zentralitätsmaßen zurück. Die Datenerkundungstools von JMP können vor der Analyse auf die Netzwerkdaten und/oder auf die von der Analyse erzeugten Zentralitätsmaße angewendet werden.
Das Beispiel wurde von Kyra Dalbo entwickelt, Sommerpraktikantin bei JMP Academic 2024. Richten Sie Fragen oder Anfragen an @Ross_Metusalem .
Demo-Materialien
Die Daten
Der Datensatz stammt vom Stanford Network Analysis Project ; genauer gesagt handelt es sich um die Datei facebook_combined.txt, die Sie hier finden.
Die Daten bestehen aus „Kreisen“ (oder „Freundeslisten“) realer Benutzerverbindungen, die 4.039 Benutzer und insgesamt 88.234 Kanten oder Verbindungen umfassen. Das Netzwerk basiert auf mehreren „Ego-Knoten“: zentralen Knoten, mit denen viele andere Knoten verbunden sind. Die Nicht-Ego-Knoten sind ebenfalls miteinander verbunden.
Jede Zeile stellt eine Verbindung dar. Zeile 1 zeigt beispielsweise, dass Knoten 0 mit Knoten 1 verbunden ist. Beachten Sie, dass das Skript numerische Knoten-IDs erfordert.
Die Materialien umfassen zwei Versionen der Daten: den vollständigen Datensatz mit 88.234 Verbindungen und eine Teilmenge mit 37.655 Verbindungen. Die Teilmenge besteht aus Daten für alle Knoten mit ID-Werten <= 2.000. Beim Testen kann die Teilmenge schnell genug analysiert werden, um eine Live-Demo durchzuführen. Der vollständige Datensatz kann für eine Live-Demo zu lange dauern.
Das Analyseskript
Das Analyseskript wird sowohl als Python-Skript mit eingebettetem JSL-Code als auch als JSL-Skript mit eingebettetem Python-Code bereitgestellt. Das JSL-Skript wurde auch als JMP-Add-In gebündelt, um dem Endbenutzer eine Lösung ohne Code zu demonstrieren.
Jedes enthält einen interaktiven JMP-Startdialog, der es dem Benutzer ermöglicht, die Spalten für die Analyse anzugeben und festzulegen, welche der vier Zentralitätsmaße berechnet werden sollen.
Jedes installiert automatisch alle erforderlichen Python-Pakete.
Demo-Ablauf
Erwägen Sie zu Beginn eine schnelle Untersuchung der Netzwerkdaten, bevor Sie das Analyseskript ausführen. Sie können beispielsweise die beiden Knotenspalten stapeln und die Funktionen „Verteilung“, „Graphgenerator“ oder „Tabulieren“ auf die gestapelten Daten anwenden, um die Anzahl der Verbindungen jedes Knotens zu quantifizieren. Dies entspricht der Gradzentralität des Knotens.
Als Nächstes können Sie die Netzwerkanalyse ausführen und JMP verwenden, um die Zentralitätsmaße zu untersuchen. Verwenden Sie beispielsweise Graph Builder, um die Betweenness nach Grad darzustellen und mehrere Knoten zu identifizieren, die einen niedrigen Grad, aber eine relativ hohe Betweenness aufweisen. Diese Knoten haben nur wenige Verbindungen, dienen aber dennoch als wichtige Verbindungen zwischen vielen anderen Knotenpaaren. Diese Knoten mit niedrigem Grad und hoher Betweenness sind im Diagramm als große, dunkel gefärbte Punkte erkennbar.
Eine Beispieldemo finden Sie im angehängten Video. Beachten Sie, dass das Video eine Demo zeigt, die sich speziell an Statistikdozenten an Universitäten richtet – die Demo wurde für das akademische Team entwickelt –, aber für kommerzielle Kunden problemlos angepasst werden kann.
Technische Hinweise
- Mindestens erforderliche JMP-Version: 18.
- Erforderliche Python-Pakete: jmp, jmputils, networkx, matplotlib, pandas, numpy, scipy, os, tempfile.
- Der Code arbeitet mit der aktuell aktiven JMP-Datentabelle. Öffnen und aktivieren Sie die Tabelle, bevor Sie die Analyse ausführen.
- Die Datentabelle muss zwei numerische Spalten mit Knoten-ID-Werten enthalten, wobei jede Zeile eine Verbindung darstellt.
- Das Skript konvertiert die JMP-Datentabelle in einen Pandas-Datenrahmen zur Eingabe in NetworkX.
- Die Analyse des gesamten Datensatzes kann je nach Computer mehrere Minuten dauern. Es wird eine Datenteilmenge bereitgestellt, die auf einem 2021 Macbook Pro mit M1 Pro-Prozessor in etwa 30 Sekunden analysiert werden kann.
- Um das Netzwerkdiagramm in JMP anzuzeigen, wird das Diagramm zunächst als PNG im temporären Verzeichnis des Betriebssystems gespeichert und dann mit JSL geöffnet. Die PNG-Datei wird automatisch aus dem temporären Verzeichnis gelöscht.
Produkte und Skriptplattformen
Produkte: JMP 18+
Skriptbasierte Plattformen: Python-Integration
Datenquelle
Dateien
- NetworkData_Full.jmp : Vollständiger Datensatz von 88.234 Facebook-Verbindungen
- NetworkData.jmp : Teilmenge von NetworkData_Full.jmp, die für Live-Demos praktisch sein kann
- networkAnalysis.jsl : JSL-Skript, das die Netzwerkanalyse abschließt
- networkAnalysis.py : Python-Skript, das die Netzwerkanalyse abschließt
- Network Centrality Measures.jmpaddin : Add-In, das denselben JSL-Code ausführt wie in networkAnalysis.jsl
- Demo Example.mp4 : Beispieldemonstration