8

我试图从相关矩阵中绘制一个图,并使用三种颜色来表示使用库格的相关系数。

library(lattice)

levelplot(cor)

我得到以下情节:

相关矩阵图

该图仅适用于我拥有的数据的一个子集。当我使用整个数据集(400X400)时,它变得不清楚并且颜色没有正确显示并且显示为点。对于大型矩阵,是否有可能以平铺形式获得相同的结果?

我尝试使用 pheatmap 函数,但我不希望我的值被聚类,只想以平铺形式清楚地表示高值和低值。

4

2 回答 2

15

如果要绘制相关图,请使用 corrplot 库,因为它具有很大的灵活性,可以为相关性创建类似热图的图形

library(corrplot)
#create data with some correlation structure
jnk=runif(1000)
jnk=(jnk*100)+c(1:500, 500:1)
jnk=matrix(jnk,nrow=100,ncol=10)
jnk=as.data.frame(jnk)
names(jnk)=c("var1", "var2","var3","var4","var5","var6","var7","var8","var9","var10")

#create correlation matrix
cor_jnk=cor(jnk, use="complete.obs")
#plot cor matrix
corrplot(cor_jnk, order="AOE", method="circle", tl.pos="lt", type="upper",        
tl.col="black", tl.cex=0.6, tl.srt=45, 
         addCoef.col="black", addCoefasPercent = TRUE,
         p.mat = 1-abs(cor_jnk), sig.level=0.50, insig = "blank")  

在此处输入图像描述 上面的代码只为具有 > abs(0.5) 相关性的相关性添加颜色,但您可以轻松更改它。最后,您还可以通过多种方式配置绘图的外观(更改颜色渐变、显示相关性、显示全矩阵与仅半矩阵等)。order 参数特别有用,因为它允许您根据 PCA 对相关矩阵中的变量进行排序,因此它们是根据相关性的相似性进行排序的。

例如,对于正方形(类似于您的原始图) - 只需将方法更改为正方形: 在此处输入图像描述

编辑:@卡森。您仍然可以将此方法用于合理的大相关矩阵:例如下面的 100 个变量矩阵。除此之外,我看不出在没有子集的情况下对具有这么多变量的相关矩阵进行图形表示有什么用,因为这将很难解释。 在此处输入图像描述

于 2013-04-08T19:59:56.260 回答
0

@Lucas 在这里提供了很好的建议,因为 corrplot 对于可视化相关矩阵非常有用。但是,它没有解决绘制大型相关矩阵的原始问题。事实上,当试图可视化这么大的相关矩阵时,corrplot 也会失败。对于一个简单的解决方案,您可能需要考虑减少变量的数量。也就是说,我建议查看您知道对您的问题很重要的变量子集之间的相关性。试图理解这么多变量的相关结构将是一项艰巨的任务(即使您可以将其可视化)!

于 2013-04-08T20:16:31.483 回答