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


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