使用 PCA 进行变量排序

机器算法验证 r 主成分分析 双标图
2022-03-18 14:50:41

我下载了一个脚本来使用彩色圆圈绘制相关矩阵。该脚本允许使用 PCA 对变量进行排序,但我不确定它是如何工作的。负责订购的代码如下:

if (order) {
    if(!n==m){
            stop("The matrix must be squre if order is TRUE!")
    }
  x.eigen <- eigen(corr)$vectors[, 1:2]
  e1 <- x.eigen[, 1]
  e2 <- x.eigen[, 2]
  alpha <- ifelse(e1 > 0, atan(e2/e1), atan(e2/e1) + pi)
  corr <- corr[order(alpha), order(alpha)]
}

问题: 对这种排序的解释是什么,其背后的理论是什么?

1个回答

Michael Friendly 的 American Statistician 论文中关于 corrgrams 的Preprint PDF 对此进行了描述。请参阅相关排序部分。此外,如果您查看corrgram库的来源,您还会看到一些其他潜在的数据排序方式。

为了概括地描述代码在做什么,相关矩阵中的变量根据与从同一相关矩阵中提取的第一和第二主成分的相关性进行排序。如果您查看友好论文中的特征向量图(图 3),代码atan(e2/e1)是与特定变量关联的射线与水平轴之间的角度。变量按此角度按逆时针顺序排序。如果整个图片在水平方向被第一个特征值的平方根压缩,而在垂直方向被第二个特征值的平方根压缩(这不会改变顺序!),那么xy每条射线端点的坐标正是该变量与 PC1 和 PC2 的相关性。

图 3 来自友好

再次,在友好论文中给出了排序的原因,但我们几乎总是希望在更相似的事物旁边有更多相似的事物(在图形或表格中)。通常,排序比数字或图表更能提供信息!在此示例中,“更相似”是根据与第一和第二主成分的相关性来定义的。

另请注意,如果相关矩阵不是满秩,我假设代码中的第一个 if 语句会阻止这种排序发生。