SNP statistics Β· Association testing Β· Multiple testing correction Β· Manhattan plot data
A Genome-Wide Association Study (GWAS) tests hundreds of thousands to millions of genetic variants (usually SNPs β Single Nucleotide Polymorphisms) across the genome to see whether any variant is statistically associated with a trait or disease.
Each SNP is tested independently, producing a p-value. Because so many tests are performed at once, raw p-values must be corrected for multiple testing β that's why GWAS uses thresholds like p < 5 Γ 10β»βΈ.
One SNP per line: SNP_ID nAA nAa naa, where AA, Aa, aa are the three genotypes.
HWE states that in a large, randomly-mating population with no selection, mutation, or migration, genotype frequencies remain stable across generations. We test it with a ΟΒ² goodness-of-fit:
AA = pΒ²Β·NAa = 2pqΒ·Naa = qΒ²Β·Nwhere p = (2Β·nAA + nAa) / (2N) and q = 1 β p.
| HWE p-value | Interpretation | Action |
|---|---|---|
| p β₯ 0.05 | Consistent with HWE β SNP looks normal. | Keep for downstream analysis. |
| 0.001 β€ p < 0.05 | Mild deviation. Could be chance or mild genotyping issue. | Inspect cluster plots; consider sensitivity analysis. |
| p < 0.001 | Strong deviation β probable genotyping error, population stratification, or selection. | Usually excluded from GWAS (QC filter). |
p(A) = (2Β·nAA + nAa) / (2N). The Minor Allele Frequency (MAF) is
min(p, q).
| MAF | Meaning | Recommendation |
|---|---|---|
| < 0.01 | Very rare variant | Usually filtered out β low statistical power. |
| 0.01 β 0.05 | Low-frequency | Retain with caution; larger sample needed. |
| β₯ 0.05 | Common variant | Standard GWAS threshold. |
SNP_ID case_AA case_Aa case_aa ctrl_AA ctrl_Aa ctrl_aa
Compares the 3 genotype counts between cases and controls using a 2Γ3 contingency table. A small p-value means genotype distribution differs between groups.
Collapses genotypes to allele counts (A vs a) and performs a 2Γ2 ΟΒ². More powerful when the effect is additive.
OR quantifies effect size. Using the dominant model (AA + Aa vs aa):
OR = (case_carriers Β· ctrl_non_carriers) / (case_non_carriers Β· ctrl_carriers)
| OR value | Meaning | 95% CI interpretation |
|---|---|---|
| OR β 1.0 | No association | CI includes 1.0 |
| OR > 1.0 | Risk allele (increases odds) | CI lower bound > 1.0 β significant |
| OR < 1.0 | Protective allele (decreases odds) | CI upper bound < 1.0 β significant |
Suppose rs12345 gives OR = 2.10, 95% CI = 1.30 β 3.40, p = 0.002.
If you test 1,000,000 SNPs at Ξ± = 0.05, you expect ~50,000 false positives by chance. Corrections control this.
p_adj = p Γ m (m = number of tests), capped at 1.0.
Controls the expected proportion of false discoveries among significant results.
p_adj = p Γ m / rank, enforcing monotonicity.| Column | What it means | Interpretation |
|---|---|---|
| Raw p | Uncorrected p-value | Baseline significance |
| BH FDR | FDR-adjusted p | < 0.05 β significant after FDR control |
| Bonferroni | FWER-adjusted p | < 0.05 β significant after strict correction |
SNP_ID Chromosome BP P_value β one row per SNP.
A scatter plot with genomic position on the X-axis (chromosomes laid end-to-end) and βlogββ(p) on the Y-axis. Points that rise high above the threshold form "skyscrapers" β these are candidate associations.
| Threshold | p-value | βlogββ(p) | Meaning |
|---|---|---|---|
| Genome-wide significant | < 5 Γ 10β»βΈ | > 7.3 | Strong evidence β report as a hit |
| Suggestive | < 1 Γ 10β»β΅ | > 5.0 | Worth following up; not conclusive |
| Not significant | β₯ 1 Γ 10β»β΅ | < 5.0 | No evidence |