Department of Economics and Business Economics

Efficient toolkit implementing best practices for principal component analysis of population genetic data

Research output: Contribution to journal/Conference contribution in journal/Contribution to newspaperJournal articleResearchpeer-review


  • btaa520

    Final published version, 791 KB, PDF document


MOTIVATION: Principal Component Analysis (PCA) of genetic data is routinely used to infer ancestry and control for population structure in various genetic analyses. However, conducting PCA analyses can be complicated and has several potential pitfalls. These pitfalls include (1) capturing Linkage Disequilibrium (LD) structure instead of population structure, (2) projected PCs that suffer from shrinkage bias, (3) detecting sample outliers, and (4) uneven population sizes. In this work, we explore these potential issues when using PCA, and present efficient solutions to these. Following applications to the UK Biobank and the 1000 Genomes project datasets, we make recommendations for best practices and provide efficient and user-friendly implementations of the proposed solutions in R packages bigsnpr and bigutilsr.

RESULTS: for example, we find that PC19 to PC40 in the UK Biobank capture complex LD structure rather than population structure. Using our automatic algorithm for removing long-range LD regions, we recover 16 PCs that capture population structure only. Therefore, we recommend using only 16-18 PCs from the UK Biobank to account for population structure confounding. We also show how to use PCA to restrict analyses to individuals of homogeneous ancestry. Finally, when projecting individual genotypes onto the PCA computed from the 1000 Genomes project data, we find a shrinkage bias that becomes large for PC5 and beyond. We then demonstrate how to obtain unbiased projections efficiently using bigsnpr.

CONCLUSION: Overall, we believe this work would be of interest for anyone using PCA in their analyses of genetic data, as well as for other omics data.

AVAILABILITY: R packages bigsnpr and bigutilsr can be installed from either CRAN or GitHub (see A tutorial on the steps to perform PCA on 1000G data is available at All code used for this paper is available at

SUPPLEMENTARY INFORMATION: Supplementary data are available at Bioinformatics online.

Original languageEnglish
JournalBioinformatics (Online)
Publication statusPublished - Aug 2020

See relations at Aarhus University Citationformats

ID: 187634457