在corrplot矩阵中添加p值

时间:2014-01-15 20:17:37

标签: r statistics correlation r-corrplot significance

我计算了两个矩阵之间的Spearman相关性,并且我正在使用corrplot绘制r值。如何仅绘制显着的相关性(因此只有那些p值低于0.00的相关性并删除那些具有较高p值的相关性,即使是强相关性 - r的高值)。我使用corr.test包中的psych生成了相关矩阵,因此我已经在cor.matrix$p中有p值

这是我正在使用的代码:

library(corrplot)
library(psych)
corr.test(mydata_t1, mydata_t2, method="spearman")
M <- corrplot(cor.matrix$r, method="square",type="lower",col=col1(100),is.corr=T,mar=c(1,1,1,1),tl.cex=0.5)

如何修改它以仅绘制重要的核心关系?

3 个答案:

答案 0 :(得分:6)

看一下corrplot的例子。做?corrplot。它可以选择做你想要的。 你可以在图表上绘制p值,我认为这比放星星更好, 因为不熟悉该术语的人还有一件事需要查阅。 将p值放在图上执行此corrplot(cor.matrix$r, p.mat = cor.matrix$p, insig = "p-value"),其中cor.matrix是保存cor.test结果的对象。 insig选项可以放置:

  • p值(如上所示)
  • 删除与corrplot无关紧要的相关性(cor.matrix $ r,p.mat = cor.matrix $ p,insig =“blank”)`
  • 用选项corrplot(cor.matrix$r, p.mat = cor.matrix$p, insig = "pch")(DEFAULT)划掉(放一个X)无关紧要的相关性
  • 使用corrplot(cor.matrix$r, p.mat = cor.matrix$p, insig = "n")
  • 对情节不做任何处理

如果你想在相关矩阵图上找到星号,p值 - 看一下这个帖子Correlation Corrplot Configuration

虽然我不得不说我非常喜欢@sven hohenstein's优雅的子集解决方案。

答案 1 :(得分:4)

创建cor.mat的副本,并将相应的相关系数替换为零:

cor.matrix2 <- cor.matrix

# find cells with p-values > 0.05 and replace corresponding
# correlations coefficients with zero
cor.matrix2$r[cor.matrix2$p > 0.05] <- 0

# use this matrix for corrplot
M <- corrplot(cor.matrix2$r, method="square",type="lower",col=col1(100),
              is.corr=T,mar=c(1,1,1,1),tl.cex=0.5)

替换后的值将显示为白色单元格。

答案 2 :(得分:1)

您所询问的内容与subset的内容类似:

  

返回满足的向量,矩阵或数据帧的子集   条件。

所以你可以这样做:

cor.matrix <- subset(cor.matrix, p<0.00)
P <- corrplot(cor.matrix$r, method="square",type="lower",col=col1(100),is.corr=T,mar=c(1,1,1,1),tl.cex=0.5)