我有一些观测值高度相关的数据集。我正在对从相关矩阵获得的距离矩阵进行聚类分析。此数据集中的某些元素是多余的,我想选择一些相互关联性最小的代表性元素。我认为暴力破解方法是从每个群集中简单选择一个元素。但是我想知道是否有更正式的方法来降低R中的这种降维? 例如,我们以以下方式对mtcars数据集进行聚类:
> m=cor(t(mtcars))
> hc=hclust(as.dist(m),"ave")
> plot(hc)
我们正在获得以下树状图:
如何从上述树状图中提取必需元素?这意味着元素之间的相互关联程度最低?
答案 0 :(得分:1)
一种选择是使用caret
包中的某些预处理功能。
使用您的示例,下面的代码将删除与另一列具有0.95相关性的所有列。
library(caret)
m <- cor(t(mtcars))
highlyCor <- findCorrelation(m, cutoff = .95)
t(mtcars)[,-highlyCor]
以上代码改编自Max Kuhn's excellent book。请参阅该文档和caret
文档以获取更多背景信息。