干细胞之家 - 中国干细胞行业门户第一站

 

 

搜索

Principal Component Analysis with R

已有 418 次阅读 2015-6-20 01:39 |个人分类:R/Bioconductor|关键词:PCA analysis

Principal component analysis (PCA) is a statistical procedure that uses an orthogonal transformation to convert a set of observations of possibly correlated variables into a set of values of linearly uncorrelated variables called principal components. The number of principal components is less than or equal to the number of original variables. There are two methods in R to perform PCA. One is princomp, another is prcomp. I think these two methods are almost same.

#Use data iris as example
> myiris <- iris[,-5]
> pca1 <- princomp (myiris)
> pca2 <- prcomp (myiris)
> pca1

Call:
princomp(x = myiris)

Standard deviations:
   Comp.1    Comp.2    Comp.3    Comp.4
2.0494032 0.4909714 0.2787259 0.1538707

 4  variables and  150 observations.

> pca2
Standard deviations:
[1] 2.0562689 0.4926162 0.2796596 0.1543862

Rotation:
                     PC1         PC2         PC3        PC4
Sepal.Length  0.36138659 -0.65658877  0.58202985  0.3154872
Sepal.Width  -0.08452251 -0.73016143 -0.59791083 -0.3197231
Petal.Length  0.85667061  0.17337266 -0.07623608 -0.4798390
Petal.Width   0.35828920  0.07548102 -0.54583143  0.7536574

#show the variables of pca result
> names (pca1)
[1] "sdev"     "loadings" "center"   "scale"    "n.obs"    "scores"   "call"   
> names (pca2)
[1] "sdev"     "rotation" "center"   "scale"    "x"      
> col <- rainbow(4, alpha=0.5)
> plot (pca1$loadings, col=col, pch=16, cex=4) # plot PCA1 and PCA2
> plot (pca2$rotation, col=col, pch=16, cex=4) # plot PCA1 and PCA2



#show loadings value
> loadings(pca1)
Loadings:
             Comp.1 Comp.2 Comp.3 Comp.4
Sepal.Length  0.361 -0.657 -0.582  0.315
Sepal.Width         -0.730  0.598 -0.320
Petal.Length  0.857  0.173        -0.480
Petal.Width   0.358         0.546  0.754

               Comp.1 Comp.2 Comp.3 Comp.4
SS loadings      1.00   1.00   1.00   1.00
Proportion Var   0.25   0.25   0.25   0.25
Cumulative Var   0.25   0.50   0.75   1.00

# show rotation value
> pca2$rotation
                     PC1         PC2         PC3        PC4
Sepal.Length  0.36138659 -0.65658877  0.58202985  0.3154872
Sepal.Width  -0.08452251 -0.73016143 -0.59791083 -0.3197231
Petal.Length  0.85667061  0.17337266 -0.07623608 -0.4798390
Petal.Width   0.35828920  0.07548102 -0.54583143  0.7536574

#also show PCA1 and PCA2

> plot (pca1$loadings[1:4, 1],pca1$loadings[1:4,2], col=col, pch=16, cex=4)

#plot PCA2 and PCA3
> plot (pca1$loadings[1:4, 2],pca1$loadings[1:4,3], col=col, pch=16, cex=4)
> plot (pca2$rotation[1:4, 2],pca2$rotation[1:4,3], col=col, pch=16, cex=4)


# plot PCA3 and PCA4
> plot (pca2$rotation[1:4, 3],pca2$rotation[1:4,4], col=col, pch=16, cex=4)
> plot (pca1$loadings[1:4, 3],pca1$loadings[1:4,4], col=col, pch=16, cex=4)



> pairs (pca1$loadings, col=col, pch=18, cex=3)

# plot all component




> pairs (pca2$rotation, col=col, pch=18, cex=3)



路过

雷人

握手

鲜花

鸡蛋

评论 (0 个评论)

facelist

你需要登录后才可以评论 登录 | 注册
验证问答 换一个

Archiver|干细胞之家 ( 吉ICP备2021004615号-3 )

GMT+8, 2024-5-2 05:44

Powered by Discuz! X1.5

© 2001-2010 Comsenz Inc.