罚似然图模型与社会网络测量(二)
罚似然图模型扩展
基于罚似然回归方法的社会网络关系测度不仅适用于小群体的网络数据,更适用于大规模的社会网络数据。罚似然回归其本质上是回归估计和模型变量选择,统计学家们通过模拟分析,已经证明其具有非常好的稳健性,对于几千甚至上万的自变量选择具有一致性(Tibshirani, 1996)。另外,使用罚似然图模型进行社会关系网络测度,可以根据无向无权的二分双模网络数据估计得到无向有权的关系网络矩阵,从而不仅可以对关系进行有无的判定,还可以进行强度的比较,大大丰富了分析内容。除此之外,罚似然图模型还具有很强的扩展性,本节将对此展开介绍。
针对不同数据类型的图模型
经典的高斯图模型对变量的假设为多元正态分布。但在社会科学研究中,往往会碰到多种类型的数据,甚至是混合类型的数据,包括二分数据、定类数据、定序数据、计数数据、有偏分布的连续数据等等。例如,前述的美国南方妇女数据即为二分变量,网民在论坛的发帖回帖为计数型变量,在某个场所停留的时间可算是计数型变量或有偏的连续变量。再举个例子,对于健康领域的社会学大数据研究则可能要考虑性别(二分)、年龄(连续)、行为模式(计数)、事件发生的场所(类别)、用药的计量(连续)等各类数据类型之间的关联模式。基于此,统计学家们发展了多种特殊模型予以解决。例如,针对二项分布数据的估计问题可进一步参考(Banerjee & El Ghaoui et al., 2008; Ravikumar & Raskutti et al., 2008; van Borkulo & Borsboom et al., 2014),针对泊松分布数据可参考(Allen & Liu, 2012; Allen & Liu, 2013),针对多分类分布可参考(Dai & Ding et al., 2013),针对混合数据类型的估计问题可参考。略有遗憾的是,目前为止,尚未有一个软件包将所有数据类型综合到一个框架下进行处理。
带协变量的罚似然图模型
在罚似然模型中,除了对所有变量加罚,还可以仅对部分变量加罚。将公式三的罚则项
$\lambda\sum_{p = 1}^{p}\left| b_{p} \right|$
改写为:
$\lambda\sum_{p = 1}^{m}\left| b_{p} \right|$
其中$m < p$,即表示仅对部分自变量加罚。因此,很容易引入其它协变量进入模型。以DGG
数据为例,由于所记录的事件来自多种聚会类型,尽管人类学家们没有记录事件的具体类型从而缺失了相关信息,但是可以假设,不同的活动类型和参与规模相关,并进而影响不同人的参与程度。因此,在本示例中,将参与活动人数作为协变量引入图模型,得到的结果如图2所示。相比起图一,在控制了参与人数规模这个因素之后,图二仍然保留了基本相同的网络结构,编号17和18通过编号16与其它成员相关联。但与图一不同的是,编号1、编号8和编号16处在了网络桥的位置,而编号9不再成为网络桥,而是成了第一网络子群的成员。在弗里曼的元分析中,编号8的分组其实存有争议,21个方法中有4个将其判定为第二分组,另有7个方法无法处理编号8只能将其剔除。从原始数据来看,编号9所参与的4次活动均是这个群体参与人数最多的活动。因此,针对编号9的网络地位,除了技术问题以外(由于观测数太少而导致估计不稳定),可能的推论有两个:从众的边缘成员或者比较重大事件才出席的核心人物。选择何种推论就取决于对活动信息的了解。遗憾的是,原始数据缺乏相关信息。
图2:控制聚会规模以后的美国南方妇女网络
多组罚似然图模型
若协变量为类别变量,也就是说,观测样本可能来自不同的子总体,那么有两种策略:1、用不加罚的方式将协变量引入模型,此时估计得到的是一个总体网络,消除了不同类别之间的异质性。2、对子总体分别进行建模,从而得到多个网络。该方式的缺点在于无法进一步分析网络之间的共性。
除了不同子总体的样本之外,在时点观测数据中往往需要假设一定的异质性:在一个随时点变化的观测中,存在一个公共的网络结构,在不同时间段网络结构发生缓慢变化或者突变。例如,对于学术引文网络来说,在上个世纪六七十年代,由于布劳邓肯地位获得模型的成功,社会流动研究领域的引文可能会更多涉及路径模型和结构方程模型方面的文献,而在八九十年代之后引文中可能更多出现对数线性模型方面的文献。在这个统计技术变迁的过程当中,核心的关注主题并没有发生变化,不同时段的引文仍然具有一定的共性。
对于这种异质性数据,有不同的分析策略:一为在考虑异质性的条件下,估计一个平滑的共同网络结构(Zhou & Lafferty et al., 2010; Kolar & Xing, 2011)。二为假设不同子总体之间存在一个公共网络结构,但每个子总体由于其自身的结构特殊性而具有独特的网络结构,需同时估计多个子网络结构。对于后一种策略来说,针对观测的独立同分布(i.i.d)假设,将glasso
模型进一步扩展为联合glasso
模型,可以在一个统一的分析框架下,考察在同一个群体中多个性质的网络关系如何叠加和扩展。对于该问题,需要使用两个惩罚因子,一个惩罚因子用来控制所有子样本中的公共因子$\theta_{j,j^{'}}$的稀疏度,另一个惩罚因子用来控制子样本内部的稀疏度。朱等人(Zhu & Shen et al., 2014)所提的方案是为每一个子总体估计一个稀疏图结构,也同时估计跨子图的网络凝聚点。郭等人(Guo & Levina et al., 2011)使用分层罚模型估计来保留公共的图结构,同时允许组间差异。当$p\log\left( p \right)/n$趋向于0时,其中$p$为变量个数,$n$为样本规模,该方法可实现弗罗贝尼乌斯范数(Frobenius norm)收敛。但这也意味着当$p>n$时,并不能获得稳定的估计。
达纳赫等人(Danaher & Wang et al., 2014)提出两种联合估计算法,FGL
(fused Lasso)和GGL
(grouped Lasso)来使罚似然对数最大化,但并未给出其估计量统计收敛的理论验证。蔡天文等人(Cai & Li et al., 2015) 提出一个改进型模型(MPE)联合估计$K$个稀疏精度矩阵,并对其统计收敛属性给予了理论验证。
上述几种方法的视角是将网络边作为分析的核心,即假设网络中某些边是公共的或是特殊的。莫汉等人则提出一个以网络节点为核心的视角(Mohan & London et al., 2014),即某些节点的连结性在子图中具有共性,而另一些节点的连结性在不同子图中则具有特殊性。
本节的示例采用学术文献关键词关联网络,数据来自《社会学研究》和《社会》这两个杂志从2006年至2015年所发表的所有文章的关键词。在社会学研究文章中,关键词是体现一篇文章现实关注点、理论切入口和方法流派的重要指标。通过构建关键词关联网络,除了可以发现社会学研究中比较重要的核心关注要素之外,还可以比较这两个杂志在文章题材选择方面的偏好差异。在这个数据,共有1348篇文章,492个关键词。由于本示例主要为了展示模型特点,在此仅提供初步的模拟拟合结果。使用GGL
法拟合的结果表明《社会学研究》的关键词关联有79对,《社会》83对,其中两个杂志共同的关键词关联41对。如图3-5所示。
## 多分组罚似然图模型
## 本示例数据采用《社会学研究》和《社会》杂志2006年至2015年全部发表论文的关键词。
kw <- readRDS('soc_keywords.RDS')
lapply(kw, dim)
library(JGL)
jgl.grp<- JGL(Y = kw, penalty='group', screening= 'fast', penalize.diagonal = F,
lambda1=.001, lambda2=.001)
print.jgl(jgl.grp)
theta <- jgl.grp$theta
library(igraph)
K=length(theta)
adj = JGL:::make.adj.matrix(theta)
diag(adj)=0
gadj = graph.adjacency(adj, mode="upper", weighted=TRUE)
lay <- NULL
if (is.null(lay)) lay <- layout.fruchterman.reingold(gadj)
# class 1 class2 shared
# 38 42 41
table(E(gadj)$weight)
# 公共子图
gcomm <- igraph::delete.edges(gadj, which(E(gadj)$weight != 3))
plot(gcomm, layout=lay, vertex.size=0, vertex.color = 'white',
edge.color = 'black', main = "Common Network")
# 两个子图
nets <- JGL:::make.adj.matrix(theta, separate = TRUE)
for (k in 1:K) {
g1 <- graph.adjacency(nets[[k]], mode = "undirected", diag=F)
#png(filename = sprintf('x_keywords_%d.png', k), width = 800, height = 800)
plot.igraph(g1, layout = lay, vertex.color = 'white', vertex.size = 0,
edge.color = 'black', main = paste("Sub Network", k))
#dev.off()
}
图3:学术论文关键词关联网络(公共部分)
图4:学术论文关键词关联网络(社会学研究)
图5:学术论文关键词关联网络(社会)
更多的扩展
请见原文