概述
這些材料展示了 JMP 18 中引入的Python整合功能。它旨在作為探索 JMP 中的資料並無縫調用 Python 進行 JMP 不提供的特定分析的範例。
分析的目標是透過計算每個節點的四個中心性度量來量化每個節點對網路的「重要性」: 度、 介數、 特徵向量和接近度。分析傳回網路圖和中心性度量的 JMP 資料表。 JMP 的資料探索工具可以在分析之前應用於網路資料和/或分析產生的中心性度量。
此範例由 JMP 學術 2024 年暑期實習生 Kyra Dalbo 開發。直接向@Ross_Metusalem提出問題或要求。
示範材料
數據
數據集來自 史丹佛網路分析計畫;具體來說,它是在這裡找到的 facebook_combined.txt 檔案。
該數據由真實用戶連接的「圈子」(或「朋友列表」)組成,包含 4,039 個用戶,總共 88,234 個邊或連接。這個網路基於多個「自我節點」:許多其他節點連接到的焦點節點。非自我節點也相互連結。
每一行代表一個連線。例如,第 1 行顯示節點 0 連接到節點 1。
這些材料包括兩個版本的資料:88,234 個連接的完整資料集和 37,655 個連接的子集。此子集由 ID 值 <= 2,000 的所有節點的資料組成。在測試中,可以足夠快地分析該子集以進行現場演示。對於現場演示來說,完整的資料集可能需要太長時間。
分析腳本
分析腳本以嵌入 JSL 程式碼的 Python 腳本和嵌入 Python 程式碼的 JSL 腳本的形式提供。 JSL 腳本也捆綁為 JMP 插件,用於向最終用戶演示「無程式碼」解決方案。
每個都包含一個互動式 JMP 啟動對話框,允許使用者指定要分析的欄位以及應計算四個中心性度量中的哪一個。
每個都會自動安裝任何必要的 Python 套件。
示範流程
首先,請考慮在執行分析腳本之前快速探索網路資料。例如,您可以堆疊兩個節點列,並對堆疊的資料使用分佈、圖形產生器或製表來量化每個節點的連接數。這對應於節點的度中心性。
接下來,您可以執行網路分析並使用 JMP 來探索中心性度量。例如,使用Graph Builder按度繪製介數,並識別出度數較低但介數相對較高的幾個節點。這些節點幾乎沒有連接,但仍然充當許多其他節點對之間的關鍵連接。這些低度高介數節點在圖中明顯為大的深色點。
請參閱隨附的影片以取得範例示範。請注意,該影片描繪了一個專門針對大學統計講師的演示 - 該演示是為學術團隊開發的 - 但適應商業客戶應該不難。
技術說明
- 最低 JMP 版本:18。
- 所需的 Python 套件:jmp、jmputils、networkx、matplotlib、pandas、numpy、scipy、os、tempfile。
- 此程式碼對目前活動的 JMP 資料表進行操作。在運行分析之前打開並激活表。
- 資料表必須包含兩列節點 ID 值,每一行代表一個連線。
- 該腳本將 JMP 資料表轉換為 Pandas 資料框以輸入到 NetworkX 中。
- 分析完整資料集可能需要長達幾分鐘的時間,具體取決於您的機器。提供的資料子集可以在配備 M1 Pro 處理器的 2021 Macbook Pro 上約 30 秒內進行分析。
- 若要在 JMP 中顯示網路圖,請先將該圖以 png 格式儲存到作業系統的暫存目錄中,然後使用 JSL 開啟。 png 檔案會自動從暫存目錄中刪除。
產品和腳本平台
產品:JMP 18+
腳本化平台:Python 集成
資料來源
文件
- NetworkData_Full.jmp :88,234 個 Facebook 連結的完整資料集
- NetworkData.jmp :NetworkData_Full.jmp 的子集,可能適用於現場演示
- networkAnalysis.jsl :完成網路分析的JSL腳本
- networkAnalysis.py :完成網路分析的Python腳本
- Network Centrality Measures.jmpaddin :執行與 networkAnalysis.jsl 中相同的 JSL 程式碼的加載項
- Demo Example.mp4 : 範例演示