Reporting significance level in corrplot()

爷,独闯天下 提交于 2019-11-28 05:55:27

问题


I'm currently using corrplot() from the corrplot package in R and I've stumbled across two problems. For simplicity, I'll use the same notation as the help/introduction page for corrplot.

  1. I'd like to inscribe either my p-value or how significant the test was (or both!) in all cells, not just the insignificant ones.

  2. I'd like these inscriptions only in the upper triangular.

To address 2) first, I've been able to use this, but if feels kind of 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"))

However I haven't been able to figure out number 1. Any suggestions would be helpful!


回答1:


The quick way is to add sig.level=0 to the first plot, so all p-values are shown (actually, due to numerical precision some p-values will be exactly zero, so you may need to set it to sig.level=-0.1, for example)

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

This gives

However, if you want to add more detail to the p values it is probably easier to post-format the plot and add them using a text call

# 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")

To give

Format function

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

My view (fwiw) is that this is adding too much info to the plot



来源:https://stackoverflow.com/questions/29709204/reporting-significance-level-in-corrplot

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!