【问题标题】:Two different p-values for one variable combination? corrplot::corrplot一个变量组合的两个不同 p 值? corrplot::corrplot
【发布时间】:2018-01-12 07:51:48
【问题描述】:

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

现在我找到了一些有用的东西here,关于如何做到这一点,乍一看,它进行得非常好。但后来我注意到 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”)绝对不是您在 corrplot 中看到的那个(“0.14”)。

这可能真的很愚蠢,我确信 (p<.0001>

【问题讨论】:

    标签: r correlation p-value r-corrplot


    【解决方案1】:

    通过使用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 函数。

    【讨论】:

    • 好吧,这是有道理的,但是我怎样才能从简单的corr.test(mtcars) 函数中获取 p 值到我的 corrplot 中?我猜是pvals &lt;- corr.test(mtcars, adjust="none")
    • 是的,无需更改任何其他内容。
    • 更新:效果很好。谢谢你,@AntoniosK。 :)
    • 但是,我仍然不确定为什么需要提取 M 的 p 值,如下所示:stackoverflow.com/questions/29709204/…
    • 感谢您的链接。 chart.correlation 似乎比 corrplot 更酷(就您可以打包到单个图表中的信息量而言)。以后一定会用到的……
    猜你喜欢
    • 1970-01-01
    • 2014-06-30
    • 2014-02-04
    • 2016-09-20
    • 2020-06-19
    • 2019-01-09
    • 2020-06-10
    • 1970-01-01
    • 2014-03-26
    相关资源
    最近更新 更多