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

运行HERGM与MLERGM模型报错:原因排查及解决方法咨询

HERGM与MLERGM模型报错:invalid 'times' argument 排查与解决

错误信息

Error in rep(" ", max_char - num_chars[i]) : invalid 'times' argument
附加警告信息:In max(num_chars) : no non-missing arguments to max; returning -Inf

问题场景

实际使用含5969个节点及解释变量的大型网络数据集,以下是可复现的小型测试代码:

library(mlergm)
library(hergm)

# HERGM测试代码
my_sociomatrix <- matrix(round(runif(20*20)), 
                         nrow = 20, 
                         ncol = 20)

test.network <- 
  network(x = my_sociomatrix,
          directed = F, matrix.type = "adjacency")

test.model <- 
  hergm(test.network ~ 
          edges_ij,
        max_iter = 4,
        method = "ml")

# MLERGM测试代码
my_sociomatrix <- matrix(round(runif(30*30)),
                         nrow = 30,
                         ncol = 30)
node_memb <- c(rep(1, 10), rep(2, 10), rep(3, 10))
mlnet <- mlnet(network = my_sociomatrix, 
               node_memb = node_memb)
model_est <- mlergm(mlnet ~ edges)

错误原因

这个错误本质是模型在格式化输出日志/结果时,尝试计算统计量名称的字符长度最大值,但因模型无法识别指定的统计量,导致num_chars为空数组,max(num_chars)返回-Inf,进而max_char - num_chars[i]得到负数,传给rep()的times参数无效。

针对HERGM的具体原因

hergm包中没有edges_ij这个统计量,正确的边统计量是edges。错误的统计量名称会导致模型无法生成有效统计量列表,触发后续的输出格式化错误。

针对MLERGM的具体原因

  1. 部分场景下,mlergm在处理网络时,若统计量生成异常(或无有效统计量),会触发同样的输出格式化错误;
  2. 大型网络下,默认的详细输出逻辑可能因内存或字符计算溢出导致错误。

解决方法

HERGM修复方案

  1. 修正统计量名称:将模型公式中的edges_ij替换为edges,这是hergm支持的标准边统计量:
test.model <- 
  hergm(test.network ~ 
          edges,
        max_iter = 4,
        method = "ml")
  1. 大型网络适配:对于5969节点的网络,建议先使用小样本验证公式正确性,再逐步扩展;同时可调整max_iter参数,避免不必要的迭代消耗资源。

MLERGM修复方案

  1. 禁用详细输出:在mlergm()中添加verbose = FALSE参数,跳过可能触发错误的格式化输出逻辑:
model_est <- mlergm(mlnet ~ edges, verbose = FALSE)
  1. 验证网络与分组匹配:确保node_memb的长度与网络节点数完全一致(实际数据中需重点检查);
  2. 大型网络优化:先抽取小部分节点测试模型,确认公式和参数无误后,再运行全量数据;必要时可通过memory.limit(size = ...)调整R的内存分配上限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 14:36:15