电竞比分网-中国电竞赛事及体育赛事平台

分享

如何用 GCTA軟件進(jìn)行PCA分析并進(jìn)行可視化

 育種數(shù)據(jù)分析 2025-11-18 發(fā)布于河南

大家好,我是鄧飛,今天介紹一下如何用GCTA計(jì)算PCA,并使用R語(yǔ)言進(jìn)行可視化。

一、GCTA 做 PCA 的核心步驟

  1. 數(shù)據(jù)準(zhǔn)備與質(zhì)控
    :需輸入 PLINK 格式(.bed/.bim/.fam)的基因型數(shù)據(jù),先過濾低質(zhì)量 SNP(缺失率 > 0.05)和個(gè)體(缺失率 > 0.1),排除親緣關(guān)系過近的個(gè)體。
  2. 構(gòu)建遺傳相關(guān)矩陣(GRM)
    :用--make-grm命令,基于全基因組 SNP 計(jì)算所有個(gè)體間的遺傳相似度矩陣,僅保留常染色體 SNP 避免性別偏差。
  3. 執(zhí)行 PCA 分析
    :用--pca [k]命令(k 指定需提取的主成分個(gè)數(shù),常用 10-20),基于 GRM 進(jìn)行特征值分解。
  4. 結(jié)果輸出與解讀
    :生成.eigenvec(個(gè)體 - 主成分坐標(biāo))和.eigenval(各主成分方差解釋占比)文件,可用于繪制 PCA 散點(diǎn)圖或作為協(xié)變量納入后續(xù)分析。

二、GCTA 做 PCA 的核心優(yōu)勢(shì)

  • 遺傳針對(duì)性強(qiáng)
    :直接基于遺傳標(biāo)記計(jì)算相似度,主成分能精準(zhǔn)反映個(gè)體間遺傳差異,可有效校正 GWAS 中的種群分層偏倚。
  • 計(jì)算效率高
    :優(yōu)化了 GRM 計(jì)算算法,支持大樣本(數(shù)萬個(gè)體)和高密度 SNP(百萬級(jí))數(shù)據(jù),運(yùn)行速度優(yōu)于傳統(tǒng) PCA 工具(如 EIGENSOFT)。
  • 兼容性好
    :與 PLINK 數(shù)據(jù)格式無縫銜接,輸出結(jié)果可直接導(dǎo)入 R、Python 等軟件進(jìn)行可視化,且能與 GCTA 的其他功能(如遺傳力估算)聯(lián)動(dòng)。

三、GCTA 做 PCA 的的步驟

使用--make-grm-alg進(jìn)行設(shè)置,0位Yang的方法,1位Van的方法。「Yang的方法:」

GRM = sum{[(xij- 2pi)*(xik- 2pi)] / [2pi(1-pi)]}/N

「Van的方法:」

GRM = sum[(xij- 2pi)(xik- 2pi)] / sum[2pi(1-pi)]

1 Yang的方法

gcta64 --bfile ../test --make-grm --make-grm-alg 0 --out kinship_yang
gcta64 --grm kinship_yang --pca 20 --out pca_re

結(jié)果生成:

pca_re.eigenval  pca_re.eigenvec  pca_re.log

2 Van的方法

這里,將0變?yōu)?.

gcta64 --bfile ../test --make-grm --make-grm-alg 1 --out kinship_yang
gcta64 --grm kinship_yang --pca 20 --out pca_re

結(jié)果生成:

pca_re.eigenval  pca_re.eigenvec  pca_re.log

PCA可視化

這里,先對(duì)數(shù)據(jù)進(jìn)行處理,計(jì)算每個(gè)主成分解釋百分比,以及前幾個(gè)PCA的累計(jì)百分比。

pcaal = fread("pca_re.eigenval")
head(pcaal)
pcaal$por = pcaal$V1/sum(pcaal$V1)
pcaal$cumula = cumsum(pcaal$por)
pcaal$index = as.factor(1:dim(pcaal)[1])
head(pcaal)

 碎石圖(折線圖)

這里,選擇前10個(gè)主成分。

# 選擇最佳的PCA個(gè)數(shù):碎石折線圖
pcaal[1:10,] %>%
  ggplot(aes(x=index,y=por, group=1))+
  geom_point(size=4)+
  geom_line()+
  labs(title="Scree plot: PCA")

碎石圖(條形圖)

這里,選擇前10個(gè)主成分。

# 選擇最佳的PCA個(gè)數(shù):碎石條形圖
pcaal[1:10,] %>%
  ggplot(aes(x=index,y=por))+
  geom_col()+
  labs(title="Scree plot: PCA on scaled data")

PCA可視化

「代碼:」

ggplot(pcaec,aes(x = V3,y = V4)) + geom_point() + 
  xlab(paste0("PC1 ",round(pcaal$por[1],4),"%")) + 
  ylab(paste0("PC2 ",round(pcaal$por[2],4),"%"))

PCA分析拓展

1,PCA分析,可以根據(jù)分組,繪制置信區(qū)間

分組PCA

2,PCA分析中,可以將PCA的百分比和累計(jì)百分比繪制到一張圖上面。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章 更多