Stata:社会网络分析命令-nwcommands

发布时间:2022-01-10 阅读 257

Stata连享会   主页 || 视频 || 推文 || 知乎 || Bilibili 站

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:霍崇德 (中山大学)
邮箱huochd@mail2.sysu.edu.cn

编者按:本文部分参考自下文,特此致谢!
Source:Grund, Thomas. “Social Network Analysis Using Stata.” Research Papers in Economics, 2015-更新版. -PDF-


目录


前言:

当提起宫斗剧,大家应该都或多或少的听说过《甄嬛传》,它不是宫斗剧的开山作,却足以代表宫斗剧的高峰,宫斗剧中错综复杂的人物关系无疑是最引人注目的,下面就是甄嬛传中的人物关系图。

其实甄嬛传中宫规的核心不外乎两点:一是各等级后妃所有起居言行都有相应的严格框定,不可逾越,二是位卑者对高位者完全的服从。这样就形成了以皇帝为中心的发散性人物关系图,在图中我们也可以看到,主角甄嬛也毫无疑问的处于人物图中心,她复杂的关系网给了她在宫中"大展拳脚"的基础。

而在现实生活中,这样的网络更是非常常见,在家庭中我们处于包含各个亲戚的网络中,在学校我们处于包含同学,老师的网络中,而网络分析就可以帮助我们分析自己在网络中所处的地位以及网络基本特点,近年来,社会网络分析方法在职业流动、城市化对个体幸福的影晌、世界政治和经济体系、国际贸易等领域广泛应用,并发挥了重要作用。

接下来本文将对社会网络做出基础介绍并且讲解如何用stata做基本的网络分析。

1. 背景

1.1 什么是社会网络?

社会网络 (Social Network) 是由许多节点构成的一种社会结构,这里的节点通常是指个人或组织。社会网络代表各种社会关系,例如朋友关系、同学关系、生意伙伴关系、种族信仰关系等。通过这些社会关系,将偶然相识的泛泛之交到紧密结合的家庭关系的各种人或组织串连起来。

在数学上,一个二进制的网络被表示为:G=(V,E)。其中 V 代表节点,且节点数为正整数,E 代表边,是节点的组合。例如一个简单的网络 G 为 (3,{(1,2),(1,3)}),其对应图如下:

社会网络还有一种方便的矩阵表示形式,该矩阵的构造方法为:将 Yi,j 定义为节点 i 与节点 j 之间的关联关系,若节点 i 与节点 j 相关,则定义 Yi,j=1,若两者不相关则定义 Yi,j=0

矩阵应用如下图:

1.2 如何进行网络分析?

社会网络分析 (Social Network Analysis) 就是对社会关系结构及其属性加以分析的一套规范和方法。它主要分析的是不同社会单位 (个体、群体或社会) 所构成的关系的结构及其属性。网络分析大致包括如下几点:

  • 网络的简单描述/表征
  • 计算节点特征 (例如中心性)
  • 组件、块、集团、等价物...
  • 网络可视化
  • 网络的统计建模,网络动力学

目前各种编程软件中都已经开发出网络分析的工具,例如 Python 的 networkx,R 的 igraph 以及 Windows 环境下的 ucinetpajek 等,本文介绍的是 Stata 软件下的网络分析工具 nwcommands

2. Stata 网络分析

2.1 命令安装

* 方法1:本地安装
cd D:/
mkdir nwcmd 
cd nwcmd
// 下载原始文件
copy https://github.com/ThomasGrund/nwcommands/archive/refs/heads/master.zip  nwcommands.zip 
// 解压
unzipfile nwcommands.zip 
// 添加到 Stata 搜索路径中
adopath + D:/nwcmd/nwcommands-master
// 查看帮助
help nwcommands
* 方法2:在线安装 (受限于网络原因,不容易成功)
// A. 查看所有文档清单,依次点击下载
net from http://nwcommands.org
// 或使用命令
nwinstall, all
// B. 也可以用单独的命令下载
// B1. ado 文档部分
   // 安装程序文件
   net install nwcommands-ado.pkg, replace
   // 下载附件资料
   net get nwcommands-ado.pkg, replace
// B2. 帮助文档
   net install nwcommands-hlp.pkg, replace
// B3. 菜单模式支持文档
   net install nwcommands-dlg.pkg, replace
// B4. 扩展功能
   net install nwcommands-ext.pkg, replace

2.2 命令介绍

// 查看现在全部已有网络的网络名
nwds

// 引用现成网络,其中 name 为文件名,type 为文件类型
nwimport name, type(type)
// 例如引用安装时下载的 gang_pajek.net
nwimport gang_pojek.net,type(pajek) // 确保该文件位于当前路径下
help nwexample // help文档中有详尽的网络实例,可以通过文档指引导入外部网络

// 生成随机网络
nwrandom nodes 
// 示例:生成一个拥有 15 个节点的有向 Erdos-Renyi 网络
nwrandom 15, prob(.1)
// 查看网络
nwset, detail

// 使用 neset 创造网络时,有两种创建方法对应上文介绍的两种网络表示类型
// 1. 用边与节点创造网络
nwset varlist[, edgelist]
// 2. 用矩阵创造网络
nwset, mat(matamatrix)

针对以上两种网络创建方法,我们将以具体案例来演示。

* 方法一
// 清除原有网络
nwclear
// 设置网络
nwset ego alter, edgelist
// 使用 nwset 查看生成的网络
nwset
// 用 neset, detail 查看详细网络数据
nwset, detail

* 方法二
// 清除原有网络
nwclear
// 生成矩阵
mata: net = (0,1,0,0\1,0,0,1\1,1,0,0\1,1,1,0)
// 生成网络
nwset, mat(net) name(network)
// 详细网络数据
nwset, detail

nwcommands 中包括非常多的命令,这些命令大多数与 Stata 原有命令非常相似。如果你想使用某种在 Stata 中也有类似功能的命令可以尝试输入 nw + stata命令。例如:

// 清除网络
nwclear
// 载入网络
nwload
// 使用网络数据
nwuse
// 在网页上寻找并使用网络
webnwuse
// 储存网络
nwsave
// 删除网络
nwdrop
// 保存网络
nwkeep
// 对网络进行描述
nwsummarize
nwtabulate

改变网络中数据命令:nwrecodenwreplace

* nwrecode
// 引用外部网络
webnwuse gang, clear
// 查看现有网络
nwset
// 描述 gang_valued 网络
nwtabulate gang_valued
// 更改网络中2到4的值为99
nwrecode gang_valued (2/4 = 99)
// 描述
nwtabulate gang_valued
   
* nwreplace
// 引用新网络
webnwuse florentine, nwclear
// 描述 marriage 网络
nwtabulate flomarriage
// 将 marriage 网络中 flomarriage 等于 1 中的部分替换为 2
nwreplace flomarriage = 2 if flobusiness == 1 & flomarriage ==1
// 查看改变后网络
nwtabulate flomarriage

2.3 计算网络节点特征

节点特征中最核心的是中心度 (centrality)。中心度代表网络中一个节点与其他结点的关联程度,用数学公式来计算 i 点节点中心度为:

其中,yij 为上文介绍的网络表示矩阵的组成元素。

// 在 Stata 中计算网络 network 节点中心度
nwdegree network

节点特征中的紧密中心度 (clossness centrality) 是衡量个人 (平均) 与所有其他个人的距离有多近的指标。用数学公式来计算i点紧密中心度为:

其中 Iij 为 i 节点与 j 节点之间的最短距离。

// 在 Stata 中计算网络 network 节点紧密中心度
nwclossness network

节点特征中的中介中心度 (betweenness centrality) 代表有多少最短路径经过该点。

// 在 Stata 中计算网络 network 节点紧密中心度
nwbetween network

2.4 网络可视化

nwcommands 中可以运用命令 nwplot 进行网络可视化。

// 对网络 gang 作图,color 代表颜色
webnwuse gang
nwplot gang, color(Birthplace)
// 网络图节点的区分由 prison 变量取值决定并且节点大小由变量 arrests 大小取值决定
nwplot gang, color(Birthplace) symbol(Prison) size(Arrests)
// lab表示在图中节点位置标注节点名
webnwuse florentine
nwplot flomarriage, lab
// nwplotmatrix 作出矩阵图
nwplotmatrix flomarriage, lab

3. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 网络 绘图, m
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,700+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

连享会小程序:扫一扫,看推文,看视频……

扫码加入连享会微信群,提问交流更方便

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxhsongbl 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh