如何基于p值条件替换Spearman相关矩阵中的数值
解决mtcars数据集Spearman相关矩阵的显著性修正问题
步骤1:加载依赖包
cor.mtest函数来自corrplot包,先加载它:
library(corrplot)
步骤2:计算Spearman相关矩阵与p值矩阵
# 计算mtcars的Spearman相关矩阵 matcor <- cor(mtcars, method = "spearman") # 计算对应的p值矩阵 testRes <- cor.mtest(mtcars, method = "spearman")
步骤3:修正相关矩阵(将p≤0.05的位置替换为0)
你的原代码逻辑条件搞反了,且ifelse会自动将矩阵转为向量,需重新还原为矩阵格式:
# 核心修正逻辑:p≤0.05的位置设为0,其余保留原相关值 newcor <- ifelse(testRes$p <= 0.05, 0, matcor) # 转换回矩阵并保留行列名 newcor <- matrix(newcor, nrow = nrow(matcor), ncol = ncol(matcor)) colnames(newcor) <- colnames(matcor) rownames(newcor) <- rownames(matcor)
步骤4:绘制修正后的相关热力图
corrplot(newcor, method = "color", type = "upper", tl.col = "black", tl.srt = 45)
内容的提问来源于stack exchange,提问作者Ana Paula Castro
相关产品推荐
相关产品推荐

