【问题标题】:What's a good strategy to get a decent overview of big correlation matrices or pairs?什么是获得大相关矩阵或对的良好概述的好策略?
【发布时间】:2011-09-29 12:20:34
【问题描述】:

通常一些data.frame 包含 20 多个变量,您希望获得第一个概览(相关结构)。即使在 30 英寸的屏幕上,您也会很快耗尽空间,并且仍然难以掌握信息。是否有任何既定的策略来突出重要的内容?我知道这个问题有点笼统,但我一遍又一遍地想知道,从来没有治愈它的灵丹妙药。是的,我听说过summary

【问题讨论】:

  • 添加到 Dirk 的答案中,我又找到了一个链接 oga-lab.net/RGM2/func.php?rd_id=MKmisc:corPlot
  • 这里有个懂树状图的人。 :) 这是另一种有用的方法。
  • 谁知道? :) 。我也喜欢它们,但经常发现给它们贴上很好的标签很麻烦,而且在哪里切割它们有点违反直觉。也许我只是缺乏经验。但是,是的,我愿意了解更多...
  • 是安德烈,但我没见过他。我相信他有一个树状图包,但他或其他人可能会建议从哪里开始。
  • 我知道hclust 可以画它们……但希望他能出现在这里。

标签: r


【解决方案1】:

好吧,我只需要在这里发布我自己的包裹:)

您可以使用qgraph 将相关矩阵可视化为网络。这会将变量绘制为节点,将相关性绘制为连接节点的边。绿色边缘表示正相关,红色边缘表示负相关。边缘越宽越饱和,绝对相关性越强。

例如(这是帮助页面的第一个示例),以下代码将绘制 240 个变量数据集的相关矩阵。

library("qgraph")
data(big5)
data(big5groups)
qgraph(cor(big5),minimum=0.25,cut=0.4,vsize=2,groups=big5groups,legend=TRUE,borders=FALSE)
title("Big 5 correlations",line=-2,cex.main=2)

您还可以将高度相关的节点聚集在一起(使用 Fruchterman-Reingold),这样可以非常清晰地显示相关矩阵的结构实际上是什么样的:

还有更多。有关更多示例,请查看我的网站:

http://sachaepskamp.com/?page_id=73

【讨论】:

  • +1 因为这看起来很引人注目。这是艺术人。对我来说非常罕见,但值得一看。不知何故,它提醒了这些群体的一些因素分析,但我绝对需要 RTFM。感谢发帖!
【解决方案2】:

为此,我使用了heatmap()(或者,更确切地说,底层的image() 函数)。我手头没有代码了,我记得我不得不摆弄颜色图以获得对 [-1, 1] 范围有意义的东西。

这是一个简单的例子:

R> set.seed(42)
R> X <- matrix(rnorm(100*20), nrow=100)
R> XC <- cor(X)
R> image(XC)        # color range could do with improvements here

您可以通过消隐一个下部或上部三角形并将文本放在那里来玩更多的技巧。 PerformanceAnalytics 包有一个函数 chart.Correlation() 可以做到这一点(来自原始数据矩阵),但它要慢得多,并且不会根据您的原始问题扩展到 large 矩阵。我敢肯定还有其他人......

【讨论】:

  • 谢谢!现在我看到它开始记得有一个很好的例子,甚至涉及篮球flowingdata.com/2010/01/21/…。你对这样的标签有什么建议吗?
  • 对不起,我不明白你的问题。您链接到的帖子对他们所做的事情进行了完整的介绍,是的,它还涉及 heatmap() 和 image()。
  • 是的,你是对的。当我发布最初的问题时。我忘记了帖子。当我看到你的图形时,一切都回来了。视觉识别:)。另外,这个问题对其他人来说似乎很有趣,并且出现了进一步的概念(如角度)。然而你是对的,评论中的子问题很愚蠢。
【解决方案3】:

使用pairs,您可以快速生成一些散点图矩阵。如果存在太多变量,您可以使用 Rattle 的工具:

其他示例:http://rattle.togaware.com/rattle-screenshots.html

事实上,rattle 本身并没有进行大部分分析(正如 dwin 正确指出的那样),但它提供了(恕我直言)简单的工具来快速运行 pca、相关树、相关矩阵,而无需操作数据集以确保数据集中只有数字变量,...

【讨论】:

  • 嗯,很久以前尝试过嘎嘎声,但它没有嘎嘎嘎嘎作响,也许是时候再考虑一下了。不过你的截图看起来不错。
  • 该屏幕截图也可以在 Sarkar 的“Lattice”书中看到,因此不需要嘎嘎作响。参见lmdvr.r-forge.r-project.org/figures/figures.html 中的图 13.5 和 13.6
【解决方案4】:

对相关矩阵进行 PCA 怎么样? 然后变量之间的角度显示它们的相关性。

library(HSAUR)
heptathlon
round(cor(heptathlon[,-8]),2)   # correlations [without score]

require(vegan)
PCA <-  rda(heptathlon[,-8], scale=TRUE)   # run a PCA
biplot(PCA, display = "species")   # correlation biplot
#  The angles between descriptors in the biplot reflect their correlations

【讨论】:

  • 你能提供一两个链接来描述这个吗?我尝试了Wikipedia page,但在它的密集度和我的之间,流动的信息并不多。
  • 很好,我的问题很笼统。但当然,我也有一个特殊的问题。在这种情况下,我试图找出哪些滞后适合包含在因子分析中,而不仅仅是在相应的“原始”因子上施加更多负载。但是,角度是一个非常好的主意+1。为什么不使用princomp或者你不是在谈论主要组件?
  • princomp() 将给出与 rda() 相同的结果。我刚刚使用 rda(),因为我目前正在使用(很棒的)素食包。
  • 链接:stackexchangeHolland
【解决方案5】:

通常,矩阵的列结构可以以随机顺序呈现。在这种情况下,我希望进行一些重新排序。为了可视化和使用稀疏矩阵,我经常进行某种重新排序,例如 Reverse Cuthill-McKee 或其他形式的带宽重新排序,这可以应用于其他上下文以使可视化更容易。

对于相关矩阵,您可以压缩低幅度相关(例如,在 (-eps,+eps) 内)以创建稀疏性,然后重新排序以检查结构。

如果你能找到相关对象的块,那就太好了。这种重新排序加上热图(对负相关使用一种颜色梯度,对正相关使用另一种颜色梯度)非常有帮助。

【讨论】:

  • 我喜欢 make 稀疏以检测相关结构 的想法。有时我们想要高、低或接近零。想编写一些代码吗? ;-)
  • @DirkEddelbuettel 是什么让你认为我知道如何编写 R 代码? :) 我会看看。我的矩阵重新排序代码不在 R 中,但我看到有一些包提供它。
猜你喜欢
  • 2013-02-03
  • 1970-01-01
  • 1970-01-01
  • 2011-09-28
  • 1970-01-01
  • 2011-03-29
  • 1970-01-01
  • 2011-12-22
  • 1970-01-01
相关资源
最近更新 更多