第十二讲 双标图biplot在同一个二维坐标系中同时标识样本个体和变量
第十二讲 双标图biplot 在同一个二维坐标系中同 时标识样本个体和变量
recap假设协方差矩阵var(x)=Z的谱分解Z=VAVT·=diag()..≥为的特征根V.V,为相应的单位长度相互正交的特征向量;·V=(vi.,)载荷矩阵, VTV=VT=I,总体PCA:·主成分:y=VTxeRP,var(y)=△, =vfx-2vx, var(y,)=,j= ,., p..载荷v, =cov(x,y,)/ a,Vy =cov(xi,y,)/ j·取前k个主成分使得方差累计贡献率(+..+)/+...+a)>CR命令:>princomp(covmat=sigma)#对方差矩阵sigma进行总体PCA分析2
2 recap ( ,., ) . ,., ; ( ,., ) . , var( ) 1 1 1 1 2 p p p p p V V V VV I diag V V T T T 载荷矩阵, 为相应的单位长度相互正交的特征向量 : 为 的特征根 假设协方差矩阵 的谱分解 v v v v x . )/ . . cov( , )/ cov( , )/ var( ) , 1,., . , var( ) . PCA : 1 1 1 k C y v x y y v x y j p V R k p j j j ij i j j j j p i j j ij i p 取前 个主成分使得方差累计贡献率( ( ) 载荷 , , 主成分: 总体 v x v x y x y T T R命令:> princomp(covmat=sigma) # 对方差矩阵sigma进行总 体PCA分析
样本PCA:样本x..X,ERP,样本协方差矩阵S的谱分解:S=VAVT,A= diag(...a,), a...≥ap, VTV=VVT =Ip, Vpxp =(Vi..,V,).X,ERP的主成分变换:y,=VT(x,-x),(y,=VTx,也可以定义为主成分,与y,=VT(x,-x)相差一个平移常数)主成分矩阵:Yxp=XV或Y=XV取前k个主成分使得(+..+)(+..+,)>0.8PC散点图:在二维散点图上画出前k个主成分的两两散点图。R命令:>princomp(x)#对数据x进行PCA分析> prcomp(x)#不充许总体PCA,充许p>nm
3 diag( ,., ) . ( ,., ). ,., , PCA 1 1 1 1 p p p p p p p n V V VV I V S V V R S v v x x , , , , 样本 样本协方差矩阵 的谱分解: 样本 : T T T ( . )/( . ) 0.8. ( ) ) ( ) 1 1 k p n p c i i i i i i p i k Y X V Y XV V V R V 取前 个主成分使得 主成分矩阵: 或 ( 也可以定义为主成分,与 相差一个平移常数 的主成分变换: , y x y x x x y x x T T T 在二维散点图上画出前 个主成分的两两散点图。 散点图: k PC R命令:> princomp(x) # 对数据x进行PCA分析 > prcomp(x) #不允许总体PCA,允许𝑝 > 𝑛
样本PCA例子第11讲的几个例子都是总体PCA(只有协方差矩阵或相关系数,而没有完整的数据),R函数为princomp(covmat=)总体PCA只能得到载荷、特征根,因为没有原始数据X无法计算主成分。样本PCA是指原始数据X可用的情形,样本PCA的R函数:princomp(X):总体PCA和样本PCA,只能处理n>p情形;prcomp:允许n≤p,不能做总体PCASvd(X):奇异值分解,可以做PCA。注意:princomp和prcomp的载荷符号相反。样本PCA输出结果与总体PCA基本相同,因为有原始数据X,可以计算每个样本的主成分(princomp输出结果中的score,prcomp输出的x)。4
4 princomp(X): 总体PCA和样本PCA , 只能处理 𝑛 > 𝑝 情形 ; prcomp: 允许𝑛 ≤ 𝑝, 不能做总体PCA. Svd(X):奇异值分解,可以做PCA。 注意:princomp和prcomp的载荷符号相反。 样本PCA例子 第11讲的几个例子都是总体PCA (只有协方差矩阵或相关系数,而没有 完整的数据),R函数为 princomp(covmat= ) 总体PCA只能得到载荷、特征根,因为没有原始数据 𝑋 无法计算主成分。 样本PCA是指原始数据𝑋可用的情形, 样本PCA的R 函数: 样本PCA输出结果与总体PCA基本相同,因为有原始数据𝑋,可以计算每 个样本的主成分(princomp输出结果中的score, prcomp输出的x)
例1(样本PCA,第一讲例2的一部分数据)800个人的1000个基因位点的基因型数据,取值0,1,2(aa,Aa,AA)。前两个主成分基本能将各个种族区分开:AMREASSASto#代码:gene=read.table("http://staff.ustc.edu.cn/~ynyang/vector/data/genedatal.txt")race=gene[,1#第一列是种族(辅助信息,1维,不需要降维)x-gene[,-1]#基因型x=as.matrix(x)#n=800,p=1000mypca=prcomp(x)#对基因型数据进行PCA分析pc=mypcasx#主成分矩阵800x800plot(pc[,1:2])#前两个主成分的散点图,数据大概有四个类(cluster)points(pc[1,2],col=as.factor(race))#标识种族信息,四个类分别对应AFR,EAS,EUR(SAS+AMR)legend(5,-4,legend=c("AFR","AMR","EAS""EUR","SAS"),col=1:5,pch=rep(1,5))
5 例1 (样本PCA,第一讲例2的一部分数据)800个人的1000个基因位点的 基因型数据,取值0,1,2 (aa,Aa,AA)。前两个主成分基本能将各个种族区 分开: #代码: gene=read.table("http://staff.ustc.edu.cn/~ynyang/vector/data/genedata1.txt") race=gene[,1] #第一列是种族 (辅助信息,1维,不需要降维) x=gene[,-1] #基因型 x=as.matrix(x) #n=800,p=1000 mypca=prcomp(x) # 对基因型数据进行PCA分析 pc=mypca$x #主成分矩阵 800x800 plot(pc[,1:2]) # 前两个主成分的散点图,数据大概有四个类(cluster) points(pc[1,2], col=as.factor(race)) #标识种族信息,四个类分别对应AFR,EAS,EUR,(SAS+AMR) legend(5,-4,legend=c("AFR","AMR","EAS","EUR","SAS"), col=1:5, pch=rep(1,5))