R中的prcomp函数也可以进行降维,从熟悉R函数的角度出发,尝试复现上述的降维图。 降维前需要先将数据进行scale,否则结果会有少许差异: pca_prcp <- iris[,-ncol(iris)] %>% scale %>% prcomp() pca_prcp是一个prcomp
Princomp和prcomp都是R自带的stats包中的函数。 Prcomp对于R mode和Q mode都可以使用,它基于奇异值分解singular value decomposition(svd)。 默认用法为x.prcomp=prcomp(x,center = TRUE,scale. = FALSE)。 Princomp和prcomp在算法上略有差异。除了分别为特征值分解和奇异值分解外,两者在之前计算协方差的时候标准化的过程存在差异:princomp计算时分母为N,而prcomp分母为N-1。 ? >x.prcomp=prcomp(x,center = TRUE, scale. = FALSE)>summary.prcomp=summary(x.prcomp)Importance of components
函数 prcomp函数使用较为简单,但是不同于常规的求取特征值和特征向量的方法,prcomp函数是对变量矩阵(相关矩阵)采用SVD方法计算其奇异值(原理上是特征值的平方根),函数帮助中描述为函数结果中的 prcomp函数输入参数为变量矩阵(x),中心化(center,默认为true),标准化(scale,默认为false,建议改为true),主成份个数(rank)。 prcomp函数输出有sdev(各主成份的奇异值),rotation(特征向量,回归系数),x(score得分矩阵)。 princomp函数输出有主成份的sd,loading,score,center,scale.prcomp函数使用较为简单,但是不同于常规的求取特征值和特征向量的方法,prcomp函数是对变量矩阵(相关矩阵 prcomp函数输入参数为变量矩阵(x),中心化(center,默认为true),标准化(scale,默认为false,建议改为true),主成份个数(rank)。
加载好 ggfortify 包之后, 你可以对stats::prcomp 和 stats::princomp 对象使用 ggplot2::autoplot。 library(ggfortify) df <- iris[c(1, 2, 3, 4)] autoplot(prcomp(df)) 你还可以选择数据中的一列来给画出的点按类别自动分颜色。 输入help(autoplot.prcomp) 可以了解到更多的其他选择。 autoplot(prcomp(df), data = iris, colour = 'Species', label = TRUE, label.size = 3) 给定 shape autoplot(prcomp(df), data = iris, colour = 'Species', loadings = TRUE, loadings.colour = 'blue
对比下在R的现成的PCA功能的结果 FactoMineR和factoextra配合做PCA和可视化(下图中图片名为PCA); prcomp(stats base级别)和autoplot配合做PCA和可视化 (下图中图片名为prcomp); ######以下是FactoMineR和factoextra的工作: res<-PCA(X = decathlon2.active, scale.unit = FALSE 为stats自带的PCA方法 deca_re<-prcomp(decathlon2.active) #####rotation-包含特征向量的矩阵 deca_re$rotation[, 1] ##### #####对coord处理后获得特征向量,与prcomp中的rotation一致 loadings<-sweep(res$var$coord,2,sqrt(res$eig[1:5,1]),FUN="/ <em>prcomp</em> ?
加载好 ggfortify 包之后, 你可以对stats::prcomp 和 stats::princomp 对象使用 ggplot2::autoplot。 library(ggfortify) df <- iris autoplot(prcomp(df)) ? 你还可以选择数据中的一列来给画出的点按类别自动分颜色。 输入help(autoplot.prcomp) 可以了解到更多的其他选择。 autoplot(prcomp(df), data = iris, colour = 'Species') ? autoplot(prcomp(df), data = iris, colour = 'Species', label = TRUE, label.size = 3) ? autoplot(prcomp(df), data = iris, colour = 'Species', loadings = TRUE) ?
install.packages('autoplotly') library(autoplotly) autoplotly()函数适用于 stats 包中的两个基本对象类: prcomp 和 princomp 下面提取 iris 数据集的前四列作为矩阵,对其进行主成分分析,并对结果进行可视化展示: p <- autoplotly(prcomp(iris[c(1, 2, 3, 4)]), data = iris autoplotly( prcomp(iris[c(1, 2, 3, 4)]), data = iris, colour = 'Species', frame = TRUE) + ggplot2 下面的例子将在原图的中心处添加一个箭头和注释文本: p <- autoplotly(prcomp(iris[c(1, 2, 3, 4)]), data = iris, colour = 'Species
可以很明显的看到,第一个主成分就把我们的NSCLC和SCLC区分的还不错 更多完整的PCA教程看群主之前的推文: 【直播】我的基因组55:简单的PCA分析千人基因组的人群分布 重复一篇Cell文献的PCA图 prcomp 用到的参数介绍 prcomp是R的stats 包(base级别)的函数; autoplot是ggfortify中的函数,frame即对分出来的簇加上边界,frame.type即边界类型设定为norm ; ######ggplot2太大了,得抽时间好好了解; library(ggfortify) autoplot(prcomp( df[,1:ncol(df)-1] ), data=df,colour = 'group') autoplot(prcomp( df[,1:ncol(df)-1] ), data=df, colour = 'group', Rplot_prcomp.png ?
sample_all) # 添加样本分组信息 df=cbind(as.data.frame(sample_all),group=c(rep('group1',20),rep('group2',20))) # prcomp ()主成分分析 pca_dat <- prcomp( df[,1:(ncol(df)-1)] ) autoplot(pca_dat, data=df,colour = 'group')+theme_bw 添加样本分组信息 df=cbind(as.data.frame(sample_all),group=c(rep('group1',cell_num),rep('group2',cell_num))) # prcomp ()主成分分析 pca_dat <- prcomp( df[,1:(ncol(df)-1)] ) autoplot(pca_dat, data=df,colour = 'group')+theme_bw sample_all),group=c(rep('group1',cell_num),rep('group2',cell_num),rep('group3',cell_num))) autoplot(prcomp
PCA分析过程 2.0 手动计算 2.1 prcomp函数 2.2 princomp函数 2.3 psych::principal 3. PCA结果解释 4. 函数 prcomp函数使用较为简单,但是不同于常规的求取特征值和特征向量的方法,prcomp函数是对变量矩阵(相关矩阵)采用SVD方法计算其奇异值(原理上是特征值的平方根),函数帮助中描述为函数结果中的 prcomp函数输入参数为变量矩阵(x),中心化(center,默认为true),标准化(scale,默认为false,建议改为true),主成份个数(rank)。 prcomp函数输出有sdev(各主成份的奇异值),rotation(特征向量,回归系数),x(score得分矩阵)。 PCA结果解释 下文引用chentong的内容 prcomp函数会返回主成分的标准差、特征向量和主成分构成的新矩阵。 不同主成分对数据差异的贡献和主成分与原始变量的关系。 1.
例一 metabo是结核病的代谢情况数据 data(metabo) pca <- prcomp(metabo[,-1], scale. = TRUE ) #pca数据要求是一个prcomp对象,或者一个至少有三列的矩阵 #prcomp是主成分分析函数 head(pca) pca3d(pca, group=metabo[,1]) #绘图,根据metabo第一列分组 makeMoviePCA() ##变成动态 2.
works for the following methods that ## require data matrix (or data frame) as input: ## + stats::prcomp # 首先选择方法 x <- dr(data = iris[,1:4], fun = prcomp) # 然后用ggplot2画图,就是这么简单!
library(devtools) > install_github("vqv/ggbiplot") > library(ggbiplot) > data("wine") > wine.pca <- prcomp pcobj # prcomp()或princomp()返回结果 choices # 选择轴,默认1:2 scale # covariance biplot (scale = 1), form labels.size # 名称大小 alpha # 点透明度 (0 = TRUEransparent, 1 = opaque) circle # 绘制相关环(only applies when prcomp
这其中,我又将PCA相关的分析方法和作图汇总了一下: 分析函数 eigen prcomp princomp FactoMineR::PCA ade4::dudi.pca 还有其它分析,比如冗余分析,MCA 使用prcomp做聚类分析 这里,对数据进行标准化之后,在进行PCA分析。 ord <- prcomp(iris[, 1:4],scale. = T,center = T) summary(ord) ## Importance of components: ## R中两个函数prcomp和princomp的区别 prcomp函数,可以接受原始数据,在函数中定义scale .= TRUE,center = TRUE princomp函数,需要使用标准化后的数据,即 两个函数的比较 prcomp函数的用法: library(tidyverse) re1 = prcomp(iris[,1:4],center = T, scale. = T) summary(re1)
简单的PCA实现 我们使用前面用到的数据data3来演示下如何用R函数实现PCA的计算,并与R中自带的prcomp做个比较。 #par(mfrow=c(1,1)) 利用prcomp进行主成分分析 pca_data3 <- prcomp(data3[,1:3], center=TRUE, scale=TRUE) #Show whats #par(mfrow=c(1,1)) PCA结果解释 prcomp函数会返回主成分的标准差、特征向量和主成分构成的新矩阵。接下来,探索下不同主成分对数据差异的贡献和主成分与原始变量的关系。 (data4_use_t, scale=T) ori_no_scale_pca_test <- prcomp(data4_use_t, scale=F) log_scale_pca_test <- prcomp <- prcomp(data4_use_log2_mad_top500, scale=T) log_no_scale_pca_top500 <- prcomp(data4_use_log2_mad_top500
# 先转置一下,让行为样本 > a3=t(a3);dim(a3) [1] 40 500 # prcomp()主成分分析 pca_dat <- prcomp(a3, scale. = TRUE) p 先在原来数据的基础上添加样本分组信息(别忘了a3是一个矩阵,先转换成数据框) df=cbind(as.data.frame(a3),group=c(rep('b1',20),rep('b2',20))) autoplot(prcomp 热图已经能看出来差异了,再看看PCA a3=t(a3);dim(a3) df=cbind(as.data.frame(a3),group=c(rep('b1',20),rep('b2',20))) autoplot(prcomp
这里我们主要讨论怎么样用R实现以及提取我们需要的特征: 用R实现PCA有多个方法: prcomp() and princomp() [built-in R stats package], PCA( /articles/31-principal-component-methods-in-r-practical-guide/118-principal-component-analysis-in-r-prcomp-vs-princomp
使用prcomp()进行主成分分析,然后将结果保存到res.pca变量中。之后使用ggbiplot()进行可视化。 # install_github("vqv/ggbiplot") library(ggbiplot) res.pca <- prcomp(iris[, -5], scale = TRUE) ggbiplot 方法二 使用FactoMineR包[3]的PCA()函数或者使用基础包的prcomp()函数进行数据降维处理,然后使用factoextra包[4]的fviz_pca_ind()函数对结果进行可视化。
1357 10 40 46 27 58 96 66.7 64 22 1080 # … with 26 more rows >Enzyme1.pca <- prcomp (df1,scale. = TRUE) #对给定的数据矩阵进行主成分分析,并将结果作为类prcomp的对象返回。 prcomp():对给定的数据矩阵进行主成分分析,并将结果作为类prcomp的对象返回。 PCA():是FactoMineR包中主成分分析函数,能够对数据进行降维处理。
就像之前两篇文章: 分析简单 & 出图优雅的R package —— factoMineR & factoextra R-三种做PCA函数的差异:princomp,prcomp及rda 都是做PCA,R 自带的stats包里包含princomp,prcomp;vegan包里有rda;factoMineR和factoextra这两个包也有分析和可视化的相应函数。