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

使用mgm包中estimateNetwork函数报错,求解决方案

问题解决建议

你的错误根源是混淆了mgm包与bootnet包的函数用途,以及参数使用错误:

  • estimateNetwork()是bootnet包的函数,它的reg参数仅支持该包内置的估计器(如"glasso"、"EBICglasso"、"pcor"等),并不支持mgm包的"mgl"正则化方法,因此会触发调用估计器失败的错误。
  • 混合图形模型的核心估计函数是mgm包的mgm(),而非bootnet的estimateNetwork()。

正确步骤:

1. 用mgm()估计混合图形模型

首先需要明确数据中变量的类型(连续/分类),这是混合模型必需的参数:

library(haven)
library(mgm)

# 读取数据
flordiss <- read_sav("C:/Users/schul/OneDrive/Desktop/flordiss.sav")

# 定义变量类型:连续变量标记为1,分类变量标记为2
var_types <- apply(flordiss, 2, function(x) if (is.numeric(x) && length(unique(x)) > 5) 1 else 2)
# 若有分类变量,需指定每个分类变量的水平数(示例:假设所有分类变量都是二元)
var_levels <- ifelse(var_types == 2, 2, 1)

# 估计混合图形模型
# 单组数据用regMethod="glasso","mgl"是多组数据专用的正则化方法
my_model <- mgm(data = as.matrix(flordiss),
                type = var_types,
                level = var_levels,
                lambdaSel = "EBIC", # 正则化参数选择方法
                regMethod = "glasso")

2. 提取邻接矩阵并计算网络指标

从mgm模型结果中提取权重邻接矩阵后,可使用bootnet或qgraph计算网络指标:

library(bootnet)
library(qgraph)

# 提取邻接矩阵
adj_matrix <- my_model$wadj

# 方法1:用bootnet计算中心性指标
net_obj <- as.network(adj_matrix, directed = FALSE)
centrality_results <- centrality(net_obj)
print(centrality_results)

# 方法2:用qgraph可视化并计算指标
qgraph(adj_matrix, layout = "spring")
centrality_auto(adj_matrix)

额外说明

  • 若你确实需要使用多组LASSO("mgl"),则需要确保数据是多组结构(如包含分组变量),并调整mgm()的分组参数(group),而非在bootnet的estimateNetwork()中使用该参数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 22:42:34