개요
이 자료는 JMP 18에 도입된 Python 통합 기능을 보여줍니다. 데모는 NetworkX Python 패키지를 사용하여 익명화된 Facebook 데이터 세트의 네트워크 분석에 중점을 둡니다. 이는 JMP에서 데이터를 탐색하고 JMP가 제공하지 않는 특정 분석을 위해 Python을 원활하게 호출하는 예를 제공하기 위한 것입니다.
분석의 목표는 각 노드에 대한 네 가지 중심성 측정값( degree , betweenness , eigenVector 및 closeness) 을 계산하여 각 노드가 네트워크에 얼마나 "중요한"지 정량화하는 것입니다. 분석 결과 네트워크 그래프와 중심성 측정값에 대한 JMP 데이터 테이블이 반환됩니다. JMP의 데이터 탐색 도구는 분석 전 네트워크 데이터 및/또는 분석에서 생성된 중심성 측정값에 적용될 수 있습니다.
이 예는 JMP Academic 2024 여름 인턴인 Kyra Dalbo가 개발했습니다. @Ross_Metusalem 에 직접 질문이나 요청을 보내세요.
데모 자료
자료
데이터 세트는 Stanford Network Analysis Project 에서 가져온 것입니다. 구체적으로는 여기에 있는 facebook_combined.txt 파일입니다.
데이터는 실제 사용자 연결의 '서클'(또는 '친구 목록')로 구성되며, 4,039명의 사용자가 포함되고 총 88,234개의 에지 또는 연결이 포함됩니다. 네트워크는 여러 '자아 노드'(다른 많은 노드가 연결되는 초점 노드)를 기반으로 합니다. 비자아 노드도 서로 연결되어 있습니다.
각 행은 하나의 연결을 나타냅니다. 예를 들어 행 1은 노드 0이 노드 1에 연결되어 있음을 보여줍니다. 스크립트에는 숫자 노드 ID가 필요합니다.
자료에는 88,234개 연결의 전체 데이터 세트와 37,655개 연결의 하위 세트라는 두 가지 버전의 데이터가 포함되어 있습니다. 하위 집합은 ID 값이 2,000 미만인 모든 노드에 대한 데이터로 구성됩니다. 테스트에서는 하위 집합을 실시간으로 시연할 수 있을 만큼 빠르게 분석할 수 있습니다. 전체 데이터 세트는 라이브 데모에 너무 오래 걸릴 수 있습니다.
분석 스크립트
분석 스크립트는 JSL 코드가 내장된 Python 스크립트와 Python 코드가 내장된 JSL 스크립트로 제공됩니다. JSL 스크립트는 최종 사용자에게 "코드가 없는" 솔루션을 보여주기 위해 JMP 추가 기능으로 번들로 제공됩니다.
각각에는 사용자가 분석할 열을 지정하고 네 가지 중심성 척도 중 어느 것을 계산해야 하는지 지정할 수 있는 대화형 JMP 실행 대화 상자가 포함되어 있습니다.
각각은 필요한 Python 패키지를 자동으로 설치합니다.
데모 흐름
처음에는 분석 스크립트를 실행하기 전에 네트워크 데이터를 빠르게 탐색하는 것을 고려하십시오. 예를 들어 두 개의 노드 열을 쌓고 쌓인 데이터에 대해 분포, 그래프 빌더 또는 표 작성을 사용하여 각 노드의 연결 수를 수량화할 수 있습니다. 이는 노드의 정도 중심성에 해당합니다.
다음으로 네트워크 분석을 실행하고 JMP를 사용하여 중심성 측정을 탐색할 수 있습니다. 예를 들어 그래프 빌더를 사용하여 정도별로 매개성을 표시하고 정도는 낮지만 상대적으로 높은 매개성을 갖는 여러 노드를 식별합니다. 이러한 노드에는 연결이 거의 없지만 다른 많은 노드 쌍 사이에서 중요한 연결 역할을 합니다. 이러한 낮은 수준의 높은 사이 노드는 그래프에서 크고 어두운 색상의 점으로 뚜렷이 나타납니다.
예제 데모는 첨부된 비디오를 참조하세요. 이 비디오는 특히 대학 통계 강사를 대상으로 한 데모를 묘사하고 있습니다. 이 데모는 Academic 팀을 위해 개발되었지만 상업용 고객에게도 적용하기 어렵지 않아야 합니다.
기술 노트
- 최소 JMP 버전: 18.
- 필수 Python 패키지: jmp, jmputils, networkx, matplotlib, pandas, numpy, scipy, os, tempfile.
- 코드는 현재 활성화된 JMP 데이터 테이블에서 작동합니다. 분석을 실행하기 전에 테이블을 열어 활성화하십시오.
- 데이터 테이블에는 노드 ID 값의 두 숫자 열이 포함되어야 하며, 각 행은 하나의 연결을 나타냅니다.
- 스크립트는 NetworkX에 입력하기 위해 JMP 데이터 테이블을 Pandas 데이터 프레임으로 변환합니다.
- 전체 데이터 세트를 분석하는 데는 시스템에 따라 최대 몇 분이 걸릴 수 있습니다. M1 Pro 프로세서를 탑재한 2021년 Macbook Pro에서 약 30초 안에 분석할 수 있는 데이터 하위 집합이 제공됩니다.
- JMP에서 네트워크 그래프를 표시하려면 먼저 그래프를 OS의 임시 디렉터리에 png로 저장한 다음 JSL을 사용하여 엽니다. png 파일은 임시 디렉터리에서 자동으로 삭제됩니다.
제품 및 스크립트 플랫폼
제품: JMP 18+
스크립트 플랫폼: Python 통합
데이터 소스
파일
- NetworkData_Full.jmp : 88,234개의 Facebook 연결에 대한 전체 데이터 세트
- NetworkData.jmp : 라이브 데모에 실용적일 수 있는 NetworkData_Full.jmp의 하위 집합
- networkAnalytic.jsl : 네트워크 분석을 완료하는 JSL 스크립트
- networkAnalytic.py : 네트워크 분석을 완료하는 Python 스크립트
- Network Centrality Measures.jmpaddin : networkAnalytic.jsl에서와 동일한 JSL 코드를 실행하는 추가 기능입니다.
- Demo example.mp4 : 예제 데모