[1] 15
Is there any signal in your study?
Or problems with your analysis?
2025-01-23
Null hypothesis (\(H_0\))
Alternative hypothesis (\(H_A\))
Flat/uniform distribution:
Decreasing slope from left to right:
pvalue histogram suggests signal, but study was underpowered
(Breheny 2018) define a regular pvalue histogram as the 2 scenarios we’ve seen so far:
A regular pvalue histogram suggests no errors in your study/analysis , although you might still be underpowered
(Breheny 2018) define an irregular pvalue histogram as any other shape, for example in (Fischl et al. 2014):
Suggests a problem in your study or analysis:
Example:
(Breheny 2018) propose a permutation method for the previous signal and QC tests that accounts for correlation:
Unpublished gene expression study
Histogram suggests problem, but genes are correlated:
Permutation-corrected QC cutoff suggests no problem:
pvalue.histogram <- function(
pvalues, # vector of pvalues
b = 0.05, # width of each bin in histogram
alpha = 0.05, # significance level of signal test
... # other args to create.histogram
) {
stopifnot(all(is.numeric(pvalues)) & all(pvalues > 0) & all (pvalues < 1));
stopifnot(length(b) == 1 & is.numeric(b) & b >= 0 & b <= 0.2);
p.df <- data.frame(p = pvalues);
m <- sum(!is.na(pvalues));
signal.cutoff <- qbinom(
p = 1 - alpha,
size = m,
prob = b
);
qc.cutoff <- qbinom(
p = 1 - alpha / (1 / b),
size = m,
prob = b
);
BoutrosLab.plotting.general::create.histogram(
x = p.df$p,
ylab.label = 'Frequency',
xlab.label = 'pvalues',
breaks = seq(0, 1, by = b),
type = 'count',
abline.h = c(signal.cutoff, qc.cutoff),
abline.col = c('red', 'blue'),
abline.lwd = 3
);
}