概要
これらの資料は、JMP 18 で導入された Python 統合機能のデモンストレーションです。このデモでは、 NetworkX Python パッケージを使用した匿名化された Facebook データセットのネットワーク分析に焦点を当てています。これは、JMP でデータを探索し、JMP が提供していない特定の分析のために Python をシームレスに呼び出す例として意図されています。
分析の目的は、各ノードの 4 つの中心性指標 ( 次数、 媒介性、 固有ベクトル、および近さ) を計算して、各ノードがネットワークにとってどの程度「重要」であるかを定量化することです。分析により、ネットワーク グラフと中心性指標の JMP データ テーブルが返されます。JMP のデータ探索ツールは、分析前のネットワーク データや、分析によって生成された中心性指標に適用できます。
この例は、JMP Academic 2024 夏期インターンの Kyra Dalbo によって開発されました。質問やリクエストは@Ross_Metusalemまでお寄せください。
デモ資料
データ
データ セットは スタンフォード ネットワーク分析プロジェクトからのものであり、具体的には、 ここにある facebook_combined.txt ファイルです。
データは実際のユーザー接続の「サークル」(または「友達リスト」)で構成され、4,039 人のユーザーが含まれ、合計 88,234 のエッジまたは接続があります。ネットワークは、いくつかの「エゴ ノード」に基づいています。エゴ ノードは、他の多くのノードが接続されている焦点ノードです。非エゴ ノードも互いに接続されています。
各行は 1 つの接続を表します。たとえば、行 1 はノード 0 がノード 1 に接続されていることを示します。スクリプトには数値のノード ID が必要であることに注意してください。
資料には、88,234 個の接続の完全なデータ セットと 37,655 個の接続のサブセットの 2 つのバージョンのデータが含まれています。サブセットは、ID 値が 2,000 未満のすべてのノードのデータで構成されます。テストでは、サブセットはライブ デモを行うのに十分な速さで分析できます。完全なデータ セットはライブ デモを行うには時間がかかりすぎる可能性があります。
分析スクリプト
分析スクリプトは、JSL コードが埋め込まれた Python スクリプトと、Python コードが埋め込まれた JSL スクリプトの両方で提供されます。JSL スクリプトは、エンド ユーザーに「コード不要」のソリューションを示すために、JMP アドインとしてもバンドルされています。
それぞれにインタラクティブな JMP 起動ダイアログが含まれており、ユーザーは分析の列と、計算する 4 つの中心性指標を指定できます。
それぞれ必要な Python パッケージが自動的にインストールされます。
デモフロー
まず、分析スクリプトを実行する前に、ネットワーク データを簡単に調査することを検討してください。たとえば、2 つのノード列を積み重ね、積み重ねたデータに対して Distribution、Graph Builder、または Tabulate を使用して、各ノードの接続数を定量化できます。これは、ノードの次数中心性に対応します。
次に、ネットワーク分析を実行し、JMP を使用して中心性指標を調べることができます。たとえば、グラフ ビルダーを使用して次数別に媒介性をプロットし、次数が低いが媒介性が比較的高いノードをいくつか特定します。これらのノードは接続数が少ないものの、他の多くのノード ペア間の重要な接続として機能します。これらの次数が低く媒介性が高いノードは、グラフでは大きく暗い色の点として表示されます。
デモの例については、添付のビデオをご覧ください。ビデオは大学の統計学の講師を対象としたデモを描写していますが、このデモは学術チーム向けに開発されたものですが、商用の顧客向けに適応させることは難しくないはずです。
技術ノート
- 最小 JMP バージョン: 18。
- 必要な Python パッケージ: jmp、jmputils、networkx、matplotlib、pandas、numpy、scipy、os、tempfile。
- コードは現在アクティブな JMP データ テーブルに対して動作します。分析を実行する前に、テーブルを開いてアクティブにしておいてください。
- データ テーブルには、ノード ID 値の 2 つの数値列が含まれている必要があり、各行は 1 つの接続を表します。
- このスクリプトは、JMP データ テーブルを NetworkX への入力用に 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 のサブセット
- networkAnalysis.jsl : ネットワーク分析を完了する JSL スクリプト
- networkAnalysis.py : ネットワーク分析を完了する Python スクリプト
- Network Centrality Measures.jmpaddin : networkAnalysis.jsl と同じ JSL コードを実行するアドイン
- デモ例.mp4 : デモ例