首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在R中使用prcomp将属性数量减少到20?

如何在R中使用prcomp将属性数量减少到20?
EN

Stack Overflow用户
提问于 2010-10-11 19:59:20
回答 2查看 5.5K关注 0票数 4

我有一个名为data的104属性数据集。我想使用R中的prcomp函数将属性数量减少到20个。

我这样做了:

代码语言:javascript
复制
pr = prcomp(data)

但是pr只包含prcomp类的一个实例。如何将原始数据集中的属性数量减少到20个?

EN

回答 2

Stack Overflow用户

发布于 2010-10-11 20:23:20

首先,prcomp进行主成分分析。主成分分析可以得到与变量数量一样多的成分。你要找的,是一个因子分析:

代码语言:javascript
复制
ff <- factanal(data,20)

请参阅?factanal

如果只想将前20个主成分保留为新的数据集,则可以很容易地从predict()函数中选择它们。或者你自己计算一下:

代码语言:javascript
复制
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个主成分。

票数 7
EN

Stack Overflow用户

发布于 2021-07-13 22:13:31

我同意@Joris Meys的回答,但我想补充一句,prcomp有一个rank参数,允许选择第一个n主组件。

例如,要选择前20个主成分,可以使用:

代码语言:javascript
复制
pca <- prcomp(data, rank = 20)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3905958

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档