社会网络分析论坛 social network analysis forum

标题: NodeXL网络图制作指南:手把手教你如何辨别共和党“叛徒” [打印本页]

作者: snachina    时间: 2017-5-29 18:01
标题: NodeXL网络图制作指南:手把手教你如何辨别共和党“叛徒”
想快速学会如何将复杂的社会网络做成直观炫酷的可视化?软件NodeXL是你的绝佳选择:会用Excel,就会用它生成网络图。在2014年计算机辅助报道协会巴尔的摩年会 (NICAR 2014) 上,BuzzFeed News 的科学与健康记者Peter Aldhous就介绍了NodeXL的用法,手把手教你分析美国共和党人中倾向于民主党的有哪些。准备好了吗?一起打开Excel跟着学吧!

NodeXL是一款适用于Microsoft Excel 2007及更高版本Excel的模板,它采用常见的电子表格界面进行社交网络分析。
从NodeXL网站下载模板,然后用Excel打开:
要注意,NodeXL有自己的菜单功能,第一个工作簿的命名是“Edges(连线)”。
网络图(或者说“连线”)反映的是人、机构等主体间的关系,这些主体则被叫做“节点”或“顶点”。
你可以在NodeXL中输入自己的数据,将关系网中的一系列边线存入这个工作簿。以一场小型聚会为例,我们输入一群假想朋友之间的关系。将模版重命名并保存为Excel工作簿文件,然后将以下数据输入“连线”工作簿:

这个例子里,我们只记录朋友关系——这是一种没有指向性的关系。因此图形的类型可设为“无指向(Undirected)”。(如果要记录每个朋友是否邀请其他人参加聚会——比如一个叫Ann的人邀请了她的朋友Carol——那么这个参数就要改成“指向性(Directed)”且需要第二条线,两边的名字要颠倒过来再写一遍。)
接着点击NodeXL菜单中的“显示图形(Show Graph)”按钮,一个表示网络关系的简单图形就会出现在下方窗口中:
转换到“顶点”工作簿,这里会出现所有人的名字。在每个名字后“其他栏(Other Columns)”里添加性别信息:
点击“自动填充列(Autofill Columns)”,选择“顶点”标签,在标签选项中选择 “Vertex”或朋友们的姓名,并依据性别选择颜色。最后这步的做法是:点击末尾的“选项(Options)”箭头,在列值选项中选择“类别(Categories)”,然后点击“OK”。

点一下“自动填充”关闭窗口。现在,“颜色”列已出现RGB色彩数值,“标签”列则包含朋友们的名字,图形也更新了——如果没有,就点击“刷新图形(Refresh Graph)”按钮。
学会了这些基本操作后,我们就可以探索更有趣的关系网了。下面这份数据以2013年美国参议院的投票模式为基础,是用Python写的小程序从govtrack.us网站上抓取的(下载数据点击这里)。你也可以通过微调Python程序来改动这个名单上代表国会会议的数字和年份,以便探索参议院各项议程的投票模式。
这份数据的格式是graphml。在空白NodeXL模版上,选择“导入(Import)”>“从Graphml文件导入”,打开该数据文件(如果弹窗提示“是否关闭文本换行”,选择“是”)。 导入文件后,以Excel工作簿格式保存为新文件。“连线”工作表里储存了成对的议员列表,通过以一对议员投票一致的次数除以其全部投票数,可以计算并在“协同比例(percent_agree)”一列中,显示在同一议程里这些议员的投票情况。

“顶点”(Vertices)工作表列出了每个参议员,并用颜色标示其党派:

点击“显示图形”就会出现下面的图形,图中每个点代表的议员和其他所有人都有联系,因为每一对议员起码同时投了一次票:

NodeXL的强大之处,在于能让你轻松筛选和定制关系网的可视化结果。处理类似上图这种复杂关系网的首要任务,就是要揭示其核心结构,对此我们有两种方法。
点击“动态筛选(Dynamic Filters)”会出现一系列滑动条,通过拖拉滑动条,我们可以在网络图中隐藏或显示“连线”和“节点”。譬如如果从左向右移动“协同比例”的滑动条,就会看到一些“连线”在此过程中消失。不过这对我们所研究的关系网本身不会有任何影响。例如通过计算描述关系网的各项度量指标所得到的那些结果,并不会因“动态筛选”这一过程而改变。
除上面的第一种方法外,我们还可以利用“自动填充列”,它能在筛选模式下进行后续研究。
点击“自动填充列”(Autofill Columns)按钮,选中“连线”标签。这次我们筛选相关参议员的标准是,全部投票中,他们至少在2/3的投票上出现了一致。选择“连线可视度(Edge Visibility)=协同比例(percent_agree)”,如下图所示填好“选项”一列,并点击“OK”:
现在点击“自动填充”,重新生成图形。记得将“布局(Layout)”选项设成Fruchterman-Reingold模式,这是最合适此系列数据的自动布局算法。多次点击“再布局(Lay Out Again)”,直到得到两簇清晰的关系群。
正如所料,这些群簇与民主党和共和党相对应。但有三个共和党议员和其他人显著不同。他们是谁?我们要再次用“自动填充列”来寻找他们。
在“顶点”标签里,选择“Vertex Label=Vertex”,以名字标示每个点所代表的参议员。点击“自动填充”,然后“关闭”,接着点击“再布局”,直到获得以下图形:
关系网中最有趣的议员是来自缅因州的Susan Collins和来自阿拉斯加州的Lisa Murkowski,他们俩和民主党关系密切,却和自己党派的议员貌合神离。尤其是Collins,她是联系两党的唯一节点。我们通过计算一些关系网指标来定制图形,以标注她在关系网中的角色。
NodeXL能计算以下这些社会网络研究中的常见指标:
程度(Degree),指每个节点拥有的关系链接数。对于指向型关系网,有内向程度(In-degree)和外向程度(Out-degree)之分,前者是指向内部的关系链接数,后者是指向外部的关系链接数。
特征向量中心性(Eigenvector centrality)所关注的不仅包括某一节点的关系链接数量,还包括与该节点相链接的是哪些节点,以及那些节点各自的关系链接数量是多少。
中介中心性(Betweenness centrality)则揭示出每个节点在不同关系网间提供“桥梁作用”的重要程度。它所特别标出的点,是一些移除后会导致整个网络崩塌的重要节点。
接近中心性(Closeness centrality)用于量度关系网中每个节点离其他节点的平均距离。它特别标出以较少连线与其他节点联系的点——这就类似于Kevin Bacon的六度理论(即在世界上任意两个陌生人之间只隔着六个人)。
在我们选用的这个例子里,“中介中心性”是一个有趣的指标,因为它能标示出最具“两党性”的议员。选择“图形指标(Graph Metrics)”,点击“Vertex中介和接近中心性”,然后点击“计算指标”:

“顶点”表中的相关列中就会出现如下数据:
现在根据“中介中心性(betweenness centrality)”这一指标来决定参议员簇的大小。点击“自动填充列”,选择“顶点标签”,然后设置“Vertex大小=中介中心性”。使用“选项”,设置极大值为20,点击“OK”。

点击“自动填充”并关闭窗口。接着点击“再分布”,直到出现下图(可能需要调整极大值以获取有意义的图像):
现在该保存图像了。右键点击图像,选择“保存图像到文件”>“图像选项”以定制图片大小。再次点击右键,选择“保存图像到文件”>“以PNG和JPEG等格式保存图像”。
我们已经根据党派给议员们标示了颜色,但其实NodeXL也可用聚类算法探查模式相似的顶点集合。选择“组(Groups)”>“以群分组(Group by Cluster)”,并选择“Clauset-Newman-Moore”聚类算法。点击“刷新图形”,继续点击“再分布”,直到得到下图:
Collins和Murkowski均为共和党人,但在2013年的投票行为模式上,聚类算法将她们归在民主党内。
想要学习更多NodeXL使用技巧,请参考Analyzing Social Media Networks With NodeXL一书。





欢迎光临 社会网络分析论坛 social network analysis forum (http://snachina.com/) Powered by Discuz! X3.3