当您为 PCA 分析构建双图时,您在 x 轴上有主成分 PC1 分数,在 y 轴上有 PC2 分数。但是屏幕右侧和顶部的另外两个轴是什么?
PCA 双图上的四个轴是什么?
机器算法验证
r
主成分分析
双标图
2022-01-27 22:53:33
2个回答
您的意思是,例如,在以下命令返回的情节中?
biplot(prcomp(USArrests, scale = TRUE))
如果是,则上轴和右轴将用于解释图中的红色箭头(描绘变量的点)。
如果您知道主成分分析的工作原理,并且您可以阅读 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()
其它你可能感兴趣的问题