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

如何在R中找出相关矩阵中所有互相关联的行模块?

提取互相关系数超阈值的行模块实现方案

实现思路

要找出两两互相关系数均超过指定阈值的行组(即「团」,clique),可以借助图论工具:将每行视为节点,两两相关系数超阈值则视为节点间有连接,通过图论库提取最大团即可得到目标模块。

具体代码实现

1. 加载依赖包

首先使用igraph包处理图结构(若未安装需先执行安装命令):

# 安装igraph(首次运行时执行)
# install.packages("igraph")
library(igraph)

2. 基于样本数据处理

沿用你提供的矩阵生成与相关系数计算代码,接着执行以下步骤:

# 设定阈值
threshold <- 0.2

# 构建邻接矩阵:仅保留两两相关系数>阈值的边,对角线设为0(排除自身关联)
adj_mtx <- cor_mtx
diag(adj_mtx) <- 0
adj_mtx[adj_mtx <= threshold] <- 0
adj_mtx[adj_mtx > threshold] <- 1

# 转换为无向图对象
g <- graph_from_adjacency_matrix(adj_mtx, mode = "undirected", weighted = FALSE)

# 提取所有最大团(无法再添加新节点的完整关联组)
max_cliques <- max_cliques(g)

# 转换为行名列表,并筛选出包含至少2个行的组
clique_groups <- lapply(max_cliques, function(clique) V(g)$name[clique])
clique_groups <- Filter(function(x) length(x) >= 2, clique_groups)

3. 查看结果

运行上述代码后,clique_groups会返回符合要求的行模块。针对你的样本数据,输出为:

> clique_groups
[[1]]
[1] "r1" "r5" "r8"

你可以进一步验证组内的相关系数:

cor_mtx[clique_groups[[1]], clique_groups[[1]]]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 23:18:19