【R语言】绘制PCA之二:PCA加置信度

PCA分析

GCTA

gcta64 --bfile bestqc  --make-grm --make-grm-alg 0 --out kinship0 ;
gcta64 --grm kinship0 --pca 3  --out gcta

Plink

plink --file bestqc --pca 5 header tabs


具体可见我之前总结的:CSDN

 6.1 利用plink计算pca-----直接出结果

plink --file plink --pca 3 header --out plink_pca
#如
plink --file plink --pca 3 header --out plink_pca3 --chr-set 30

#默认是提取前20个pca
# header 结果文件加表头,默认没有表头

out.file 特征值.eigenval .eigenvec

#解释的方差 (PCA1/(PCA1 + PCA2 +PCA3)) 

结果文件具体内容

 

 6.2 利用GCTA计算pca-----分2步;先计算亲缘关系矩阵---再计算PCA

1.转bed格式
# 因为我没有fam文件,用plink转换二进制文件
#  省略 plink --file plink --make-bed --out plink --chr-set 30 

2.计算亲缘关系
gcta_1.94.0beta/gcta64 --bfile plink --make-grm --make-grm-alg 0 --out plink_GCTA_Yang

# GCTA主要是分析人的数据,如果分析其他动植物需要对染色体体进行重新编号,不然会报错:
Error: Line 56287 of [plink.bim] contains illegal chr number, please check
主要做人的 要求为数字染色体:
#用plink提取染色体  plink --file plink --make-bed --out plink --chr-set 30 --chr 1-13

3.pca
gcta_1.94.0beta/gcta64  --grm plink_GCTA_Yang --pca 3 --out plink_GCTA_Yang_pca3

 


PCA可视化做主成分分析加"置信区间

head(iris)
ord <-prcomp(iris[,1:4]) #R语言中,PCA的函数 princomp , prcomp 
ord <-princomp(iris[,1:4]) 
summary(ord)

summ <- summary(ord)
#PCA解释度
xlab <- paste0("PC1(",round(summ$importance[2,1]*100,2),"%)")
ylab <- paste0("PC2(",round(summ$importance[2,2]*100,2),"%)")
#我们看到PC1的方差解释率达92.46%,PC2的方差解释率为5.31%,

dt<-ord$x
df<-data.frame(dt,iris$Species)
head(df)

library(ggplot2)

ggplot(data = df,aes(x=PC1,y=PC2,color=iris.Species))+
  # 绘制置信椭圆:
  stat_ellipse(aes(fill=iris.Species),
               type = "norm", geom = 'polygon',alpha=0.2,color=NA,linetype = 1)+ 
  #geom = 'polygon' 填充
  geom_point()+labs(x=xlab,y=ylab,color="")+
  guides(fill=F)

ggplot(data = df,aes(x=PC1,y=PC2,color=iris.Species))+
  # 绘制置信椭圆:
  stat_ellipse(aes(fill=iris.Species),
               type = "norm", geom = 'polygon',alpha=0.2,color=NA,linetype = 2, show.legend = FALSE)+ 
  #geom = 'polygon' 填充 
  #默认的“t”假设多元t分布,而“norm”假设多元正态分布
  geom_point()+labs(x=xlab,y=ylab,color="")+
  guides(fill=F)

p1

#参考 R语言教程|如何做主成分分析加"置信区间"? - 知乎

 #每个群组加上置信椭圆


stat_ellipse(
  mapping = NULL,
  data = NULL,
  geom = "path",
  position = "identity",
  ...,
  type = "t",
  level = 0.95,
  segments = 51,
  na.rm = FALSE,
  show.legend = NA,
  inherit.aes = TRUE
)


 #stat_ellipse 函数默认对每个类别的数据计算自己的置信区间。
 #stat_ellipse 函数默认会使用 ggplot 中的 aes 设置,
 #如果希望 stat_ellipse 使用自己的 aes 设置,需要将参数 inherit.aes 设置为 FALSE。

level:置信区间水平,一般0.95/ 0.99

根据0.9的置信区间水平添加的点圈,可以根据自己的需求调节置信水平,将尽量多的点囊括进来


PCA 置信区间

我们需要根据点的分布计算他们的置信区间。

type = "t" 假设数据服从T分布

 type = "norm" 假设数据服从正态分布(常用)

参考:Cpca置信区间 - 百度文库

R语言主成分分析(PCA)加置信椭圆 - 简书

R语言给PCA加个小圈圈

生信常用分析图形绘制07 -- PCA图

看完就能实战群体进化之PCA分析 | 含画图代码和实战数据                               

一文读懂PCA分析 (原理、算法、解释和可视化) - 知乎

看完就能实战群体进化之PCA分析 | 含画图代码和实战数据

PCA(Principal Component Analysis,主成分分析)是一种常用的数据降维技术,可以帮助我们在高维数据中找到最主要的特征。在R语言中,我们可以使用`prcomp()`函数来进行PCA分析。 首先,我们需要准备数据。数据应该是一个矩阵或数据框,其中每一列是一个变量,每一行是一个观测值。假设我们有一个环境因子的数据集,其中包含多个环境变量(如温度、湿度、光照等)和观测点(样本)。我们可以将数据读取到R中,并将其格式化为合适的矩阵或数据框。 然后,我们可以使用`prcomp()`函数进行PCA分析。这个函数接受一个数据矩阵或数据框作为输入,并返回一个PCA对象。我们可以将这个对象保存在一个变量中,以便后续的分析和可视化。 例如,假设我们的数据矩阵名为`env_data`,其中有4个环境变量和100个观测点。我们可以使用以下代码进行PCA分析: ```R pca_result <- prcomp(env_data) ``` 在这个例子中,`pca_result`是保存PCA结果的变量。我们可以使用`summary()`函数来查看分析的摘要信息,例如各主成分的方差解释比例和贡献度,以及每个环境变量在主成分中的负荷。 ```R summary(pca_result) ``` 我们还可以使用`plot()`函数将PCA结果可视化,例如绘制主成分的方差解释比例图和负荷图。 ```R plot(pca_result) ``` 这样,我们就可以使用R语言中的PCA函数(`prcomp()`)对环境因子进行分析,并得到相应的结果和可视化图形。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值