QQ plot is an essential tool in GWAS. Here I would like to organize some basic ideas of QQ plot and its application in GWAS.
What is QQ plot?
QQ plot is a graphic tool for testing if a set of data came from some theoretical distribution.
Examples in R
Test if a set of data comes from normal distribution. In R,
Create a QQ plot for any distribution. In R,
y <- qunif(ppoints(length(randu$x))) qqplot(randu$x,y)
QQ plot in GWAS
Plot quantile distribution of observed p-values (on the y-axis) versus the quantile distribution of expected p-values(uniform distribution)
- null GWAS: straight line
- strong association: a line with a tail
library(data.table) pvals <- fread('https://broadinstitute.org/files/shared/diabetes/scandinavs/DGI_chr3_pvals.txt') observed <- sort(pvals$PVAL) lobs <- -(log10(observed)) expected <- c(1:length(observed)) lexp <- -(log10(expected / (length(expected)+1))) plot(c(0, 7), c(0, 7), col = 'red', lwd = 3, type = 'l', xlab = 'Expected (-logP)', ylab = 'Observed (-logP)', xlim = c(0, 7), ylim = c(0, 7), las = 1, xaxs = 'i', yaxs = 'i', bty = 'l') points(lexp, lobs, pch = 23, cex = .4, bg = 'black')