當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。