author: Levi Waldron
date: May 3, 2016
Narrow definition: a synthesis of per-study estimates
Not: pooling of per-patient data
“We understand meta-analysis as being the use of statistical techniques to combine the results of studies addressing the same question into a summary measure.”
Villar et al. (2001)
Classic meta-analysis: Third-generation agents compared with best supportive care. Differences in 1-year survival proportions (Baggstrom et al. 2007).
library(LeviRmisc)
df <- geoPmidLookup(c("GSE26712", "PMID18593951"))
Fixed-effects model
Random-effects model
Standard hypothesis test for heterogeneity: under the null hypothesis of no heterogeneity between studies (\( \tau = 0 \)), \[ Q \sim \chi^2_{K-1} \]
Standard descriptions of heterogeneity:
For further info:
Load the curatedOvarianData package, look at available datasets:
library(curatedOvarianData)
data(package="curatedOvarianData")
Load (and check out) rules defined in default configuration file:
source("patientselection.config")
impute.missing <- TRUE
keep.common.only <- TRUE
Create list of ExpressionSets meeting criteria:
source("createEsetList.R")
length(esets)
[1] 14
runCox <- function(eset, probeset="CXCL12"){
library(survival)
eset$y <- Surv(eset$days_to_death, eset$vital_status == "deceased")
if(probeset %in% featureNames(eset)){
obj <- coxph(eset$y ~ scale(t(exprs(eset[probeset, ]))[, 1]))
output <- c(obj$coefficients, sqrt(obj$var))
names(output) <- c("log.HR", "SE")
}else{output <- NULL}
output}
runCox(esets[[1]])
log.HR SE
0.1080378 0.1167063
study.coefs <- t(sapply(esets, runCox)); head(study.coefs)
log.HR SE
E.MTAB.386_eset 0.108037829 0.1167063
GSE13876_eset -0.015533625 0.1216511
GSE17260_eset 0.196604844 0.2213214
GSE18520_eset 0.004334577 0.1578573
GSE19829.GPL8300_eset 0.072413433 0.1965850
GSE26193_eset -0.035518891 0.1688681
(res.re <- metafor::rma(yi=study.coefs[, 1], sei=study.coefs[, 2], method="DL"))
Random-Effects Model (k = 14; tau^2 estimator: DL)
tau^2 (estimated amount of total heterogeneity): 0 (SE = 0.0062)
tau (square root of estimated tau^2 value): 0
I^2 (total heterogeneity / total variability): 0.00%
H^2 (total variability / sampling variability): 1.00
Test for Heterogeneity:
Q(df = 13) = 11.2219, p-val = 0.5922
Model Results:
estimate se zval pval ci.lb ci.ub
0.1108 0.0329 3.3664 0.0008 0.0463 0.1754 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
LODO.res <- metaCMA(esets,coefs=gene.coefs,n=200, rma.method="FE")
Leave-one-dataset-out validation of a survival signature. (Riester et al. JNCI 2014)
“Improvement over random signatures (IOR)” score of gene signatures relative to random gene signatures, equalizing the influences of authors’ algorithms for generating risk scores, quality of the original training data, and gene signature size (Waldron et al. JNCI 2014).
source scripts: genMumatrix.R and analyseMumatrix.R