Panoramica
Questi materiali dimostrano le funzionalità di integrazione di Python introdotte in JMP 18. La demo si concentra sull'analisi di rete di un set di dati Facebook anonimizzato con il pacchetto NetworkX Python . È inteso come un esempio di esplorazione dei dati in JMP e di chiamata ininterrotta di Python per un'analisi specifica che JMP non offre.
L'obiettivo dell'analisi è quantificare quanto sia "importante" ciascun nodo per la rete calcolando quattro misure di centralità per ciascun nodo: grado , distanza , autovettore e vicinanza . L'analisi restituisce un grafico di rete e una tabella dati JMP di misure di centralità. Gli strumenti di esplorazione dei dati di JMP possono essere applicati ai dati di rete prima dell'analisi e/o alle misure di centralità prodotte dall'analisi.
L'esempio è stato sviluppato da Kyra Dalbo, stagista estiva di JMP Academic 2024. Domande o richieste dirette a @Ross_Metusalem .
Materiali dimostrativi
I dati
Il set di dati proviene dallo Stanford Network Analysis Project ; nello specifico, è il file facebook_combined.txt che trovi qui .
I dati sono costituiti da "cerchie" (o "liste di amici") di connessioni di utenti reali, con 4.039 utenti inclusi e 88.234 bordi o connessioni in totale. La rete si basa su diversi "nodi dell'ego": nodi focali a cui sono collegati molti altri nodi. Anche i nodi del non-ego sono collegati tra loro.
Ogni riga rappresenta una connessione. Ad esempio, la riga 1 mostra che il nodo 0 è connesso al nodo 1. Tieni presente che lo script richiede ID nodo numerici.
I materiali includono due versioni dei dati: il set di dati completo di 88.234 connessioni e un sottoinsieme di 37.655 connessioni. Il sottoinsieme è costituito da dati per tutti i nodi con valori ID <= 2.000. Durante i test, il sottoinsieme può essere analizzato abbastanza rapidamente per poter essere dimostrato dal vivo. Il set di dati completo potrebbe richiedere troppo tempo per la demo dal vivo.
Lo script di analisi
Lo script di analisi viene fornito sia come script Python con codice JSL incorporato sia come script JSL con codice Python incorporato. Lo script JSL è stato anche fornito in bundle come componente aggiuntivo JMP per dimostrare all'utente finale una soluzione "senza codice".
Ciascuno include una finestra di dialogo interattiva di avvio di JMP che consente all'utente di specificare le colonne per l'analisi e quale delle quattro misure di centralità deve essere calcolata.
Ciascuno installa automaticamente tutti i pacchetti Python necessari.
Flusso dimostrativo
Inizialmente, prendi in considerazione una rapida esplorazione dei dati di rete prima di eseguire lo script di analisi. Ad esempio, puoi impilare le colonne dei due nodi e utilizzare Distribuzione, Costruttore di grafici o Tabula sui dati in pila per quantificare il numero di connessioni di ciascun nodo. Ciò corrisponde alla centralità del grado del nodo.
Successivamente è possibile eseguire l'analisi della rete e utilizzare JMP per esplorare le misure di centralità. Ad esempio, utilizza il Costruttore di grafici per tracciare la distanza in base al grado e identificare diversi nodi che hanno un grado basso ma una distanza relativamente alta. Questi nodi hanno poche connessioni ma servono comunque come connessioni cruciali tra molte altre coppie di nodi. Questi nodi di basso grado e di alto livello sono evidenti nel grafico come punti grandi e di colore scuro.
Guarda il video allegato per una demo di esempio. Si noti che il video ritrae una demo specificatamente rivolta ai docenti di statistica universitaria – la demo è stata sviluppata per il team accademico – ma non dovrebbe essere difficile adattarla ai clienti commerciali.
Note tecniche
- Versione minima di JMP: 18.
- Pacchetti Python richiesti: jmp, jmputils, networkx, matplotlib, pandas, numpy, scipy, os, tempfile.
- Il codice opera sulla tabella dati JMP attualmente attiva. Avere la tabella aperta e attiva prima di eseguire l'analisi.
- La tabella dati deve contenere due colonne numeriche di valori ID nodo, con ciascuna riga che rappresenta una connessione.
- Lo script converte la tabella dati JMP in un frame dati Pandas per l'input in NetworkX.
- L'analisi dell'intero set di dati può richiedere diversi minuti a seconda della macchina. Viene fornito un sottoinsieme di dati che può essere analizzato in circa 30 secondi su un MacBook Pro 2021 con processore M1 Pro.
- Per visualizzare il grafico di rete in JMP, il grafico viene prima salvato come png nella directory temporanea del sistema operativo e quindi aperto utilizzando JSL. Il file png viene automaticamente eliminato dalla directory temporanea.
Prodotti e piattaforme con script
Prodotti: JMP 18+
Piattaforme con script: integrazione Python
Fonte di dati
File
- NetworkData_Full.jmp : set di dati completo di 88.234 connessioni Facebook
- NetworkData.jmp : sottoinsieme di NetworkData_Full.jmp che può essere pratico per le demo dal vivo
- networkAnalysis.jsl : script JSL che completa l'analisi della rete
- networkAnalysis.py : script Python che completa l'analisi della rete
- Network Centrality Measures.jmpaddin : componente aggiuntivo che esegue lo stesso codice JSL di networkAnalysis.jsl
- Demo Esempio.mp4 : dimostrazione di esempio