在corrplot()中报告显着性级别

时间:2015-04-17 20:57:04

标签: r r-corrplot

我目前正在使用R中的corrplot()软件包中的corrplot,我偶然发现了两个问题。为简单起见,我将使用与corrplot的帮助/介绍页面相同的表示法。

  1. 我想在所有细胞中记录我的p值或测试的重要性(或两者!),而不仅仅是无关紧要的。

  2. 我只想在上三角形中使用这些铭文。

  3. 要解决2)首先,我已经能够使用它了,但如果感觉有点hacky:

    corrplot(M, type="upper", p.mat = res1[[1]], insig="p-value", tl.pos="n")
    corrplot(M, type="lower", add=T, tl.pos="d", cl.pos="n"))
    

    但是我无法弄清楚数字1.任何建议都会有所帮助!

1 个答案:

答案 0 :(得分:3)

快速方法是将sig.level=0添加到第一个图中,因此显示所有p值(实际上,由于数值精度,某些p值将精确为零,因此您可能需要将其设置为例如sig.level=-0.1

require(corrplot)

# Data
M <- mtcars[3:7]
pval <- psych::corr.test(M, adjust="none")$p

# Corrplot
corrplot(cor(M), type="upper", p.mat=pval, insig="p-value", 
                                               tl.pos="n", sig.level=0)
corrplot(cor(M), type="lower", add=T, tl.pos="d", cl.pos="n")

这给出了

enter image description here

但是,如果您想为p值添加更多细节,可能更容易对图表进行格式化并使用text调用添加它们

# Plot
corrplot(cor(M), type="upper", tl.pos="n")

# Get positions & plot formatted p-values
pos <- expand.grid(1:ncol(pval), ncol(pval):1)
text(pos, p_format(pval))

# lower tri
corrplot(cor(M), type="lower", add=T, tl.pos="d", cl.pos="n")

给予

enter image description here

格式化功能

p_format <- function(x, ndp=3)
{
  out <- format(round(as.numeric(x),ndp),ns=ndp,scientific=F,just="none")
  ifelse(out=="0.000","<0.0001", out)
}

我的观点(fwiw)是这会给情节添加太多信息