5

我计算了两个矩阵之间的 Spearman 相关性,并使用 绘制了 r 值corrplot。我怎样才能只绘制显着的相关性(所以只有那些 p 值低于 0.00 的相关性并删除那些具有较高 p 值的相关性,即使是强相关性 - r 的高值)。corr.test我使用in包生成了相关矩阵psych,所以我已经有了 p 值cor.matrix$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)

如何修改它以仅绘制显着的相关性?

4

3 回答 3

8

看一下 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优雅的子集解决方案。

于 2014-01-15T21:57:18.950 回答
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)

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

于 2014-01-15T20:58:19.240 回答
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)
于 2014-01-15T20:42:52.360 回答