【问题标题】:How do I interpret the output of corrplot?如何解释 corrplot 的输出?
【发布时间】:2014-08-09 12:44:12
【问题描述】:

corrplot 软件包提供了一些简洁的图表和文档以及示例。

但我不明白输出。我可以看到,如果您有一个矩阵A_ij,您可以将其绘制为nn 方形瓷砖的排列,其中瓷砖ij 的颜色对应于A_ij 的值。但有些例子似乎有更多维度:

在这里我们可以猜测颜色表示相关系数,椭圆的方向是负/正相关。什么是偏心?

methoddocumentation 表示:

要使用的相关矩阵的可视化方法。目前,它支持七种方法,分别命名为“圆形”(默认)、“方形”、“椭圆”、“数字”、“饼图”、“阴影”和“颜色”。有关详细信息,请参阅示例。

圆形或正方形的面积表示相应相关系数的绝对值。方法“pie”和“shade”来自 Michael Friendly 的工作(对添加的阴影进行了一些调整),“ellipse”来自 D.J.默多克和 E.D. Chow 的工作,请参阅参考资料部分。

所以我们知道圆形和正方形的面积应该显示系数。其他维度,其他方法呢?

【问题讨论】:

  • 您是否阅读了您提供的链接?比较相关性等于 1 和相关性等于 0.2 时的形状。颜色是相关系数。我同意这个情节提供的信息存在冗余。

标签: r plot statistics data-visualization r-corrplot


【解决方案1】:

图中只显示了一个维度。

Michael Friendly,在 Corrgrams:相关矩阵的探索性展示corrplot 文档混淆地将此称为他的“工作”)中说:

在阴影行中,每个单元格根据相关性的符号呈蓝色或红色阴影,并且颜色强度与相关性的大小成比例地缩放 0-100%。 (使用从红色(1,0,0)到白色(1,1,1)到蓝色(0,0,1)的RGB编码很容易计算出这种缩放的颜色。为简单起见,我们忽略了非线性颜色再现和感知,但请注意,这些很容易在颜色映射函数中适应。)添加了白色对角线,以便在黑白中仍然可以辨别相关方向。选择这种双极颜色标度以使相关性接近 0 为空(白色),并使等量级的正值和负值大致相同强烈地着色。灰度和其他配色方案在我们的软件中实现(第 6 节),但此处未说明。

条形和圆形符号也使用相同的缩放颜色,但填充的区域与相关性的绝对值成比例。对于条形,负值从底部填充,正值从顶部填充。圆圈顺时针填充正值,逆时针填充负值。 椭圆的偏心率参数化地缩放到相关值(Murdoch 和 Chow,1996 年)。 在感知上,它们具有随着相关幅度的增加而在视觉上变得不那么突出的特性,与其他的相反字形。

(强调我的)

“Murdoch and Chow, 1996”是描述绘制椭圆的方程的出版物(大相关矩阵的图形显示)。椭圆显然是对二元正态分布的讽刺:

因此,总而言之,显示的唯一维度始终是相关系数(或A_ij 的值,使用问题的术语)本身。多个表观维度是多余的。

【讨论】:

  • 不错的发现。数学也转化为 R 代码。但是,多维是什么?
  • @asb 几何形状的各个方面,如颜色、大小、偏心度(如果是椭圆)、旋转、阴影、高度、填充百分比(如果是饼图)可以说是表示数据的维度。
【解决方案2】:

我认为情节是不言自明的。在右侧有scale,它的颜色从红色(负相关)到蓝色(正相关)。颜色会根据相关性的强度呈渐变。

如果椭圆向右倾斜,则再次为正相关,如果向左倾斜,则为负相关。

围绕一条线的扩散(表示完美的相关性,例如 mpg ~ mpg)创建一个椭圆。对于较低强度的相关性,您将有一个更分散的椭圆。这通常是弱相关关系在散点图中的外观。然而,我认为这些都是漫画。

这是来自corrplot 函数的一些代码,该函数负责绘制椭圆。我不打算解释这一点(因为它是更大系统的一部分)。如果您想深入研究,我想表明逻辑就在那里:

if (method == "ellipse" & plotCI == "n") {
    ell.dat <- function(rho, length = 99) {
        k <- seq(0, 2 * pi, length = length)
        x <- cos(k + acos(rho)/2)/2
        y <- cos(k - acos(rho)/2)/2
        return(cbind(rbind(x, y), c(NA, NA)))
    }
    ELL.dat <- lapply(DAT, ell.dat)
    ELL.dat2 <- 0.85 * matrix(unlist(ELL.dat), ncol = 2, 
        byrow = TRUE)
    ELL.dat2 <- ELL.dat2 + Pos[rep(1:length(DAT), each = 100), 
        ]
    polygon(ELL.dat2, border = col.border, col = col.fill)
}

【讨论】:

  • 你所说的“扩散”是如何计算的?
  • @Superbest:我认为您应该先绘制一些没有包的相关变量。它会让您很好地了解散点图应该是什么样子。
猜你喜欢
  • 1970-01-01
  • 2021-06-01
  • 2014-02-03
  • 2018-09-16
  • 2018-09-09
  • 1970-01-01
  • 2015-11-11
  • 2016-08-18
  • 2011-09-14
相关资源
最近更新 更多