【问题标题】:Why white bg with Spearman correlation in corrplot?为什么在 corrplot 中带有 Spearman 相关的白色 bg?
【发布时间】:2016-11-10 16:56:15
【问题描述】:

当 Spearman cor r 时,第一个对角线背景始终为白色。 其他 cor 措施永远不会发生这种情况。

library("psych")
library("corrplot")   

M <- mtcars 
M.cor <- cor(M)

p.mat.all <- psych::corr.test(M.cor, adjust = "none", ci = F)

alpha <- 0.05

col <- colorRampPalette(c("#BB4444", "#EE9988", "#FFFFFF", "#77AADD", "#4477AA"))  

lapply(c("r","p","t"), function(ID) { # http://stackoverflow.com/a/40531043/54964
    x <- p.mat.all[[ID]]    
    corrplot( M.cor, 
              p.mat = x, 
              sig.level = alpha, 
              insig = "blank", 
    ) 
})

我明确地把diag = T放在那里,但没有它也应该没问题。

图。 1 最小示例的输出

没有警告。

R:3.3.1
操作系统:Debian 8.5
开发者票:#74

【问题讨论】:

  • head(warnings()) 说了什么?
  • 我收到 Error in paste(title, " cor ", ID, " significant coefficients marked, p-value &lt; ", : cannot coerce type 'closure' to vector of type 'character' - 也许我遇到了复制粘贴错误?
  • @BenBolker 已修复,请看正文。
  • @BenBolker 我现在放了一个案例的最小示例。

标签: r lapply correlation r-corrplot


【解决方案1】:

这是软件中的错误。报告给开发者。

另见相关 github 问题:https://github.com/taiyun/corrplot/issues/74,简称 vsimko:

这看起来像是 psych::corr.test 中的问题,而不是 corrplot 中的问题

p.mat.all <- psych::corr.test(M.cor, adjust = "none", ci = F)
diag(p.mat.all$r) # produces 1
diag(p.mat.all$p) # produces 0
diag(p.mat.all$t) # produces Inf

解决方法

par(mfcol = c(1, 3))
M <- cor(mtcars)
p.mat.all <- psych::corr.test(M, adjust = "none", ci = FALSE)

for (ID in c("r", "p", "t")) {
  x <- p.mat.all[[ID]]
  diag(x) <- 0 ### THE WORKAROUND IS HERE ###
  corrplot( M, p.mat = x, sig.level = .05, insig = "blank") 
}

图。 1 个输出

【讨论】:

  • @Viliam Simko 你能解释一下解决方法吗?
  • 好的,因为psych::corr.test 函数产生具有不同对角线的矩阵,所以我使用diag(x) &lt;- 0 调用明确地将对角线始终设置为零。这样,corrplot 显示了所有三个对角线,如上图所示(图 1 输出)。
猜你喜欢
  • 2020-10-02
  • 1970-01-01
  • 1970-01-01
  • 2018-05-09
  • 2013-10-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-16
  • 2018-02-01
相关资源
最近更新 更多