我计算了两个矩阵之间的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)
如何修改它以仅绘制重要的核心关系?
答案 0 :(得分:6)
看一下corrplot的例子。做?corrplot
。它可以选择做你想要的。
你可以在图表上绘制p值,我认为这比放星星更好,
因为不熟悉该术语的人还有一件事需要查阅。
将p值放在图上执行此corrplot(cor.matrix$r, p.mat = cor.matrix$p, insig = "p-value")
,其中cor.matrix是保存cor.test结果的对象。
insig
选项可以放置:
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)