基于显著性检验在qgraph中抑制边时的报错与方案咨询
搞定qgraph显著边绘制的问题
嘿,我来帮你梳理下你遇到的这个问题:
为啥会报错?
你用graph = "sig"参数时触发的报错其实很直白——qgraph的graph参数根本没有"sig"这个可选值!它只接受报错提示里列的那些选项:'default', 'cor', 'pcor', 'assosciation', 'concentration', 'glasso' or 'factorial'。大概率是你把其他工具的参数或者qgraph里的其他功能记混啦~
正确绘制仅显著边的方法
其实你现在用的OmitInsig = T完全不是临时方案,它就是qgraph官方推荐的过滤不显著边的标准方法之一!除此之外还有更灵活的手动处理方式,给你两种选择:
方法1:用OmitInsig+pmat(最省心)
当你传入相关矩阵(比如你的gm_cor)时,只要搭配pmat参数传入对应的p值矩阵,再打开OmitInsig = TRUE,qgraph就会自动帮你把不显著的边去掉:
# 假设你已经计算出了对应的p值矩阵gm_p qgraph(gm_cor, pmat = gm_p, OmitInsig = TRUE, layout = "spring", diag = FALSE)
要是没传pmat,qgraph会自动基于样本量估算显著性,但更建议你手动传入自己计算的p值矩阵,结果会更精准。
方法2:手动构建仅含显著边的矩阵(自由度更高)
如果你想自己掌控哪些边保留,可以先把不显著的边对应的相关系数设为0,再传入qgraph绘制:
# 设定显著性阈值,比如0.05 sig_threshold <- 0.05 # 把p值大于阈值的边对应的相关系数置为0 sig_only_cor <- gm_cor sig_only_cor[gm_p > sig_threshold] <- 0 # 绘制仅含显著边的网络图 qgraph(sig_only_cor, layout = "spring", diag = FALSE)
这种方法适合你需要自定义阈值或者对边做额外筛选的场景。
总结一下
graph="sig"不是qgraph的合法参数,这就是报错的核心原因。而你目前用的OmitInsig = T完全是正式且靠谱的方案,放心用就好啦~
内容的提问来源于stack exchange,提问作者herbert
相关产品推荐
相关产品推荐

