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

如何基于节点属性模拟ERGM分布的网络?

模拟带节点属性的ERGM网络实现方案

你需要先创建带有节点属性的初始网络对象,nodematch这类依赖节点属性的统计量,必须先给节点分配好属性,再在模型公式中明确指定要匹配的属性名称。以下是完整实现步骤:

步骤1:构建带节点属性的初始网络

library(ergm)

# 设定节点数量
n <- 50

# 创建空的无向网络
g_initial <- network(n, directed = FALSE)

# 给节点添加目标属性,比如分组属性"group",随机分成2组
set.vertex.attribute(g_initial, "group", sample(c(1,2), n, replace = TRUE))

步骤2:定义ERGM模型并模拟网络

nodematch必须指定具体属性名(例如nodematch("group")),同时coef向量的长度要和模型中的统计量数量一一对应:

  • triangles的系数控制三角闭合的倾向(正数表示更易形成三角)
  • nodematch("group")的系数控制同属性节点连边的倾向(正数表示同组节点更易相连)

示例代码:

# 设定系数向量,顺序与公式中统计量的顺序一致
thetas <- c(1, 0.8) # 前者对应triangles,后者对应nodematch("group")

# 执行模拟
g_sim <- simulate(g_initial ~ triangles + nodematch("group"),
                  nsim = 1,
                  coef = thetas)

验证模拟结果

可以通过以下代码检查网络的属性与结构特征:

# 查看节点属性
get.vertex.attribute(g_sim, "group")

# 统计网络中的三角数量
summary(g_sim ~ triangles)

# 统计同组节点的连边匹配度
summary(g_sim ~ nodematch("group"))

关键注意事项

  • 初始网络的边结构不影响最终模拟结果(ERGM基于统计量分布生成网络,初始结构仅作为MCMC的起点),但节点属性必须预先定义完成。
  • 若需多属性匹配或属性与三角的交互效应,可扩展公式为~ triangles + nodematch("group") + nodematch("age")或~ triangles * nodematch("group"),同时对应调整coef向量的长度。

内容的提问来源于stack exchange,提问作者Tendero

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 22:15:35