# Bioconductor Qvalue

> This package takes a list of p-values resulting from the simultaneous testing of many hypotheses and estimates their q-values and local FDR values. The q-value of a test measures the proportion of false positives incurred (called the false

- Skill: `biomate-ai/bioconductor-qvalue` (Agent Skill)
- Install (CLI): `npx skillmds@latest add biomate-ai/bioconductor-qvalue`
- Raw SKILL.md: https://api.skillmd.com/api/skills/biomate-ai/bioconductor-qvalue/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: biomate-ai (https://skillmd.com/u/biomate-ai)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/biomate-ai/bioconductor-qvalue

---


# qvalue

## Dependencies & Environment

> Package-intrinsic requirements from the Bioconductor landing page — reproduce in any R environment.

- **Version:** 2.44.0 · **Bioconductor:** 3.23 · **R:** ≥ 4.6
- **Imports:** ggplot2, reshape2
- **Install:** `BiocManager::install("qvalue")`

## When to Use
- **False Discovery Rate Estimation**: When analyzing thousands of features (e.g., differential gene expression) to estimate q-values and control the false discovery rate using `qvalue`.
- **Estimating True Nulls**: When you need to estimate the overall proportion of true null hypotheses ($\pi_0$) from a distribution of p-values using `pi0est`.
- **Local FDR Calculation**: When you want to calculate the empirical Bayesian posterior probability that a null hypothesis is true, conditional on the observed p-value, using `lfdr`.
- **Empirical P-value Calculation**: When you have observed test-statistics and simulated/resampled null statistics and need to compute p-values using `empPvals`.

## When NOT to Use
- **Dependent Test Statistics**: When tests are strongly dependent or have uncorrected batch effects (indicated by a U-shaped p-value histogram), use the `sva` package first to correct the data.
- **Small-scale hypothesis testing**: For experiments with very few tests, use standard Benjamini-Hochberg adjustment because the estimation of $\pi_0$ is highly unstable with small sample sizes.

## Data Requirements
- A numeric vector of p-values strictly bounded between 0 and 1, OR a vector of observed statistics and a matrix of empirical null statistics.
- P-values must follow a Uniform(0,1) distribution under the null hypothesis (the right tail of the p-value histogram should be fairly flat).

## Key Parameters
- **p** (required): A vector of p-values.
- **fdr.level** (NULL): The level at which to control the false discovery rate; returns a logical vector indicating significant tests.
- **pfdr** (FALSE): Indicator of whether to use the positive false discovery rate (pFDR) to make the estimate more robust for small p-values.
- **lambda** (seq(0, 0.95, 0.05)): Values of the tuning parameter considered in estimating $\pi_0$.
- **pi0.method** ("smoother"): Method for automatically handling the tuning parameter in $\pi_0$ estimation ("smoother" or "bootstrap").
- **trunc** (TRUE): If TRUE, local FDR estimates > 1 are set to 1 in `lfdr`.
- **stat** (NULL): Vector of observed test-statistics calculated on the original data for `empPvals`.
- **stat0** (NULL): Matrix of empirical null statistics for `empPvals`.

## Best Practices
- **Check P-value Histogram**: Always view a histogram of the p-values (`hist(p)`) before running `qvalue` to confirm the right tail is flat.
- **Evaluate Pi0 Reliability**: Use `plot(qobj)` to view the estimated $\pi_0$ versus the tuning parameter $\lambda$ to gauge the reliability of the $\pi_0$ estimate.
- **Summarize Results**: Use `summary(qobj)` to view the $\pi_0$ estimate and the cumulative number of significant calls at various p-value, q-value, and local FDR cutoffs.

## Common Pitfalls
- **U-shaped p-value histograms**: Indicates dependence among variables or a one-sided test on data with two-sided signal. *Fix: Compute p-values using a different model or use the `sva` package to correct for dependence.*
- **Assuming q-values are adjusted p-values**: Users often worry when q-values are smaller than original p-values. *Fix: Understand that q-values are population quantities bounded by $\pi_0$, not Bonferroni adjusted p-values.*
- **Incorrect empirical p-values**: Passing statistics where larger values do not indicate more evidence against the null. *Fix: Ensure statistics passed to `empPvals` are constructed such that larger values are "more extreme" (e.g., absolute values of t-statistics).*

## Alternatives
- **sva**: For correcting dependent variables and batch effects before computing p-values.
- **fdrtool**: Estimates local FDR and tail area FDR directly from z-scores or p-values.
- **IHW**: Incorporates covariates (like base mean expression) to increase statistical power.
- **ashr**: Uses adaptive shrinkage to model the distribution of effects, providing robust local FDR estimates.

## Citations
- Storey JD. (2002). A direct approach to false discovery rates. *Journal of the Royal Statistical Society, Series B*, 64:479–498.
- Storey JD. (2003). The positive false discovery rate: A Bayesian interpretation and the q-value. *Annals of Statistics*, 31:2013–2035.
- Storey JD, Tibshirani R. (2003). Statistical significance for genome-wide experiments. *Proceedings of the National Academy of Sciences*, 100:9440–9445.

## References
- Homepage: https://bioconductor.org/packages/qvalue
- Vignette: https://bioconductor.org/packages/release/bioc/vignettes/qvalue/inst/doc/qvalue.pdf

<!-- biomate-cta -->
---

## Run this on BioMate

This skill is the **knowledge layer** — when, why, and how to use `qvalue`. To **run this analysis on your own data** with managed compute, automated QC, and reproducible outputs, use **[BioMate](https://www.biomate.ai?ref=kb&pkg=qvalue)** — free to start.

▶ **[Open `qvalue` on BioMate →](https://www.biomate.ai?ref=kb&pkg=qvalue)**

