我有一个名为data的104属性数据集。我想使用R中的prcomp函数将属性数量减少到20个。
我这样做了:
pr = prcomp(data)但是pr只包含prcomp类的一个实例。如何将原始数据集中的属性数量减少到20个?
发布于 2010-10-11 20:23:20
首先,prcomp进行主成分分析。主成分分析可以得到与变量数量一样多的成分。你要找的,是一个因子分析:
ff <- factanal(data,20)请参阅?factanal
如果只想将前20个主成分保留为新的数据集,则可以很容易地从predict()函数中选择它们。或者你自己计算一下:
x <- prcomp(USArrests, scale = TRUE)
tt <- predict(x) # the standard way
# below the matrix way
tt2 <- scale(USArrests,x$center,x$scale) %*% x$rotation
# with only 3 components instead of 4
tt3 <- predict(x)[,1:3]
tt4 <- scale(USArrests,x$center,x$scale) %*% x$rotation[,1:3]但请注意,因子分析将数据集减少到20个因子并不等同于保留PCA的前20个主成分。
发布于 2021-07-13 22:13:31
我同意@Joris Meys的回答,但我想补充一句,prcomp有一个rank参数,允许选择第一个n主组件。
例如,要选择前20个主成分,可以使用:
pca <- prcomp(data, rank = 20)https://stackoverflow.com/questions/3905958
复制相似问题