-
2021-05-15 09:46:55
现将如何基于全基因组的SNP数据进行PCA分析流程记录下来:
1)全基因组snp数据格式为 .vcf
2)利用vcftools软件进行格式转换(Linux系统下:进入 /vcftools_0.1.13/cpp
路径后,会注意有个文件vcftools是别样颜色):
./vcftools --vcf tmp.vcf --plink --out tmp
此时会生成两个文件:tmp.ped 和 tmp.map
3)利用plink软件进行数据格式转换(Linux系统下:下载plink软件,进入 /plink-1.07-i686 路径下 ,
运行:chmod a+x plink ,此时会发现plink文件变了颜色,接下来运行下一行):
./plink --noweb --file tmp --make-bed --out tmp
注意,输入文件和输出文件都不需要文件名的后缀,此时生成3个文件:tmp.bed,tmp.bim 和 tmp.fam
4)利用gcta软件进行pca构建(Linux系统下:下载gcta软件,进入 /gcta 路径下 , 运行:chmod a+x
gcta ,此时会发现gcta文件变了颜色,接下来运行下一行):
4.1 ./gcta --bfile tmp --make-grm --autosome --out tmp
此时生成一个文件:tmp.grm.gz
4.2 ./gcta --grm tmp --pca 3 --out pcatmp
此时生成两个文件:pcatmp.eigenval 和 pcatmp.eigenvec
5)将生成的pcatmp.eigenvec用文本编辑器打开,在最上面加入一行:1 2 pc1 pc2
pc3(之间以空格隔开),保存
6)打开R软件
6.1 输入文件:a
header=TRUE)
6.2 绘散点图:plot(a$pc1,a$pc2, pch=c(1,2,3,4,5,6,7,8,9,10),
col=c(1,2,3,4,5,6,7,8,9,10) ,
main="pca",xlab="pc1",ylab="pc2")
6.3 添加图例: legend("bottomleft",
c("CL","IN","GZ","DA","PP","YN","DX","JY","NP","SL"),
pch=c(1,2,3,4,5,6,7,8,9,10), col=c(1,2,3,4,5,6,7,8,9,10))
文件 > 另存为 > Jpeg or Tiff
7)
EIGEN
GROUP
oldpar
plot(EIGEN[,3],EIGEN[,4],col=c("red","blue")[GROUP$group],xlab="PC1",ylab="PC2");grid()
plot(EIGEN[,3],EIGEN[,5],col=c("red","blue")[GROUP$group],xlab="PC1",ylab="PC3");grid()
plot(EIGEN[,4],EIGEN[,5],col=c("red","blue")[GROUP$group],xlab="PC2",ylab="PC3");grid()
par(oldpar)
转自:http://www.bioask.net/question/238
更多相关内容 -
一组空气污染数据的主成分分析报告.doc
2021-09-26 13:02:21一组空气污染数据的主成分分析报告.doc -
用Python实现主成分分析对数据进行降维
2021-04-15 17:57:57主成分分析(Principal Component Analysis,PCA,通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时...主成分分析
主成分分析(Principal Component Analysis,PCA,通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。设法将原来变量重新组合成一组新的互相无关的几个综合变量,同时根据实际需要从中可以取出几个较少的综合变量尽可能多地反映原来变量的信息的统计方法叫做主成分分析或称主分量分析,也是数学上用来降维的一种方法。
1.准备数据
在这里我们使用sklearn提供的鸢尾花数据集。
import numpy as np from sklearn import datasets
# 加载鸢尾花数据集中的特征作为原始数据集 def loadIris(self): data = datasets.load_iris()["data"] return data # 标准化数据 def Standard(self,data): # axis=0按列取均值 mean_vector=np.mean(data,axis=0) return mean_vector,data - mean_vector
2.计算得到协方差矩阵
def getCovMatrix(self,newData): # rowvar=0表示数据的每一列代表一个feature return np.cov(newData,rowvar=0) # 计算协方差矩阵的特征值和特征向量 def getFValueAndFVector(self,covMatrix): fValue,fVector = np.linalg.eig(covMatrix) return fValue,fVector # 得到特征向量矩阵 def getVectorMatrix(self,fValue,fVector,k): fValueSort = np.argsort(fValue) fValueTopN = fValueSort[:-(k + 1):-1] return fVector[:,fValueTopN] # 得到降维后的数据 def getResult(self,data,vectorMatrix): return np.dot(data,vectorMatrix)
3.计算特征值和特征向量
def getFValueAndFVector(self,covMatrix): fValue,fVector = np.linalg.eig(covMatrix) return fValue,fVector # 得到特征向量矩阵 def getVectorMatrix(self,fValue,fVector,k): fValueSort = np.argsort(fValue) fValueTopN = fValueSort[:-(k + 1):-1] return fVector[:,fValueTopN]
4.得到降维后的数据
def getResult(self,data,vectorMatrix): return np.dot(data,vectorMatrix)
-
16种常用的数据分析方法-主成分分析
2021-11-03 10:33:53主成分分析(英语:Principal components analysis,PCA)是一种分析、简化数据集的技术。 通过降维技术把多个变量化为少数几个主成分(综合变量)的统计分析方法。这些主成分能够反映原始变量的绝大部分信息,...
主成分分析(英语:Principal components analysis,PCA)是一种分析、简化数据集的技术。
通过降维技术把多个变量化为少数几个主成分(综合变量)的统计分析方法。这些主成分能够反映原始变量的绝大部分信息,它们通常表示为原始变量的某种线性组合。
主成分分析经常用于减少数据集的维数,同时保持数据集中的对方差贡献最大的特征。这是通过保留低阶主成分,忽略高阶主成分做到的。这样低阶成分往往能够保留住数据的最重要方面。
主成分分析由卡尔•皮尔逊于1901年发明,用于分析数据及建立数理模型。其方法主要是通过对协方差矩阵进行特征分解,以得出数据的主成分(即特征向量)与它们的权值(即特征值)。
主成分的目的:
(1)变量的降维
(2)主成分的解释(在主成分有意义的情况下)主成分分析法从冗余特征中提取主要成分,在不太损失模型质量的情况下,提升了模型训练速度。
如上图所示,我们将样本到红色向量的距离称作是投影误差(Projection Error)。以二维投影到一维为例,PCA 就是要找寻一条直线,使得各个特征的投影误差足够小,这样才能尽可能的保留原特征具有的信息。因为PCA仅保留了特征的主成分,所以PCA是一种有损的压缩方式.
PCA分析的一般步骤
1.根据研究问题选取初始分析变量
2.根据初始变量特性判断由协方差阵求主成分还是由相关矩阵求主成分;
3.求协方差阵或相关阵的特征值与相应标准特征向量;
4.判断是否存在明显的多重共线性,若存在,则回到第(1)步;
5.得到主成分的表达式并确定主成分个数,选取主成分;
6.结合主成分对研究问题进行分析并深入研究。
PCA的目标是用一组较少的不相关变量代替大量相关变量,同时尽可能保留初始变量的信息,这些推导所得的变量称为主成分,它们是观测变量的线性组合。
主成分分析法优缺点
优点
↘可消除评估指标之间的相关影响。因为主成分分析法在对原始数据指标变量进行变换后形成了彼此相互独立的主成分,而且实践证明指标间相关程度越高,主成分分析效果越好。
↘可减少指标选择的工作量,对于其他评估方法,由于难以消除评估指标间的相关影响,所以选择指标时要花费不少精力,而主成分分析法由于可以消除这种相关影响,所以在指标选择上相对容易些。
↘主成分分析中各主成分是按方差大小依次排列顺序的,在分析问题时,可以舍弃一部分主成分,只取前面方差较大的几个主成分来代表原变量,从而减少了计算工作量。用主成分分析法作综合评估时,由于选择的原则是累计贡献率≥85%,不至于因为节省了工作量却把关键指标漏掉而影响评估结果。
缺点
↘在主成分分析中,我们首先应保证所提取的前几个主成分的累计贡献率达到一个较高的水平(即变量降维后的信息量须保持在一个较高水平上),其次对这些被提取的主成分必须都能够给出符合实际背景和意义的解释(否则主成分将空有信息量而无实际含义)。
↘主成分的解释其含义一般多少带有点模糊性,不像原始变量的含义那么清楚、确切,这是变量降维过程中不得不付出的代价。因此,提取的主成分个数m通常应明显小于原始变量个数p(除非p本身较小),否则维数降低的“利”可能抵不过主成分含义不如原始变量清楚的“弊”。
↘当主成分的因子负荷的符号有正有负时,综合评价函数意义就不明确。
主成分分析案例
某公司经理拟招聘一名员工,要求其具有较高的工作积极性、自主性、热情和责任感。为此,该经理专门设计了一个测试问卷,配有25项相关问题,拟从315位应聘者中寻找出最合适的候选人。
在这25项相关问题中:
↘Qu3-Qu8、Qu12、Qu13测量的是工作积极性
↘Qu2、Qu14-Qu19测量工作自主性
↘Qu20-Qu25测量的是工作热情
↘Qu1、Qu9-Qu11测量工作责任感
每一个问题都有非常同意“Agree”、同意 “Agree Some”、不确定“Undecided”、不同意 “Disagree Some”和 非常不同意 “Disagree”五个等级。
该经理想根据这25项问题判断应聘者在这四个方面的能力,现收集了应聘者的问卷信息,经汇总整理后部分数据如下:
分析者希望将多个变量归纳为某几项信息进行分析,即降低数据结果的维度。针对这种情况,可以进行主成分提取,但需要先满足2项假设:
↘假设1:观测变量是连续变量或有序分类变量,如本研究中的测量变量都是有序分类变量。
↘假设2:变量之间存在线性相关关系。
SPSS操作
SPSS操作
(1) 在主页面点击Analyze→Dimension Reduction →Factor
(2) 将变量Qu1-Qu25放入Variables栏
(3) 点击Deive,点选Statistics栏的Initial solution选项,并点选Correlation Matrix栏的Coefficients、KMO and Bartlett’s test of sphericity、Reproduced和Anti_image选项
(4) 点击Continue→Extraction,点击Display栏中的Scree plot选项
(5) 点击Continue→Rotation,点选Method栏的Varimax选项,并点选Display栏的Rotated solution和Loading plot(s)选项
(6) 点击Continue→Scores,点击Save as variables,激活Method栏后点击Regression选项
(7) 点击Continue→Options,点击 Sorted by size和Suppress small coefficients选项,在Absolute value below栏内输入“.3”点击Continue→OK
经上述操作,SPSS输出相关矩阵表如下:
该表主要用于判断各变量之间的线性相关关系,从而决定变量的取舍,即如果某一个变量与同一分组中其他变量之间的关联性不强,我们就认为该变量与其他变量测量的内容不同,在主成分提取中不应该纳入该变量。一般来说,如果相关系数大于等于0.3,我们就认为变量之间存在较好的线性相关性。
从本研究的结果来看,在分别对应聘者工作积极性(Q3-Q8,Q12,Q13)、工作自主性 (Q2,Q14-19)、工作热情(Q20-25)和工作责任感(Q1,Q9-11)的测量中,每组变量之间的相关系数均大于0.3,说明各组变量之间具有线性相关关系,提示满足假设2。
KMO检验对数据结构的总体分析
KMO检验主要用于主成分提取的数据情况。KMO检验系数分布在0到1之间,如果系数值大于0.6,则认为样本符合数据结构合理的要求。
部分学者认为,只有当KMO检验系数值大于0.8时,主成分分析的结果才具有较好的实用性,具体系数对应关系如下:
SPSS输出本研究结果如下:
本研究的KMO检验系数为0.833,根据系数对应关系表,我们认为本研究数据结构很好(meritorious),具有相关关系,满足假设2。
KMO检验对各变量的单独分析
SPSS输出各变量的KMO检验结果如下:
整理后各题KMO值:
KMO检验对单个变量的分析结果也在0到1之间分布,如果系数大于0.5,则认为单个变量满足要求;如果系数大于0.8,则认为单个变量结果很好。
分析结论中,任一变量的KMO检验结果均大于0.7,即各变量结果一般,但满足假设2。
Bartlett's检验
Bartlett's检
Bartlett's检验的零假设是研究数据之间的相关矩阵是一个完美矩阵,即所有对角线上的系数为1,非对角线上的系数均为0。
在完美矩阵情况下,各变量之间没有相关关系,即不能将多个变量简化为少数的成分,没有进行主成分提取的必要。因此,我们希望拒绝Bartlett's检验的零假设。
SPSS输出结果如下:
Bartlett's检验的P值小于0.001,拒绝零假设,即认为研究数据可以进行主成分提取,满足假设2。
结果解释
对主成分结果的分析主要从公因子方差(communalities)、提取主成分和强制提取主成分三个方面进行。
公因子方差结果
SPSS输出公因子方差结果如下:
研究中有多少个变量数据结果就会输出多少个成分,本研究中共有25个变量,就会对应产生25个成分。
“Extraction”栏提示当只保留选中的成分时,变量变异被解释的程度。
提取主成分
研究中有多少个变量,主成分提取就会产生多少个主成分。我们通过选取主成分对数据进行降维,但同时也要注意尽可能多地包含对数据变异的解释。
一般来说,结果输出的第一主成分包含最多的数据变异,第二主成分次之,之后的主成分包含的变异程度依次递减。SPSS输出结果如下:
本研究中共有25个变量,那总特征值(eigenvalues of variance)是25,即每个变量自身的特征值为1。
Total栏提示的是各主成分对数据变异的解释程度。
以第一主成分为例,其特征值为6.730,占总体变异的6.730/25×100 = 26.919% (% of Variance栏)。同理,第二主成分的特征值为3.342,占总体变异的13.369%,以此类推。
一般来说,如果某一项主成分的特征值小于1,那么我们就认为该主成分对数据变异的解释程度比单个变量小,应该剔除。本研究结果如下:
第五主成分的特征值为1.049,大于1;而第六主成分的特征值为0.951,小于1,即应该保留前五位的主成分,剔除剩余部分。
结论
本研究采用主成分分析,通过25项问题调查315位应聘者的工作能力。
研究变量之间存在线性相关关系(每组变量之间的相关系数均大于0.3),数据结构合理(KMO检验系数为0.833,单个变量的KMO检验系数均大于0.7,Bartlett's检验结果为P<0.001),提示研究数据可以进行主成分提取。< span="">
主成分提取结果:研究提取前四位主成分。提取后的主成分累计解释59.9%的数据变异,分别反映应聘者的工作积极性、工作自主性、工作热情和工作责任感(如下图)
-
spss进行主成分分析
2022-01-17 22:49:50spss主成分分析步骤非常详细版什么是主成分分析
简而概之, 就是一组数据受太多因素影响, 选出几个能代表他们的因素,并进行线性组合得到一组比原维度小的因素组合, 作为新的因素集
用spss操作
随手拿出一组数据
1.数据统一标准化
因为我们得到的原始数据大小,类型不一, 一起分析会不准确, 所以将数据全部标准化到[-10,10]的范围内
选择 分析--描述统计--描述
将变量都放入右侧, 并选中将标准化值另存为变量,点击确定
后面以Z开头的都是各变量标准化之后的值, 可以发现所有的变量都在[-10, 10]范围内
记得修改标准化值的类型和原值一样(我的全是标量)
进行因子分析
选择 分析--降维--因子分析
将标准化之后的值全部选中,原始值不要选
描述: 选中 初始解和KMO和巴特利特球形度检验
提取: 选择 协方差矩阵和碎石图
得分: 选择保存为变量
其他的选项默认就好, 然后点击确定
主要关注 总方差解释, 可以发现前两个变量就占了94%多的影响度(一般占到85%以上就可以通过), 所以完全可以用前两个变量代替其他的变量
这个结果也可以通过碎石图直观地表示:
成分矩阵表示 各个主成分与各个因素之间的关系有多大
将成分矩阵的重新标度成分, 复制粘贴到变量中, 变成一个新变量,分别记为V1, V2
转换得到主成分分析的系数
因为spss中只有因子分析, 所以还需要对因子分析的系数做处理才能得到主成分分析的系数(建议先了解主成分分析和因子分析的关系, 我是看的b站数模老哥的视频23节)
它们之间的关系是 因子分析的系数 / sqrt(特征值) = 主成分分析的系数
特征值就是总方差解释中的总计
然后在 转换--计算变量中可以进行相关计算
计算过程类似于excel, 就不多说了,直接上公式
然后再把 主成分分析的系数与原始值标准化之后的值对应相乘, 分别得到最终结果F1, F2
也是在 转换--计算变量 中计算
最后, 6个因素降维成只剩下F1, F2两个因素了, 处理问题简化了很多
-
数据分析与处理(一)主成分分析(PCA)
2019-07-18 15:25:14最近在研究数据处理相关的算法,打算整理相关的知识点,以便日后复习之用。 -
一组根视觉模式的主成分分析精确解的推导
2021-06-29 22:14:25一组根视觉模式的主成分分析的精确解的推导 一组根视觉模式的主成分分析的精确解的推导 Taizo Iijima Soken Institute Inc., Tanashi, Japan 188-0014 Yasuhiro Aoki R&D中心,东芝公司,川崎,日本 210-8582 ... -
使用主成分分析(PCA)方法对数据进行降维
2018-03-25 17:54:22我们知道当数据维度太大时,进行分类任务时会花费大量时间,因此需要进行数据降维,其中一种非常流行的降维方法叫主成分分析。 Exploratory Data Analysis 鸢尾花数据集: import numpy as np from sklearn... -
数据分析:主成分分析(PCA)1
2018-05-31 16:30:35目录: 前言 主成分分析 ...1K-L变换(卡洛南-洛伊(Karhunen-Loeve)变换):最优正交变换 ... 怕什么真理无穷,进一寸有一寸的欢喜——胡适 ...最近在分析数据,发现几大分析方法,PCA,...之前对PCA算法有过一段... -
PCA_ElectTransp:电子传输数据的主成分分析(PCA)
2021-03-04 02:23:21电子传输数据的主成分分析(PCA) 这是将主成分分析应用于电子传输数据的示例。 它是在我对分子动力学数据处理方法的本科研究期间,在我的家庭大学圣卡塔琳娜联邦大学(UFSC)的路易斯·雷戈(Luis Rego)教授的... -
canoco5主成分分析步骤_SPSS数据分析1——主成分分析
2020-11-21 13:18:13多变量分析中的最大问题莫过于多元线性问题,SPSS降维分析中的...未经许可请勿转载更多数据分析内容参看这里一. 相关理论基本原理将多个变量指标通过线性变换浓缩为少数几个主成分指标的多元统计方法。基本思想是把... -
数据分析|主成分分析
2020-12-18 18:26:05OX01 什么是主成分分析20个变量试图理解其中之间的关系: =190种可能;PCA就是用来简化多变量复杂关系的常用方法;比如,20个相关(冗余)的变量,经过PCA后,就转化成了5个线性无关的成分变量,并尽可能多的保住原始... -
数据降维算法——主成分分析
2020-04-16 14:53:53数据降维 数据降维在机器学习中非常有用,可以用来舍弃数据中...PCA(Principal Components Analysis)主成分分析法,是一种常用的数据降维算法。 PCA的主要思路,是选取数据特征中一些较低维度的空间,让数据在... -
数据降维:主成分分析法(PCA)
2022-03-05 20:17:14主成分分析是一种最常用的无监督降维方法,通过降维技术把多个变量化为少数几个主成分的统计分析方法。这些主成分能够反映原始变量的绝大部分信息,它们通常表示为原始变量的某种线性组合。 -
函数型数据主成分分析(FPCA)
2019-11-24 19:57:27更近一步,我们介绍了函数型主成分分析方法(FPCA),包括其基本思想、数学推导、算法描述等,最为重要的是,我们将该方法和本领域进行结合,有了一些新的思考,感谢"数据科学与矩阵优化"课程给带来的灵感。... -
数据预处理——数据降维(主成分分析)
2020-02-01 14:30:16因此,需要简化属性、去噪、去冗余,以求取更典型的属性,但同时又不希望不损失数据本身的意义,这时就需要对特征进行降维。 1.降维的方法 数据降维分为线性降维和非线性降维。 (1)线性降维:分为主成分分析(PCA... -
【python数据分析】数据建模之 PCA主成分分析
2022-05-06 14:39:37通过线性变换将原始数据变换为一组各维度线性无关的表示,用于提取数据的主要特征分量 → 高维数据的降维 PCA主成分分析: 二维数据降维 / 多维数据降维 /主成分筛选 二维数据降维 # 加载主成分分析... -
机器学习笔记(九)——数据降维:主成分分析法(PCA)
2020-04-22 17:33:43PCA(Principal Component Analysis),即主成分分析方法,是一种使用最广泛的数据降维算法(非监督的机器学习方法)。 其最主要的用途在于“降维”,通过析取主成分显出的最大的个别差异,发现更便于人类理解的特征。... -
实例说明利用Excel进行主成分分析 .pdf
2020-12-02 23:10:01方法 : 1 利用 Excel2000 进行主成分分析 第一步录入数据并对进行标准化 例一组古生物腕足动物贝壳标本的两个变量长度和宽度 图 1 原始数据和标准化数据及其均值方差 取自张超杨秉庚计量地理学基础 计算的详细过程... -
主成分分析(PCA)原理详解
2018-06-09 15:08:25“微信公众号”本文同步更新在我的微信公众号里,地址:https://mp.weixin.qq.com/s/Xt1vLQfB20rTmtLjiLsmww本文同步更新在我的知乎专栏里面:主成分分析(PCA)原理详解 - ...通常需要对含有多个变量的数据进行观... -
python 主成分分析 (PCA)
2022-04-12 16:51:26通过正交变换将一组可能存在相关性的变量转换为一组线性不相关的变量,转换后的这组变量叫主成分。 # 用python实现主成分分析(PCA) import numpy as np from numpy.linalg import eig from sklearn.... -
Origin如何进行主成分分析
2020-12-23 23:52:11介绍主成分分析(principal components analysis, PCA)也称主分量分析,由霍特林(Hotelling)于1933年首先提出。主成分分析是利用降维的思想,在损失很少信息的前提下把多个指标转化为几个综合指标的多元统计方法,... -
理解主成分分析法
2018-06-26 15:06:45对于一组不同维度 之间可能存在线性相关关系的数据,PCA 能够把这组数据通过正交变换变 成各个维度之间线性无关的数据。经过 PCA 处理的数据中的各个样本之间 的关系往往更直观,所以它是一种非常常用的数据分析和... -
数据降维之主成分分析法(PCA)——基本原理与基于python sklearn库的PCA实现
2019-07-19 16:54:49目录简介算法流程基于python sklearn库的PCA实现 简介 主成分分析(Principal ...对于线性的拟合、分类算法,可以利用主成分分析对输入数据实现降维,去除冗余数据可以提高计算效率并提高计算精度; 对于难以... -
实例说明利用excel进行主成分分析.docx
2020-11-21 00:17:27方法 1利用Excel2000进行主成分分析 第一步录入数据并对进行标准化 例一组古生物腕足动物贝壳标本的两个变量长度和宽度 A c D E 1 样本编号 长度 宽度左 电标准化* 思标准化b 2 1 3 2 -1. 786045 -1. 806077 3 2 4 ... -
业务数据分析中可能用到的简单的数据挖掘方法——相关性分析、主成分分析、因子分析
2020-08-12 18:27:16业务数据分析中可能用到的简单的数据挖掘方法——相关性分析、主成分分析、相关性分析 相关性分析 相关性分析通过相关系数来描述两个变量之间的相关性程度。 通过相关系数判断两者会不会相互影响,影响是正相关还是... -
论文研究 - 主成分分析和聚类分析在地表水水质分类模型中的应用
2020-05-19 11:12:26通过主成分分析(PCA),模糊C均值(FCM)和K均值算法的多元统计数据进行聚类分析,本研究试图确定导致开罗河上游尼罗河水质变化的主要主导因素水厂(CDWP)。 此外,聚类分析根据水质特征的相似性将21个采样站分为... -
基于matlab的PCA主成分分析实例——包含数据及代码
2022-05-07 16:17:33基于matlab的PCA主成分分析实例,用不同浓度的混合物的拉曼光谱作为数据进行试验。学习PCA的数据处理方法。 pca主成分分析一般指主成分分析。 主成分分析(Principal Component Analysis,PCA), 是一种统计方法。...