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


R prcomp 主成分分析


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

说明

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

用法

prcomp(x, ...)

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

## Default S3 method:
prcomp(x, retx = TRUE, center = TRUE, scale. = FALSE,
       tol = NULL, rank. = NULL, ...)

## S3 method for class 'prcomp'
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 是一个公式,则可以指定 scale.tol

x

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

retx

指示是否应返回旋转变量的逻辑值。

center

一个逻辑值,指示变量是否应移动到以零为中心的位置。或者,可以提供长度等于x 的列数的向量。该值传递给 scale

scale.

一个逻辑值,指示在进行分析之前是否应将变量缩放为具有单位方差。默认值为 FALSE 以与 S 保持一致,但一般情况下建议进行缩放。或者,可以提供长度等于x 的列数的向量。该值传递给 scale

tol

指示大小的值,低于该值的分量应被忽略。 (如果组件的标准差小于或等于 tol 乘以第一个组件的标准差,则组件将被省略。)使用默认空设置,不会忽略任何组件(除非指定的 rank. 小于 min(dim(x)) 。 )。 tol 的其他设置可以是 tol = 0tol = sqrt(.Machine$double.eps) ,这将省略本质上恒定的组件。

rank.

可选地,指定最大等级的数字,即要使用的主成分的最大数量。可以设置为 tol 的替代方案或补充,当所需的秩远小于矩阵的尺寸时特别有用。

object

继承自"prcomp"的类的对象

newdata

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

细节

计算是通过(中心且可能缩放的)数据矩阵的奇异值分解来完成的,而不是通过在协方差矩阵上使用eigen来完成。这通常是保证数值精度的首选方法。这些对象的 print 方法以良好的格式打印结果,而 plot 方法生成屏幕图。

princomp 不同,方差是使用常用除数 计算的。

请注意,如果变量为零或常量(对于 center = TRUE ),则无法使用 scale = TRUE

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

sdev

主成分的标准差(即协方差/相关矩阵的特征值的平方根,尽管计算实际上是使用数据矩阵的奇异值完成的)。

rotation

变量载荷矩阵(即,其列包含特征向量的矩阵)。函数 princomp 在元素 loadings 中返回此值。

x

如果 retx 为 true,则返回旋转数据的值(居中(并根据需要进行缩放)数据乘以 rotation 矩阵)。因此, cov(x) 是对角矩阵 diag(sdev^2) 。对于公式方法,napredict() 用于处理 na.action 省略的值。

center, scale

使用的居中和缩放,或 FALSE

注意

旋转矩阵的列的符号是任意的,因此不同的 PCA 程序之间,甚至不同的 PCA 版本之间可能会有所不同。R.

例子

C <- chol(S <- toeplitz(.9 ^ (0:31))) # Cov.matrix and its root
all.equal(S, crossprod(C))
set.seed(17)
X <- matrix(rnorm(32000), 1000, 32)
Z <- X %*% C  ## ==>  cov(Z) ~=  C'C = S
all.equal(cov(Z), S, tolerance = 0.08)
pZ <- prcomp(Z, tol = 0.1)
summary(pZ) # only ~14 PCs (out of 32)
## or choose only 3 PCs more directly:
pz3 <- prcomp(Z, rank. = 3)
summary(pz3) # same numbers as the first 3 above
stopifnot(ncol(pZ$rotation) == 14, ncol(pz3$rotation) == 3,
          all.equal(pz3$sdev, pZ$sdev, tolerance = 1e-15)) # exactly equal typically

## signs are random
require(graphics)
## the variances of the variables in the
## USArrests data vary by orders of magnitude, so scaling is appropriate
prcomp(USArrests)  # inappropriate
prcomp(USArrests, scale. = TRUE)
prcomp(~ Murder + Assault + Rape, data = USArrests, scale. = TRUE)
plot(prcomp(USArrests))
summary(prcomp(USArrests, scale. = TRUE))
biplot(prcomp(USArrests, scale. = TRUE))

参考

Becker, R. A., Chambers, J. M. and Wilks, A. R. (1988) The New S Language. Wadsworth & Brooks/Cole.

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.

也可以看看

biplot.prcompscreeplotprincompcorcovsvdeigen

相关用法


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