Multiple comparisons I

web.stanford.edu/class/stats364/

Jonathan Taylor

Spring 2020

Multiple comparisons

Outline

Multiple comparisons

Setup

# %load_ext rpy2.ipython
library(locfdr)
data(hivdata)
length(hivdata) # m
## [1] 7680

Multiple comparisons

Setup

True null True positive Decisions
Declared positive \(V({\cal T}, F)\) \(S({\cal T}, F)\) \(R({\cal T})\)
Declared null \(U({\cal T}, F)\) \(T({\cal T}, F)\) \(m-R({\cal T})\)
\(m_0(F)\) \(m_1(F)\) \(m\)

Family Wise Error Rate

For \(F \in {\cal M}\)

\[ \newcommand{\fwer}{\text{FWER}} \newcommand{\fdr}{\text{FDR}} \newcommand{\fdp}{\text{FDP}} \]

\[ \fwer(F, {\cal T}) = P_F(V({\cal T}) \geq 1) = P_F(V({\cal T}, F) \geq 1) \]

Multiple comparisons

DFQL?

Multiple comparisons

Special cases

Multiple comparisons

Special cases

plot(density(hivdata))

pval = 2 * (1 - pnorm(abs(hivdata)))

Multiple comparisons

Controlling FWER

sum(p.adjust(pval, method='bonferroni') < 0.05)
## [1] 10

Multiple comparisons

Simultaneous confidence intervals

Multiple comparisons

Simultaneous confidence intervals

Multiple comparisons

Simultaneous confidence intervals

Multiple comparisons

How does Bonferroni behave as \(m \to \infty\)

-ËśExercise: Show that for any \(\epsilon > 0\) \[ 1 - \Phi((1 + \epsilon) \sqrt{2 \log m}) \overset{m \to \infty}{\to} 0, m \left( 1 - \Phi((1 - \epsilon) \sqrt{2 \log m}) \right) \overset{m \to \infty}{\to} \infty. \] Argue that \[\frac{z_{1 - \alpha/(2m)}}{\sqrt{2 \log m}} \to 1.\] Would it change things if we had used one-sided \(p\)-values?

M = 1e6
c(qnorm(1 - 0.05 / M), sqrt(2 * log(M)))
## [1] 5.326724 5.256522

Multiple comparisons

Improving Bonferroni: Holm procedure

In words

  1. First run Bonferroni on all \(m\) hypotheses.

  2. If smallest \(p\)-value is rejected, move on to next best \(m-1\) hypotheses and run Bonferroni on them.

  3. Continue until the smallest \(p\)-value of such a Bonferroni is not rejected.

sum(p.adjust(pval, method='holm') < 0.05)
## [1] 10

Multiple comparisons

Holm procedure

Proof

Multiple comparisons

Holm procedure

Multiple comparisons

Step down and step up

Hochberg’s method

Multiple comparisons

\(k\)-FWER Lehmann and Romano (2005)

Which error rate to choose?

Multiple comparisons

False Discovery Rate (FDR)

\[ \fdp({\cal T}, F) = \frac{V({\cal T}, F)}{\max(R({\cal T}, F), 1)} \]

Multiple comparisons

False Discovery Rate (FDR)

Multiple comparisons

Large scale inference (Efron, Storey, Tibshirani)

Multiple comparisons

Control of FDR? (Efron, Storey, Tibshirani, Benjamini-Hochberg)

sum(p.adjust(pval, method='BH') < 0.05)
## [1] 18

Multiple comparisons

Control of FDR Storey, Taylor, Siegmund

Multiple comparisons

Two groups model (Storey, Efron)

Multiple comparisons

Two groups model (Efron)

results_0 = locfdr(hivdata, nulltype=0)

print(names(results_0))
## [1] "fdr"  "fp0"  "Efdr" "cdf1" "mat"  "z.2"  "call"
print(sum(results_0$fdr < 0.05))
## [1] 13
print(sum(results_0$fdr < 0.2))
## [1] 17
print(results_0$z.2)
## [1]       NA 3.808781

Multiple comparisons

Large scale inference and multiple comparisons

Multiple comparisons

Large scale inference and multiple comparisons

Multiple comparisons

Two groups model

results = locfdr(hivdata)

print(names(results))
## [1] "fdr"  "fp0"  "Efdr" "cdf1" "mat"  "z.2"  "call"
print(results$fp0)
##             delta      sigma          p0
## thest  0.00000000 1.00000000 1.211336060
## theSD  0.00000000 0.00000000 0.011414290
## mlest -0.11597111 0.75373650 0.934174674
## mleSD  0.01228385 0.01483100 0.008933865
## cmest -0.08303908 0.71176630 0.894938035
## cmeSD  0.01385561 0.01252345 0.007288211
print(sum(results$fdr < 0.05))
## [1] 73
print(sum(results$fdr < 0.2))
## [1] 160
print(results$z.2)
## [1] -2.471104  2.227792

Multiple comparisons

False coverage rate

Multiple comparisons

False coverage rate

Multiple comparisons

False coverage rate

Summary