现在CNV分析方法有很多,但是随着NGS成本的降低,高深度的测序下背景下,read count(depth)方法逐渐变为各个分析软件的主流。最近在看GATK的CNV分析方法,其中在创建PoN(PanelofNormals)和denoise过程都使用了PCA(Principal Component Analysis)的奇异值分解(Singular Value Decomposition, SVD)方法,因此有比较对PCA思路做个梳理以及了解下常见的如何使用PCA来降噪(denoise) R语言中,PCA一般常用的基础函数是prcomp和princomp,两者有些差别:
prcomp适用于R mode和Q mode,而princomp只适用于R mode
prcomp基于奇异值分解(SVD),求最小二乘的优化解(最小化的结果要求寻找一个正交矩阵AB,记作H[q],H[q]为投影矩阵,把每个点X[i]投影到q维结构H[q]x[i],这是由V[q]的列限定的x[i]的正交投影)
princomp是基于相关系数矩阵的特征值分解,方差最大化方法(本质上是求原始变量协方差/相关系数矩阵的特征值和特征向量,第i主成分对应着协方差的第i大特征值,投影方向为该特征值对应的特征向量,而特征值等于相应主成分的方差,因此代表着对应主成分分解原始信息的多少)
prcomp在参数中如果设定了scale=T,那么如果princomp结果想与prcomp保持一致,则princomp函数需加上cor=T参数(其实原因在于cor和cov之间刚好相差了一个scale)
R mode是指基于variable分析,一般来研究variable之间的关系,当数据集的observation数目大于variable时;Q mode是指基于ob