Descripción general
Estos materiales demuestran las capacidades de integración de Python introducidas en JMP 18. La demostración se centra en el análisis de red de un conjunto de datos anónimos de Facebook con el paquete NetworkX Python . Su objetivo es ser un ejemplo de exploración de datos en JMP y solicitar sin problemas a Python un análisis específico que JMP no ofrece.
El objetivo del análisis es cuantificar qué tan "importante" es cada nodo para la red mediante el cálculo de cuatro medidas de centralidad para cada nodo: grado , intermediación , vector propio y cercanía . El análisis devuelve un gráfico de red y una tabla de datos JMP de medidas de centralidad. Las herramientas de exploración de datos de JMP se pueden aplicar a los datos de la red antes del análisis y/o a las medidas de centralidad producidas por el análisis.
El ejemplo fue desarrollado por Kyra Dalbo, pasante de verano de JMP Academic 2024. Dirija sus preguntas o solicitudes a @Ross_Metusalem .
Materiales de demostración
Los datos
El conjunto de datos proviene del Proyecto de Análisis de Redes de Stanford ; Específicamente, es el archivo facebook_combined.txt que se encuentra aquí .
Los datos consisten en 'círculos' (o 'listas de amigos') de conexiones de usuarios reales, con 4.039 usuarios incluidos y 88.234 bordes o conexiones en total. La red se basa en varios 'nodos del ego': nodos focales a los que están conectados muchos otros nodos. Los nodos no ego también están conectados entre sí.
Cada fila representa una conexión. Por ejemplo, la fila 1 muestra que el Nodo 0 está conectado al Nodo 1. Tenga en cuenta que el script requiere ID de nodo numéricos.
Los materiales incluyen dos versiones de los datos: el conjunto de datos completo de 88.234 conexiones y un subconjunto de 37.655 conexiones. El subconjunto consta de datos de todos los nodos con valores de ID <= 2000. Durante las pruebas, el subconjunto se puede analizar con la suficiente rapidez como para realizar una demostración en vivo. Es posible que el conjunto de datos completo tarde demasiado en realizar una demostración en vivo.
El guión de análisis
El script de análisis se proporciona como script Python con código JSL incorporado y como script JSL con código Python incorporado. El script JSL también se ha incluido como complemento JMP para demostrar una solución "sin código" al usuario final.
Cada uno incluye un cuadro de diálogo de inicio de JMP interactivo que permite al usuario especificar las columnas para el análisis y cuál de las cuatro medidas de centralidad debe calcularse.
Cada uno instala automáticamente los paquetes de Python necesarios.
Flujo de demostración
Al principio, considere una exploración rápida de los datos de la red antes de ejecutar el script de análisis. Por ejemplo, puede apilar las dos columnas de nodos y usar Distribución, Generador de gráficos o Tabular en los datos apilados para cuantificar el número de conexiones de cada nodo. Esto corresponde al grado de centralidad del nodo.
A continuación, puede ejecutar el análisis de red y utilizar JMP para explorar las medidas de centralidad. Por ejemplo, utilice Graph Builder para trazar la intermediación por grado e identificar varios nodos que tengan un grado bajo pero una intermediación relativamente alta. Estos nodos tienen pocas conexiones pero, aun así, sirven como conexiones cruciales entre muchos otros pares de nodos. Estos nodos de bajo grado y alto grado de intermediación son evidentes en el gráfico como puntos grandes de color oscuro.
Vea el vídeo adjunto para ver una demostración de ejemplo. Tenga en cuenta que el vídeo muestra una demostración dirigida específicamente a profesores universitarios de estadística (la demostración se desarrolló para el equipo académico), pero no debería ser difícil de adaptar para los clientes comerciales.
Notas técnicas
- Versión mínima de JMP: 18.
- Paquetes de Python necesarios: jmp, jmputils, networkx, matplotlib, pandas, numpy, scipy, os, tempfile.
- El código opera en la tabla de datos JMP actualmente activa. Tenga la tabla abierta y activa antes de ejecutar el análisis.
- La tabla de datos debe contener dos columnas numéricas de valores de ID de nodo, y cada fila representa una conexión.
- El script convierte la tabla de datos JMP en un marco de datos Pandas para ingresarlo en NetworkX.
- El análisis del conjunto de datos completo puede tardar hasta varios minutos dependiendo de su máquina. Se proporciona un subconjunto de datos que se puede analizar en aproximadamente 30 segundos en una Macbook Pro 2021 con procesador M1 Pro.
- Para mostrar el gráfico de red en JMP, el gráfico primero se guarda como png en el directorio temporal del sistema operativo y luego se abre usando JSL. El archivo png se elimina automáticamente del directorio temporal.
Productos y plataformas con script
Productos: JMP 18+
Plataformas con script: integración de Python
Fuente de datos
Archivos
- NetworkData_Full.jmp : conjunto de datos completo de 88.234 conexiones de Facebook
- NetworkData.jmp : subconjunto de NetworkData_Full.jmp que puede resultar práctico para demostraciones en vivo.
- networkAnalysis.jsl : script JSL que completa el análisis de la red
- networkAnalysis.py : script Python que completa el análisis de red
- Network Centrality Measures.jmpaddin : complemento que ejecuta el mismo código JSL que en networkAnalysis.jsl
- Ejemplo de demostración.mp4 : demostración de ejemplo