概述
这些材料展示了 JMP 18 中引入的 Python 集成功能。该演示侧重于使用NetworkX Python 包对匿名 Facebook 数据集进行网络分析。它旨在作为在 JMP 中探索数据并无缝调用 Python 进行 JMP 不提供的特定分析的一个例子。
分析的目的是通过计算每个节点的四个中心性度量来量化每个节点对网络的“重要性”: 度、 介数、 特征向量和接近度。分析返回网络图和中心性度量的 JMP 数据表。JMP 的数据探索工具可应用于分析前的网络数据和/或分析产生的中心性度量。
该示例由 JMP Academic 2024 暑期实习生 Kyra Dalbo 开发。如有疑问或要求,请直接联系@Ross_Metusalem 。
演示材料
数据
该数据集来自 斯坦福网络分析项目;具体来说,它是此处找到的 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 探索中心度度量。例如,使用 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 : 示例演示