前面給大家簡(jiǎn)單介紹了做PCA分析并繪圖的R包factoextra
?【R語言】factoextra生成發(fā)表級(jí)PCA主成分分析圖(一)
主要講了如何展示樣本的主成分分析結(jié)果朋其,即樣本在新的空間中的分布情況,便于查看樣本分群的結(jié)果脆炎。
今天我們來講講如何展示特征的分布梅猿,我們還是使用iris這套數(shù)據(jù)集
#加載這兩個(gè)R包
library(FactoMineR)
library(factoextra)
#做PCA分析,第五列為物種秒裕,非數(shù)值屬性需要去除
iris.pca <- PCA(iris[,-5], graph = T)
#獲取樣本的主成分分析結(jié)果
var <- get_pca_var(iris.pca)
#查看特征分布
fviz_pca_var(iris.pca)
這張圖展示的是原始特征在新空間中的分布情況袱蚓,這四個(gè)特征的坐標(biāo)存放在var$coord中
我們以Sepal.Length這個(gè)特征為例,在Dim1和Dim2的二維空間中的橫坐標(biāo)是0.89几蜻,縱坐標(biāo)是0.36喇潘,如上圖所示体斩。
在前面一期的內(nèi)容里我們也介紹了如何查看每一個(gè)原始特征對(duì)每一個(gè)PC的貢獻(xiàn)程度
#查看每一個(gè)特征對(duì)每一個(gè)主成分的貢獻(xiàn)程度
var$contrib
我們可以用相關(guān)性圖來展示貢獻(xiàn)程度
library("corrplot")
corrplot(var$contrib, is.corr=FALSE)
我們可以看到Sepal.Width這個(gè)特征對(duì)Dim.2的貢獻(xiàn)最大。
柱形圖來展示颖低,原始四個(gè)特征對(duì)PC1的貢獻(xiàn)程度
fviz_contrib(iris.pca, choice = "var", axes = 1)
與var$contrib中的結(jié)果一致
當(dāng)然我們可以展示每一個(gè)原始特征對(duì)PC1和PC2的綜合貢獻(xiàn)程度
fviz_contrib(iris.pca, choice = "var", axes = 1:2)
可以看出結(jié)果有所變化絮吵,因?yàn)镾epal.Width這個(gè)特征對(duì)Dim.2的貢獻(xiàn)實(shí)在太大了
接下來我們可以在展示特征分布的時(shí)候根據(jù)特征對(duì)PC的貢獻(xiàn)程度來著色
#根據(jù)貢獻(xiàn)度著色
fviz_pca_var(iris.pca,
col.var="contrib",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")
)
這個(gè)顏色的深淺代表了每一個(gè)原始特征對(duì)PC1-2的綜合貢獻(xiàn)程度,跟上面的柱形圖的結(jié)果一致
當(dāng)然我們還可以從另一個(gè)角度來展示特征忱屑,即各個(gè)原始特征多大程度上能代表各個(gè)PC蹬敲,這里我們叫做代表質(zhì)量
#corrplot展示各變量對(duì)各主成分的代表質(zhì)量
library("corrplot")
# is.corr表示輸入的矩陣不是相關(guān)系數(shù)矩陣
corrplot(var$cos2, is.corr=FALSE)
Petel.Lenth最能代表PC1,而Sepal.Width最能代表PC2莺戒,也在一定程度上能代表PC1伴嗡。
當(dāng)然我們也可以考慮每一個(gè)原始特征對(duì)PC1和PC2的綜合代表性
fviz_cos2(iris.pca, choice = "var", axes = 1:2)
可以看出Sepal.Width要比Petel.Lenth的代表性更好
接下來我們可以在展示特征分布的時(shí)候根據(jù)特征對(duì)PC的代表性來著色
#根據(jù)代表性著色
fviz_pca_var(iris.pca,
col.var="cos2",
gradient.cols = c("#00AFBB", "#E7B800", "#FC4E07")
)
可以看出這個(gè)結(jié)果其實(shí)跟使用貢獻(xiàn)度的結(jié)果大同小異
今天的分享就先到這里,下一期我們將跟大家分享从铲,如何將樣本和特征同時(shí)展示在以PC為坐標(biāo)的圖上瘪校。
參考資料: