具有-log10(p)分布的GWAS QQPlot

时间:2019-01-26 20:41:39

标签: r ggplot2

我正在尝试通过GWAS研究创建一个100个对数转换的p值的QQPlot。想法是采用-log(p)将放大最小的p值,以使其更易于查看。 (reference

我能够轻松地在base e的ggplot2中完成此操作,但是我的PI希望在base 10中看到它。不幸的是,我认为base 10没有内置的分位数功能,因此我写了一个手动(从reference中的代码修改而来)。

但是,这些图形看起来并不完全相同,所以我想知道自己是否正确执行了操作。如果有人能让我知道我的代码是否有意义或者是否有更好的方法,我将不胜感激!

library(tidyverse)

# Simulate 100 p values drawn from a uniform distribution
p.values <- tibble(p = runif(100))

# QQPlot with base e
ggplot(p.values, aes(sample = -log(p))) +
  stat_qq(distribution = qexp) +
  geom_abline(intercept = 0, slope = 1)

# Theoretical quantile function for -log10(p)
qlog10 <- function(p.values) {
  theoretical <- rank(p.values)/length(p.values)
  return(-log10(theoretical))
}

# QQplot with base 10
ggplot(p.values, aes(x = qlog10(p), y = -log10(p))) + 
  geom_point() +
  geom_abline(intercept = 0, slope = 1)

reprex package(v0.2.1)于2019-01-26创建

0 个答案:

没有答案