搜索
查看: 4603|回复: 3

PCA主成分分析理解

[复制链接]

13

主题

28

帖子

220

积分

中级会员

Rank: 3Rank: 3

积分
220
发表于 2017-2-13 16:09:22 | 显示全部楼层 |阅读模式
本帖最后由 咔吧耀 于 2017-2-13 16:36 编辑

主成分分析(Principal Component Analysis,PCA), 是一种统计方法。通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。在生物信息学中,PCA主要用来通过降维来将高维度的数据中最显著的区别的筛选出来,比如单细胞测序中用PCA或者t-SNE等降维方式区别不同的细胞类型,或者在肠道菌群测序中,区分不同的或者相似的菌群。
首先,有一个数据矩阵,随便找一个GSE的数据,列头为基因名,行头为样品名,然后计算平均值,标准差,协方差找到特征值和特征向量,得到特征向量后可以进行排序,得到最大的到最小的特征向量,如PC1,PC2,PC3等,数据转换为新的特征向量,用来展示
[Python] 纯文本查看 复制代码
setwd("C:\\Users\\yang\\Desktop\\HCC")    #设置工作目录
data=read.table("hcc.txt",header=T,sep="\t",row.names=1)   #读取表格
data=t(as.matrix(data))   #矩阵转置
data.class <- rownames(data)
data.pca <- prcomp(data, scale. = TRUE)   #PCA分析
write.table(data.pca$rotation,file="PC.xls",quote=F,sep="\t")   #输出特征向量
write.table(predict(data.pca),file="newTab.xls",quote=F,sep="\t")   #输出新表
pca.sum=summary(data.pca)
write.table(pca.sum$importance,file="importance.xls",quote=F,sep="\t")   #输出PC比重
pdf(file="pcaBarplot.pdf",width=15)   #柱状图
barplot(pca.sum$importance[2,]*100,xlab="PC",ylab="percent",col="skyblue")
dev.off()
pdf(file="pcaPlot.pdf",width=15)   #碎石图
plot(pca.sum$importance[2,]*100,type="o",col="red",xlab="PC",ylab="percent")
dev.off()

如PC1=PC1下的所有数值乘以基因的表达量之后就是PC1的特征向量,PC1中绝对值越大,该基因在PC1中起到的权重就越大
PC权重可看柱状图和碎石图,PC的比例可以看出,在实际中PC个向量的方差是递减的。包含的信息量也是递减的,所以实际分析的时候。一般格局条件选择合适的前K个向量,
这里贡献率就是指某个主成分的方差占全部方差的比重,实际也就是某个特征值占全部特征值总和的比重。贡献率越大,说明该主成分所包含的原始变量的信息越强。主成分个数k的选取,主要根据主成分的累积贡献率来决定,即一般要求累计贡献率达到85%以上,这样才能保证综合变量能包括原始变量的绝大多数信息。
一般PC1,PC2,PC3能够占到60%以上,我这里随意找的数据,效果不是很好
得到每个样品在PC里面的坐标值,就可以画2D图和3D图了

两个助于学习理解的网站https://my.oschina.net/gujianhan/blog/225241
http://www.bio-info-trainee.com/1232.html
有问题欢迎来 生信菜鸟团 201161227讨论





本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x



上一篇:在线做domain and lollipop mutation diagrams
下一篇:新手跪哭求救了 无法安装CLL包
回复

使用道具 举报

0

主题

7

帖子

161

积分

注册会员

Rank: 2

积分
161
发表于 2017-2-26 21:20:41 | 显示全部楼层
大神,那我是不是可以这么理解:
比如我现在有300个基因的表达值,进行主成分分析以后,累计贡献率大的有4个主成分,那么我把这4个主成分中绝对值大的基因筛选出来,,那么这些筛选出来的基因可以看做是这300个基因中作用较大的基因,从而达到降维??
回复 支持 反对

使用道具 举报

3

主题

43

帖子

212

积分

中级会员

Rank: 3Rank: 3

积分
212
发表于 2017-3-23 18:19:00 | 显示全部楼层
那是R脚本啊,怎么写的是python。。。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|生信技能树 ( 粤ICP备15016384号  

GMT+8, 2019-10-18 17:58 , Processed in 0.037124 second(s), 28 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.