-
用plink做主成分分析,就短短如下一行代码便能完成。但是plink到底对我的数据作了什么处理?
plink --vcf mp.vcf --out pca
plink --vcf tmp.vcf --allow-extra-chr --double-id --out pca -
经过简单查阅得知,PCA是基于欧式距离矩阵的一个降维
有两个关键词:欧式距离矩阵 / 降维
另外还能搜到的是:矩阵和特征向量,线性代数
本文也做个降维处理,只考虑两个维度和三个维度,即矩阵不超过3x3
义务教育阶段中涉及到的几何都是属于欧式几何,一个基本的定理是:
对于点A (x,y) 和 点B (m,n),线段AB的长度或者点A到点B的(欧式)距离为:
欧式距离的公式
这是在二维空间中,三维空间同理
对于vcf文件(SNP),其格式可以简化为:每个个体在每一个SNP位点的SNP组成情况:
vcf文件的简化
0意味着0/0 (和参考基因组完全一样),1意味着1/0 (杂合子),2意味着1/1 (和参考基因组完全不一样的纯合子)
A1和A2两个个体的三个SNP的组成情况
群体遗传学中,PCA通常是表示种群之间亲缘关系的相对远近。图上的每一个点代表一个样本:
举个例子
4.所以很容易想到:SNP组成 欧式距离 PCA
SNP1, SNP2, SNP3(的值)就可以看成x, y, z坐标
此时就变成了计算三维空间中的A1和A2两点的距离
A1和A2的欧式距离也就是 根号5
用R进行验证:
用R算的和我算的一样
这里有3个SNP,是三维空间中的空间距离,所以都不用做任何处理,直接把三个SNP的值当成三个坐标,就能把A1和A2的相对位置画出来
如果vcf文件中有n个SNP,那算的就是N维空间中的空间距离,这个时候就需要降维到三维以下才能被我们看见
-
PCA - 基于欧式距离的降维
欧式几何,那就直接构建一个边长为345的直角三角形:
即对于距离矩阵为345的这三个点,他们的相对位置就是一个直角三角形
用R进行验证:
PCoA如果是基于欧式距离矩阵就和PCA画等号, PCoA并不要求输入距离矩阵的类型
如图:
结果就是一个直角三角形
- 还存在的问题
6.1 每个主成分的贡献率
6.2 环境因子与主成分之间的相关性
6.3 本文也是对实际问题的一个简化和降维, 理解即可
网友评论