当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


R princomp 主成分分析


R语言 princomp 位于 stats 包(package)。

说明

princomp 对给定的数值数据矩阵执行主成分分析,并将结果作为类 princomp 的对象返回。

用法

princomp(x, ...)

## S3 method for class 'formula'
princomp(formula, data = NULL, subset, na.action, ...)

## Default S3 method:
princomp(x, cor = FALSE, scores = TRUE, covmat = NULL,
         subset = rep_len(TRUE, nrow(as.matrix(x))), fix_sign = TRUE, ...)

## S3 method for class 'princomp'
predict(object, newdata, ...)

参数

formula

没有响应变量的公式,仅引用数字变量。

data

包含公式 formula 中的变量的可选 DataFrame (或类似 DataFrame :请参阅 model.frame )。默认情况下,变量取自environment(formula)

subset

用于选择数据矩阵 x 的行(观测值)的可选向量。

na.action

一个函数,指示当数据包含 NA 时应该发生什么。默认值由 optionsna.action 设置设置,如果未设置,则为 na.fail。 ‘factory-fresh’默认为na.omit

x

为主成分分析提供数据的数字矩阵或 DataFrame 。

cor

一个逻辑值,指示计算是否应使用相关矩阵或协方差矩阵。 (只有在没有常量变量的情况下才能使用相关矩阵。)

scores

一个逻辑值,指示是否应计算每个主成分的分数。

covmat

协方差矩阵,或由 cov.wt (以及包 MASS 中的 cov.mvecov.mcd )返回的协方差列表。如果提供,则使用它而不是 x 的协方差矩阵。

fix_sign

是否应该选择载荷和分数的符号,以便每个载荷的第一个元素都是非负的?

...

传递给其他方法或从其他方法传递的参数。如果 x 是一个公式,则可以指定 corscores

object

继承自 "princomp" 的类的对象。

newdata

一个可选的 DataFrame 或矩阵,用于查找用于预测的变量。如果省略,则使用分数。如果原始拟合使用具有列名称的公式或 DataFrame 或矩阵,则 newdata 必须包含具有相同名称的列。否则它必须包含相同数量的列,并以相同的顺序使用。

细节

princomp 是具有"formula""default" 方法的通用函数。

计算是使用 eigen 在相关或协方差矩阵上完成的,由 cor 确定。这样做是为了与 S-PLUS 结果兼容。首选的计算方法是在 x 上使用 svd,如 prcomp 中所做的那样。

请注意,默认计算使用除数 N 作为协方差矩阵。

这些对象的 print 方法以良好的格式打印结果,plot 方法生成碎石图 ( screeplot )。还有一个biplot方法。

如果 x 是公式,则标准 NA-handling 将应用于分数(如果需要):请参阅 napredict

princomp仅处理所谓的R-mode PCA,即变量的特征提取。如果提供数据矩阵(可能通过公式),则要求至少有与变量一样多的单位。对于 Q-mode PCA 使用 prcomp

princomp 返回类 "princomp" 的列表,其中包含以下组件:

sdev

主成分的标准差。

loadings

变量载荷矩阵(即,其列包含特征向量的矩阵)。这是"loadings" 类:请参阅loadings 了解其print 方法。

center

减去的平均值。

scale

应用于每个变量的缩放。

n.obs

观察的数量。

scores

如果 scores = TRUE ,则为所提供数据的主成分分数。仅当提供了x,并且还提供了covmat(如果它是协方差列表)时,这些值才为非空。对于公式方法,napredict() 用于处理 na.action 省略的值。

call

匹配的调用。

na.action

如果相关。

注意

载荷和分数列的符号是任意的,因此不同的 PCA 程序之间,甚至不同的 PCA 版本之间可能会有所不同。Rfix_sign = TRUE缓解了这一点。

例子

require(graphics)

## The variances of the variables in the
## USArrests data vary by orders of magnitude, so scaling is appropriate
(pc.cr <- princomp(USArrests))  # inappropriate
princomp(USArrests, cor = TRUE) # =^= prcomp(USArrests, scale=TRUE)
## Similar, but different:
## The standard deviations differ by a factor of sqrt(49/50)

summary(pc.cr <- princomp(USArrests, cor = TRUE))
loadings(pc.cr)  # note that blank entries are small but not zero
## The signs of the columns of the loadings are arbitrary
plot(pc.cr) # shows a screeplot.
biplot(pc.cr)

## Formula interface
princomp(~ ., data = USArrests, cor = TRUE)

## NA-handling
USArrests[1, 2] <- NA
pc.cr <- princomp(~ Murder + Assault + UrbanPop,
                  data = USArrests, na.action = na.exclude, cor = TRUE)
pc.cr$scores[1:5, ]

## (Simple) Robust PCA:
## Classical:
(pc.cl  <- princomp(stackloss))
## Robust:
(pc.rob <- princomp(stackloss, covmat = MASS::cov.rob(stackloss)))

参考

Mardia, K. V., J. T. Kent and J. M. Bibby (1979). Multivariate Analysis, London: Academic Press.

Venables, W. N. and B. D. Ripley (2002). Modern Applied Statistics with S, Springer-Verlag.

也可以看看

summary.princompscreeplotbiplot.princompprcompcorcoveigen

相关用法


注:本文由纯净天空筛选整理自R-devel大神的英文原创作品 Principal Components Analysis。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。