我们常看到的PCA图(如下)中,每个成分都对应了每个特征方差贡献率。通常,求得了PCA降维后的特征向量,我们就可以绘图,但各个维度的方差解释率没有得到,就无法获得PC坐标的百分比。
(文章链接:https://doi.org/10.1038/s41467-021-23879-2)
方差解释率计算方式(以R为例)
1.方差已知
若通过plink,GCTA等软件计算pca值,会获得eigenvec和eigenval两个文件,前者记录特征向量,用于绘图;后者记录特征方差,用来计算每个PC所占的比重。计算方式其实就是将各个特征值(方差)大小除以求和的总特征值就得到了各个特征贡献性占比。
eigval <- read.table("snp.gcta.eigenval", header = F) percentage <- eigval$V1/sum(eigval$V1)*100 #文件第一列为特征方差
2.方差未知
根据特征向量计算出来,先计算标准差,进而计算特征方差。
sdev<- apply(pca.scores,2,sd) #根据特征向量计算标准差,pca.scores为特征向量 percentage <- pca$sdev^2/sum(pca$sdev^2)*100 #手动计算方差解释率
如果觉得我的文章对您有用,请随意打赏。你的支持将鼓励我继续创作!