为什么白色 bg 在 corrplot 中具有 Spearman 相关性?
Why white bg with Spearman correlation in corrplot?
当 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) { #
x <- p.mat.all[[ID]]
corrplot( M.cor,
p.mat = x,
sig.level = alpha,
insig = "blank",
)
})
我明确地放在那里 diag = T
但没有它也应该没问题。
图1 最小示例的输出
没有警告。
R: 3.3.1
OS:Debian 8.5
开发商门票:#74
这是软件中的错误。已举报给开发者。
另见相关 github 问题:https://github.com/taiyun/corrplot/issues/74,简短引用 vsimko:
This looks like a problem in psych::corr.test and not in 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 输出
当 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) { #
x <- p.mat.all[[ID]]
corrplot( M.cor,
p.mat = x,
sig.level = alpha,
insig = "blank",
)
})
我明确地放在那里 diag = T
但没有它也应该没问题。
图1 最小示例的输出
没有警告。
R: 3.3.1
OS:Debian 8.5
开发商门票:#74
这是软件中的错误。已举报给开发者。
另见相关 github 问题:https://github.com/taiyun/corrplot/issues/74,简短引用 vsimko:
This looks like a problem in psych::corr.test and not in 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 输出