在R中基于Gould Fernandez经纪角色分析定位具体经纪三元组
如何定位Gould-Fernandez经纪角色对应的具体三元组?
我正在使用R语言sna包中的brokerage(g, attribute)函数对网络进行Gould-Fernandez经纪角色分析,希望找到这些经纪角色对应的具体三元组,进一步分析alter-ego-alter关系。请问有什么方法可以识别这些具体的三元组?
可复现代码示例
g2 <- make_graph(~ A --+ B:D, B --+ D:F, C--+B , D--+A:B:F:E, E--+ D, F--+ A:E:G, G--+ F) type<-c("one","two","three","one","two","three","one") vertex_attr(g2,"type")<-type g2_N<-intergraph::asNetwork(g2) brokerage_roles<-brokerage(g2_N,type) brokerage_roles$raw.nli
运行后得到以下经纪角色输出:
w_I w_O b_IO b_OI b_O t A 0 0 2 0 0 2 B 0 1 2 0 0 3 D 0 1 3 2 1 7 F 1 0 1 3 1 6 C 0 0 0 0 0 0 E 0 0 0 1 0 1 G 0 0 0 0 0 0
比如我想找出节点A在2个b_IO三元组中具体连接的哪些alter,以及它们的type属性。样本网络容易手动识别,但我的实际数据集包含125个节点,需要自动化的解决方案。
已尝试方法
我曾尝试枚举所有可能的三元组,基于三元组普查术语分类后筛选开放三元组,但结果与经纪角色分析不匹配,该方法存在问题。尝试的代码如下:
node_triad_census(g2_N) triads <- combn(1:network.size(g2_N),3, simplify = F) # 生成所有可能的三元组组合 triad_census_test <- lapply(1:length(triads), function(x) triad.classify(g,tri=triads[[x]])) # 为每个三元组分类 triads <- data.frame(matrix(unlist(triads), nrow=length(triads), byrow=T), triad = unlist(triad_census_test)) # 给每个三元组添加分类标签 open_triads <- triads[which(triads$triad == "021D" | # 筛选开放三元组 triads$triad == "021U" | triads$triad == "021C" | triads$triad == "111D" | triads$triad == "111U" | triads$triad == "201"),]
内容的提问来源于stack exchange,提问作者AnCo
相关产品推荐
相关产品推荐

