如何显示缺少条目的相关矩阵?


10

我想在到目前为止收集的文章中获得相关性的图形表示,以方便地探索变量之间的关系。我曾经画过一个(混乱的)图,但是现在数据太多了。

基本上,我有一张桌子,上面有:

  • [0]:变量1的名称
  • [1]:变量2的名称
  • [2]:相关值

“总体”矩阵不完整(例如,我具有V1 * V2,V2 * V3,但没有V1 * V3的相关性)。

有没有办法以图形方式表示这一点?

Answers:


12

基于@GaBorgulya的响应,我建议尝试波动或水平图(也称为热图显示)。

例如,使用ggplot2

library(ggplot2, quietly=TRUE)
k <- 100
rvals <- sample(seq(-1,1,by=.001), k, replace=TRUE)
rvals[sample(1:k, 10)] <- NA
cc <- matrix(rvals, nr=10)
ggfluctuation(as.table(cc)) + opts(legend.position="none") + 
  labs(x="", y="")

(此处,缺少的条目以纯灰色显示,但是可以更改默认的配色方案,也可以在图例中添加“ NA”。)

在此处输入图片说明

要么

ggfluctuation(as.table(cc), type="color") + labs(x="", y="") +
  scale_fill_gradient(low = "red",  high = "blue")

(在这里,根本不会显示缺少的值。但是,您可以添加a geom_text()并在空白单元格中显示类似“ NA”的内容。)

在此处输入图片说明


2
为+1 ggfluctuation,以前没看过!这篇文章还有其他有用的代码可以可视化这种类型的dater:stackoverflow.com/questions/5453336/…–
Chase

@追(+1)Thx。顺便说一句,对于负相关值,我的配色方案似乎有些问题。
chl

通过(hclust(…)$order)[ stat.ethz.ch/R-manual/R-devel/library/stats/html/hclust.html]对行和列进行重新排序通常会更易于查看。
GaBorgulya 2011年

@GaBorgulya好点。我在进行探索性数据分析时使用了此变量并且变量没有特定的顺序(就像空间或时间数据或要按原样查看的结构化数据一样)。该mixOmics::cim功能非常好。此处讨论了一个相关问题stats.stackexchange.com/questions/8370/…
chl

5

您的数据可能像

  name1 name2 correlation
1    V1    V2         0.2
2    V2    V3         0.4

您可以使用以下R代码将长表重新排列为一个宽表

d = structure(list(name1 = c("V1", "V2"), name2 = c("V2", "V3"), 
    correlation = c(0.2, 0.4)), .Names = c("name1", "name2", 
    "correlation"), row.names = 1:2, class = "data.frame")
k = d[, c(2, 1, 3)]
names(k) = names(d)
e = rbind(d, k)
x = with(e, reshape(e[order(name2),], v.names="correlation", 
  idvar="name1", timevar="name2", direction="wide"))
x[order(x$name1),]

你得到

  name1 correlation.V1 correlation.V2 correlation.V3
1    V1             NA            0.2             NA
3    V2            0.2             NA            0.4
4    V3             NA            0.4             NA

现在,您可以使用可视化关联矩阵的技术(至少可以解决缺失值的技术)。


2
reshape包装也可能有用。拥有之后e,请考虑类似library(reshape) cast(melt(e), name1 ~ name2)
Chase

3

corrplot包是用于可视化相关矩阵的有用功能。它接受一个相关矩阵作为输入对象,并具有几个显示矩阵本身的选项。一个不错的功能是,它可以使用层次聚类或PCA方法对变量重新排序。

有关示例可视化,请参见此线程中可接受的答案。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.