PCA 双图上的四个轴是什么?

机器算法验证 r 主成分分析 双标图
2022-01-27 22:53:33

当您为 PCA 分析构建双图时,您在 x 轴上有主成分 PC1 分数,在 y 轴上有 PC2 分数。但是屏幕右侧和顶部的另外两个轴是什么?

2个回答

您的意思是,例如,在以下命令返回的情节中?

biplot(prcomp(USArrests, scale = TRUE))

biplot 美国逮捕

如果是,则上轴和右轴将用于解释图中的红色箭头(描绘变量的点)。

如果您知道主成分分析的工作原理,并且您可以阅读 R 代码,那么下面的代码将向您展示在最终绘制 by 之前如何prcomp()最初处理from 的结果这两个函数是在你用 绘图时在后台调用的,以下修改后的代码摘录来自.biplot.prcomp()biplot.default()biplot()biplot.prcomp()

x<-prcomp(USArrests, scale=TRUE)
choices = 1L:2L
scale = 1
pc.biplot = FALSE
scores<-x$x
lam <- x$sdev[choices]
n <- NROW(scores)
lam <- lam * sqrt(n)
lam <- lam^scale
yy<-t(t(x$rotation[, choices]) * lam)
xx<-t(t(scores[, choices])/lam)
biplot(xx,yy)

简而言之,在上面的示例中,可变载荷矩阵 ( x$rotation) 由主成分的标准差 ( x$sdev) 乘以观察次数的平方根来缩放。这会将顶部和右侧轴的比例设置为绘图上所见的比例。

还有其他方法可以缩放可变负载。这些是由例如 R package vegan 提供的。

我对双标图有更好的可视化。请检查下图。

在实验中,我试图将 3d 点映射到 2d(模拟数据集)。

在 2d 中理解 biplot 的诀窍是找到正确的角度以在 3d 中看到相同的事物。所有数据点都有编号,您可以清楚地看到映射。

在此处输入图像描述

这是重现结果的代码。

require(rgl)
set.seed(0)

feature1=round(rnorm(50)*10+20)
feature2=round(rnorm(50)*10+30)
feature3=round(runif(50)*feature1)

d=data.frame(feature1,feature2,feature3)

head(d)

plot(feature1,feature2)
plot(feature2,feature3)
plot(feature1,feature3)

plot3d(d$feature1, d$feature2, d$feature3, type = 'n')
points3d(d$feature1, d$feature2, d$feature3, color = 'red', size = 10)
shift <- matrix(c(-2, 2, 0), 12, 3, byrow = TRUE)
text3d(d+shift,texts=1:50)
grid3d(c("x", "y", "z"))

pr.out=prcomp(d,scale.=T)
biplot(pr.out)
grid()