一个变量组合有两个不同的 p 值? corrplot::corrplot

Two different p-values for one variable combination? corrplot::corrplot

我想对我的数据进行 corrplot(我使用的包,令人惊讶的是 {corrplot})并在其中显示成对相关的 p 值。

现在我发现了一些有用的东西 关于如何做到这一点,乍一看,它进行得非常顺利。但后来我注意到 p 值完全奇怪,它们与 cor.test().

中的实际 p 值不对应

我已经发现(使用示例性数据)这不是我的数据造成的,而是我尝试包含 p 值的代码出错了。

所以这是一个可重现的例子:

#using built-in r-data:
data("mtcars")

#now for the corrplot:
M = cor(mtcars, use="complete.obs")
pval <- corr.test(M, adjust="none")$p
corrplot(M, method = "color", type = "upper", 
     order = "original", tl.col = "black", tl.srt = 45,
     family="serif", p.mat=pval, insig="p-value", sig.level=0)

这是我得到的:

(didn't let me upload the file, so you have to click the link...)

无论如何,为了说明这些不是实际的 p 值,让我们取一对,即 "qsec" 和 "drat":

cor.test(mtcars$qsec, mtcars$drat, use="complete.obs")

由此产生的 p 值 ("p-value = 0.6196") 绝对不是您在校正图中看到的值 ("0.14")。

这可能真的很愚蠢,我确信 (p<.0001) 我忽略了一些东西 - 但我不知道它是什么。有帮助吗?

通过使用 corr.test(M, adjust="none"),您将矩阵 M 传递给函数。矩阵 M 与您拥有的数据不同。尝试使用 corr.test(mtcars, adjust="none") 代替。您需要传递您的实际数据集,而不是相关矩阵。

如果您检查 data.frame(M) 的样子,您会发现您的 drat 变量有 11 个值,这些是 drat 和其余变量的相关性。但是,您希望 drat 成为 mtcars 中具有 32 个值的 drat 列。

您可以将相关矩阵 M 传递给 corrplot 函数,但不能传递给 corr.test 函数。