Answers:
您的意思是,例如,在以下命令返回的图中?
biplot(prcomp(USArrests, scale = TRUE))
如果是,则将使用上轴和右轴来解释图中的红色箭头(表示变量的点)。
如果您知道主成分分析的工作原理,并且可以阅读R代码,则下面的代码向您显示prcomp()
最初如何处理的结果,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包素食主义者提供。
我对双线图有更好的可视化。请检查下图。
在实验中,我尝试将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()
biplot
在R中的命令生成并在右侧的图形中重现的双线图不是这种情况:点云是标准化的,但是箭头的长度与方差相对应。
biplot
随scale=0
参数生成的内容。