一、主成分分析介紹
主成分分析是一種常用的數據降維算法,它可以把多個相關性很高的指標(變量)轉化為少數幾個無關的主成分。這些主成分之間兩兩無關,且能夠解釋原始指標的大部分信息。在實際應用中,主成分分析具有很高的實用價值,比如可以用於降低數據的複雜度、提高數據分析的效率、發現數據的隱藏規律等。
R語言是一種功能強大的開源計算機語言,人性化的語法和豐富的統計分析函數庫使其成為數據分析師最喜歡的工具之一。R語言主成分分析函數prcomp()和princomp()可以實現主成分分析,下面將詳細介紹其使用方法。
二、prcomp()函數詳解
prcomp()函數可以計算帶有奇異值分解的主成分分析,並返回與原始數據相同規模的主成分分析數據集。下面我們以iris數據集為例,來說明如何使用prcomp()函數實現主成分分析:
data(iris) iris_pca <- prcomp(iris[, 1:4], center = TRUE, scale. = TRUE) summary(iris_pca)
上述代碼中,我們使用data()函數導入R語言內置的iris數據集,然後使用prcomp()函數對前4列數據進行主成分分析。其中center=TRUE表示將每個變量的均值中心化為0,scale.=TRUE表示給每個變量進行標準化處理。到這裡,我們已經得到了主成分分析結果,接下來用summary()函數來查看主成分分析結果的摘要:
Importance of components: PC1 PC2 PC3 PC4 Standard deviation 1.7084 0.9560 0.38309 0.14393 Proportion of Variance 0.7296 0.2285 0.03669 0.00518 Cumulative Proportion 0.7296 0.9581 0.99480 1.00000
從結果可以看出,第一主成分(PC1)可以解釋原始數據集中約73%的方差,第二主成分(PC2)可以解釋約23%的方差,第三主成分(PC3)僅能解釋約3.7%的方差,而第四主成分(PC4)的解釋能力更加弱,只能解釋約0.5%的方差。因此,在實際應用中一般只考慮前k個主成分,其中k是自己事先設定的,可以根據累計貢獻率和業務需求進行調整。
三、princomp()函數詳解
princomp()函數和prcomp()函數在功能上是相同的,都可以實現主成分分析。但兩者的區別在於princomp()函數計算的是未經過奇異值分解的主成分分析,而且每個主成分分析的方差總和為n-1,而不是等於樣本個數。下面我們以iris數據集為例,使用princomp()函數進行主成分分析:
data(iris) iris_pca <- princomp(iris[, 1:4], cor = TRUE, scores = TRUE) summary(iris_pca)
此處將參數cor設置為TRUE,表示使用相關係數矩陣進行主成分分析。scores參數設置為TRUE,表示輸出主成分分析後的主成分得分矩陣。運行後的結果如下:
Importance of components: Comp.1 Comp.2 Comp.3 Comp.4 Standard deviation 1.70836 0.956049 0.383088 0.143926 Proportion of Variance 0.72962 0.228507 0.036247 0.005618 Cumulative Proportion 0.72962 0.958127 0.994374 1.000000 Loadings: Comp.1 Comp.2 Comp.3 Comp.4 Sepal.Length 0.521 -0.377 0.719 0.261 Sepal.Width -0.269 -0.923 -0.244 -0.124 Petal.Length 0.580 -0.024 -0.142 -0.801 Petal.Width 0.565 -0.069 -0.634 0.523 Comp.1 Comp.2 Comp.3 Comp.4 Sepal.Length 0.89767 -0.39874 -0.07856 0.04597 Sepal.Width -0.38624 -0.23632 -0.27045 -0.85970 Petal.Length 0.00000 0.27492 -0.92792 0.24178 Petal.Width 0.00000 0.85391 0.24178 0.46168
從結果可以看出,princomp()函數計算出的主成分結果和prcomp()函數基本一致,僅在方差和主成分得分的計算方式上略有差異。
四、主成分分析可視化
主成分分析不僅可以用於降維和發現隱藏規律,還可以用於可視化。我們可以將主成分分析後的前兩個主成分作為x軸和y軸來畫出散點圖,觀察數據的分布情況。下面我們以iris數據集為例,來說明如何實現主成分分析的可視化:
data(iris) iris_pca <- prcomp(iris[, 1:4], center = TRUE, scale. = TRUE) plot(iris_pca$x[,1:2], col = iris$Species) legend("topright", levels(iris$Species), col=c(1:3), pch=1)
在上述代碼中,我們先使用prcomp()函數對iris數據集進行主成分分析,並將前兩個主成分得分作為x軸和y軸。然後使用plot()函數畫出散點圖,其中col參數指定了花的類型(樣本數據),legend()函數用於添加標註。運行上述代碼,我們可以得到如圖所示的散點圖:
五、總結
本文主要介紹了R語言主成分分析prcomp()和princomp()函數的使用方法,並且以iris數據集為例詳細解析了其用法,包括主成分分析結果摘要、主成分分析的可視化等,希望對廣大數據分析愛好者有所幫助。
原創文章,作者:AYKTY,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/332053.html