第一步,对所有样本进行中心化
第二步,求特征协方差矩阵
第三步,求协方差矩阵的特征值和特征向量
第四步,将特征值按照从大到小的顺序排序,选择其中最大的k个,然后将其对应的k个特征向量分别作为列向量组成特征向量矩阵
第五步,将样本点投影到选取的特征向量上(用欧氏距离方程计算点间距离)
library(factoextra)
library(stringr)
data <- t(TPM)
all_0_col <- which(apply(data, 2, var)==0) # 删除方差为0的列
data.pca <- prcomp(data[,-all_0_col], scale. = T) #对数据标准化后做PCA,这是后续作图的文件
## 画图
# 设置分组:
group=str_sub(colnames(TPM),1,1) ## 样本
fviz_pca_ind(data.pca,
col.ind=group,
mean.point=F, # 去除分组的中心点
label = "none", # 隐藏样本标签
addEllipses = T, # 添加边界线
legend.title="Groups",
ellipse.type="confidence", # 绘制置信椭圆
ellipse.level=0.9) +
# palette = c("#CC3333", "#339999"))+ #Cell配色哦
theme(panel.border = element_rect(fill=NA,color="black", size=1, linetype="solid"))#加个边框
参考
https://www.jianshu.com/p/fc6fb815c170
https://blog.csdn.net/weixin_59909329/article/details/123985532