You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 09:02:41