美文网首页
MSI数据之PCA

MSI数据之PCA

作者: 蚂蚁爱吃饭 | 来源:发表于2021-05-25 17:28 被阅读0次

PCA:主成分分析

> head(d2)
      MSI01_13  MSI03_13  MSI04_14  MSI05_11 MSI06_16_17  MSI07_16  MSI09_13
PS51 0.4498141 0.4651972 0.4848943 0.4361070  0.20826833 0.3769517 0.6301273
PS54 0.4746377 0.5844156 0.7548387 0.3363914  0.27750809 0.4518519 0.5860058
PS24 0.3634085 0.4045618 0.3145462 0.5762712  0.07561308 0.2380952 0.2373188

首先对数据进行去中心化(矩阵X),再计算协方差矩阵(就是样本与样本[列与列]之间的协方差,就得到了一个协方差的方阵:1/mXXt,就是X乘以X的转置除以m,m是样本数),再对协方差矩阵计算特征值及特征向量。注意:这里的矩阵跟我们平时用的矩阵有点点不一样,我们平时习惯每列为一个特征,每行为一个样本,但这里需要做一个转置,即每列是一个样本,每行是一个特征。因为我们在做去中心化的时候,是对每一行(每个特征的各个不同样本的值)做去中心化。毕竟PCA是通过方差分析去找到样本之间的差异。PCA本质上是将方差最大的方向作为主要特征,并且在各个正交方向上将数据“离相关”,也就是让它们在不同正交方向上没有相关性。

dat_eigen<-scale(d2,scale=T)   #对数据进行中心化
dat_eigen1<-cor(dat_eigen)  #计算协方差
dat_eigen2<-eigen(dat_eigen1)  #计算特征值、特征向量
> head(dat_eigen2)
$values
 [1] 21.64952400  1.59014646  1.41402424  1.34024733  1.15384278  1.12539066
 [7]  0.96383043  0.81005078  0.72271816  0.63414797  0.58440232  0.50756673
[13]  0.49793036  0.43728669  0.41097126  0.36548761  0.33579268  0.29435889
[19]  0.27654133  0.25101061  0.22254893  0.20379585  0.17582524  0.14191081
[25]  0.12978371  0.11628539  0.10816243  0.09840867  0.07600092  0.07335412
[31]  0.06297383  0.05873924  0.05109777  0.03713575  0.03332568  0.02656279
[37]  0.01881759
$vectors
             [,1]         [,2]        [,3]         [,4]          [,5]
 [1,] -0.19082724 -0.089913619  0.02463533 -0.043029856 -0.0030625302
 [2,] -0.18679563 -0.045154253 -0.06958644  0.046588102 -0.0644640345
 [3,] -0.16112044  0.375311725  0.06290167  0.052979424 -0.1319818670
 [4,] -0.15138995 -0.479078021 -0.05317186 -0.035116314  0.0701551614
 [5,] -0.16926155  0.137769933  0.01135951  0.204991543  0.0769034415
 [6,] -0.16471325 -0.058799750 -0.10011849  0.312563972 -0.2361555168
 [7,] -0.14662039  0.261277365  0.12161985 -0.094210792  0.2345824869
library(magrittr)
>dat_eigen<-scale(d2,scale=T) %>% cor() %>% eigen()  #使用管道

也可以使用prcomp函数:

 > d2.pca<-prcomp(d2,scale=T,retx=T)
> summary(d2.pca)
Importance of components:
                          PC1     PC2     PC3     PC4     PC5     PC6     PC7
Standard deviation     4.6529 1.26101 1.18913 1.15769 1.07417 1.06084 0.98175
Proportion of Variance 0.5851 0.04298 0.03822 0.03622 0.03118 0.03042 0.02605
Cumulative Proportion  0.5851 0.62810 0.66632 0.70254 0.73372 0.76414 0.79019
                           PC8     PC9    PC10    PC11    PC12    PC13    PC14
Standard deviation     0.90003 0.85013 0.79633 0.76446 0.71244 0.70564 0.66128
Proportion of Variance 0.02189 0.01953 0.01714 0.01579 0.01372 0.01346 0.01182
Cumulative Proportion  0.81208 0.83162 0.84875 0.86455 0.87827 0.89172 0.90354
                          PC15    PC16    PC17    PC18    PC19    PC20    PC21
Standard deviation     0.64107 0.60456 0.57948 0.54255 0.52587 0.50101 0.47175
Proportion of Variance 0.01111 0.00988 0.00908 0.00796 0.00747 0.00678 0.00601
Cumulative Proportion  0.91465 0.92453 0.93360 0.94156 0.94903 0.95582 0.96183
                          PC22    PC23    PC24    PC25    PC26    PC27    PC28
Standard deviation     0.45144 0.41932 0.37671 0.36026 0.34101 0.32888 0.31370
Proportion of Variance 0.00551 0.00475 0.00384 0.00351 0.00314 0.00292 0.00266
Cumulative Proportion  0.96734 0.97209 0.97593 0.97944 0.98258 0.98550 0.98816
                          PC29    PC30   PC31    PC32    PC33   PC34   PC35
Standard deviation     0.27568 0.27084 0.2509 0.24236 0.22605 0.1927 0.1826
Proportion of Variance 0.00205 0.00198 0.0017 0.00159 0.00138 0.0010 0.0009
Cumulative Proportion  0.99022 0.99220 0.9939 0.99549 0.99687 0.9979 0.9988
                          PC36    PC37
Standard deviation     0.16298 0.13718
Proportion of Variance 0.00072 0.00051
Cumulative Proportion  0.99949 1.00000

特征值=标准差的平方
eigen values=sdev^2
Proportion of Variance=eigen value/sum(eigen values)=Standard deviation^2/sum(eigen values)
我这里是37个,可以算出21.64952400/37=0.5851。第一个PC占了一大半,后面的占比都不高。

计算特征值特征向量,是需要做协方差计算的,当数据量很大(很多行很多列)时,这个计算太大了,于是有另外一个分解的方法:SVD。

依葫芦画瓢:


image.png
image.png
image.png
image.png
image.png

我这里几个绿色的样本(Pxx)是明确的MSI-H的,蓝色的是Tumor的(MS状态未知),红色的是gDNA(理论上都是MSS)。可以看到T28样本跑到MSI-H那去了,我看下这个样本的原始数据:

$tail -5 MSI
MSI34_13        0.476618705035971       -0.0747779759640289
MSI38_13        0.487825356842989       -0.114388608157011
MSI39_13_14     0.368807339449541       -0.0332916275504587
MSI44_12        0.526033690658499       -0.126448941341501
MSI-H   30

这个是我们用偏差分析判为MSI-H的样本。还挺符合的~

PCA主要是用于数据降维。他通过计算样本与样本(矩阵的列之间)的协方差,所以它是一个对称矩阵。协方差越大,两个样本的相关性越大(话也不能这么说,需要除以两个的标准差,这个就是Pearson值了~) 。就是通过一步转换,把矩阵映射到新的坐标系(假如不降维,那么就是原来的秩的矩阵),但往后的PC对variation的贡献是越来越小,也即特征值越小,可以去掉,一般选择Cumulative Proportion>80-90%的PCs就可以了。

相关文章

  • MSI数据之PCA

    PCA:主成分分析 首先对数据进行去中心化(矩阵X),再计算协方差矩阵(就是样本与样本[列与列]之间的协方差,就得...

  • 2018-07-12课程笔记(2):DIMENTION REDU

    【关键词:数据降维,PCA】 PCA(Principal Components Analytics)重要数据的定位...

  • 浅谈PCA降维原理

    PCA是什么 PCA(Principal Component Analysis)是一种常用的数据分析方法PCA通过...

  • PCA算法推导

    一、PCA降维 1.PCA简介 PCA(主成分分析)是一种数据降维的方法,即用较少特征地数据表达较多特征地数据(数...

  • 数据处理之PCA

    推荐好文PCA的数学原理本文将会用Python来实现PCA,帮助更好的理解 视频地址:https://www.yo...

  • 2019-04-15

    PCA绘图模仿笔记 PCA(Principal Component Analysis)是一种常用的数据分析...

  • 主成份分析算法 PCA

    PCA 算法主要是把高维度的数据降为低维度数据。典型地应用包括数据压缩和数据可视化。本文介绍 PCA 算法及其典型...

  • PCA算法理解/学习

    一、PCA 主成分分析(Principal components analysis,PCA)是一种分析、简化数据集...

  • 机器学习系列(二十)——PCA在手写数字数据集的应用

    本篇将在真实数据集——手写数字数据集上使用PCA。 PCA应用到真实数据集 简单手写数字数据集包括1797个样本,...

  • PCA应用--二

    参考:PCA降维算法总结以及matlab实现PCA(个人的一点理解) 一、大致流程 PCA的应用范围:数据压缩或者...

网友评论

      本文标题:MSI数据之PCA

      本文链接:https://www.haomeiwen.com/subject/weqcsltx.html