在 corrplot() 中报告显着性水平

Reporting significance level in corrplot()

我目前正在使用 R 中 corrplot 包中的 corrplot(),我偶然发现了两个问题。为简单起见,我将使用与 help/introduction 页面相同的符号表示 corrplot。

  1. 我想在所有单元格中写下我的 p 值或测试的重要性(或两者!),而不仅仅是无关紧要的单元格。

  2. 我只想要这些铭文在上三角。

首先要解决 2),我已经能够使用它,但如果感觉有点不对劲:

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。任何建议都会有所帮助!

快速的方法是将 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")

这给了

但是,如果您想向 p 值添加更多细节,则可能更容易 post 格式化绘图并使用 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")

给予

格式化函数

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)
}

我的观点 (暂时) 是这给情节添加了太多信息