如何根据指定相关系数阈值从相关矩阵中提取对应变量名
相关矩阵高相关变量提取(R语言实现)
核心实现代码
首先构造你给出的示例相关矩阵,再执行变量提取逻辑:
# 1. 构造示例相关矩阵(如果已经有现成相关矩阵可跳过这一步) cor_mat <- matrix( c(1.0000000, 0.9947082, 0.9879702, 0.8716944, 0.9947082, 1.0000000, 0.9955145, 0.8785669, 0.9879702, 0.9955145, 1.0000000, 0.8621052, 0.8716944, 0.8785669, 0.8621052, 1.0000000), nrow = 4, byrow = TRUE, dimnames = list( c("M926T709", "M927T709_1", "M927T709_2", "M929T709"), c("M926T709", "M927T709_1", "M927T709_2", "M929T709") ) ) # 2. 设置相关系数阈值 threshold <- 0.95 # 3. 屏蔽对角线自相关值(等于1的部分) diag(cor_mat) <- 0 # 4. 提取高相关变量,输出为字符向量 high_cor_index <- which(cor_mat > threshold, arr.ind = TRUE) high_cor_vars <- unique(c( rownames(cor_mat)[high_cor_index[,1]], colnames(cor_mat)[high_cor_index[,2]] ))
输出结果验证
打印输出的向量high_cor_vars即可得到你需要的结果:
print(high_cor_vars) # 输出结果: # [1] "M927T709_1" "M927T709_2" "M926T709"
如果需要输出逗号分隔的字符串格式,可额外执行以下代码:
paste(high_cor_vars, collapse = " , ") # 输出结果: # [1] "M927T709_1 , M927T709_2 , M926T709"
内容的提问来源于stack exchange,提问作者Reda
相关产品推荐
相关产品推荐

