Alessio Crippa
Department of Nutritional Epidemiology and Biostatistics
IMM - Institute of Environmental Medicine
Karolinska Institutet
Increasing number of scientific publications.
Systematical literature review supported by statistical methods.
Aggregate and contrast findings from several studies.
Weighted average of common measure of effect size, with weights related to the precision of the estimates
| dose | cases | n | RR | SE |
|---|---|---|---|---|
| (ref) | \( a_0 \) | \( n_0 \) | 1 | - |
| \( d_1 \) | \( a_1 \) | \( n_1 \) | \( RR_1 \) | \( SE_1 \) |
| \( \vdots \) | \( \vdots \) | \( \vdots \) | \( \vdots \) | \( \vdots \) |
| \( d_k \) | \( a_k \) | \( n_k \) | \( RR_K \) | \( SE_K \) |
Evaluate changes of the response across levels of the exposure
Assessment of the most likely shape of the curve (i.e. linear, J-shaped, U-shaped, etc.)
\[ \mathbf{Y_{i,j}} = f(\mathbf{x_{i,j}}; \boldsymbol{\theta_j}) + \boldsymbol{\epsilon_{i,j}} \]
Several alternatives (splines, polynomials, linear, etc.)
\( \epsilon_{i,j} \) are not independent, can be obtained from published data to efficiently estimate \( \theta_j \) and \( V_j = cov(\theta_j) \)
Pool study specific estimates:
\[ \boldsymbol{\hat{\theta_j}} \sim N_p(\boldsymbol{\theta}, \mathbf{V_j}+ \boldsymbol{\psi}) \]
Different methods to approximate \( Cov(\boldsymbol{\epsilon_{i,j}}) \)
(Greenland & Longnecker, Hamling)
Formulas differ according to study design
("cc", "ir", "ci“)
Assess and quantify heterogeneity
Cochran Q-test, I-squared
Information criteria (\( AIC \) , \( BIC \) , \( log\mathcal{L} \))
Data not always available (number of cases and non-cases)
Sensible to assignment of categories values (especially for the highest category)
Unintuitive exposure modeling (especially with non-zero referent doses)
Heterogeneity and publication bias
8 eligible prospective cohort studies participating in the Pooling
Project of Prospective Studies of Diet and Cancer.
(http://www.imm.ki.se/biostatistics/glst/)
require("dosresmeta")
web <- "http://alessiocrippa.altervista.org/data/"
alcohol_crc <- read.table(paste0(web, "ex_alcohol_crc.txt"))
head(alcohol_crc)
id type dose cases peryears logrr se
1 atm ir 0.000 28 22186 0.0000 NA
2 atm ir 1.829 38 43031 -0.4167 0.2511
3 atm ir 9.199 43 53089 -0.3956 0.2456
4 atm ir 22.857 32 45348 -0.4884 0.2634
5 atm ir 35.667 16 19791 -0.2790 0.3208
6 atm ir 58.426 27 19920 0.2023 0.2862
require("rms")
knots <- quantile(alcohol_crc$dose, c(.1, .5, .9))
spl <- dosresmeta(formula = logrr ~ rcs(dose, knots),
type = type, cases = cases, n = peryears,
id = id, se = se, data = alcohol_crc,
method = "reml", covariance = "gl")
#?dosresmeta
summary(spl)
| arguments | Meaning |
|---|---|
formula |
Functional relation |
method |
Fixed vs random effects model |
type |
study design: cc case-control; ci cumulative incidence; ir incidence rate |
cases |
number of cases |
n |
number of non-cases: total subject for cc and ci, person-time for ir data |
covariance |
method to approximate covariance: gl Greenland & Longnecker; h Hamling |
Call: dosresmeta(formula = logrr ~ rcs(dose, knots), id = id, type = type,
cases = cases, n = peryears, data = alcohol_crc, se = se,
covariance = "gl", method = "reml")
Multivariate random-effects meta-analysis
Dimension: 2
Estimation method: REML
Variance-covariance matrix Psi: unstructured
Approximate covariance method: Greenland & Longnecker
Fixed-effects coefficients
Estimate Std. Error z Pr(>|z|) 95%ci.lb
rcs(dose, knots).dose -0.0014 0.0041 -0.3297 0.7416 -0.0095
rcs(dose, knots).dose' 0.0210 0.0103 2.0446 0.0409 0.0009
95%ci.ub
rcs(dose, knots).dose 0.0068
rcs(dose, knots).dose' 0.0411 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Chi2 model: X2 = 27.2269 (df = 2), p-value = 0.0000
Multivariate Cochran Q-test for heterogeneity:
Q = 14.5886 (df = 14), p-value = 0.4068
I-square statistic = 4.0%
8 studies, 16 observations, 2 fixed and 3 random-effects parameters
logLik AIC BIC
41.4301 -72.8603 -69.6650
newdata <- data.frame(dose=seq(0,60,1))
with(predict(spl, newdata, xref=0), {
matplot(get("rcs(dose, knots)dose"),
cbind(pred, ci.ub, ci.lb),
log = "y", type = "l", col = "black",
lty = c(1, 2, 2), bty = "l", las = 1,
ylab = "Relative risk", xlab =
"Alcohol intake, grams/day")
})
rug(alcohol_crc$dose)
...
with(predict(spl,newdata,xref=12),{
...
newdata <- data.frame(dose=seq(0,60,12))
round(predict(spl, newdata)[,-2],2)
rcs(dose, knots)dose pred ci.lb ci.ub
1 0 1.00 1.00 1.00
2 12 0.99 0.91 1.09
3 24 1.05 0.93 1.19
4 36 1.18 1.04 1.33
5 48 1.37 1.20 1.56
6 60 1.63 1.35 1.95
round(predict(spl, newdata, xref=12)[,-2],2)
rcs(dose, knots)dose pred ci.lb ci.ub
1 0 1.01 0.92 1.10
2 12 1.00 1.00 1.00
3 24 1.05 1.01 1.10
4 36 1.18 1.11 1.26
5 48 1.38 1.22 1.56
6 60 1.63 1.32 2.02
Greenland, Sander, and Matthew P. Longnecker. “Methods for trend estimation from summarized dose-response data, with applications to meta-analysis.” American journal of epidemiology 135.11 (1992): 1301-1309.
Orsini, Nicola, Rino Bellocco, and Sander Greenland. “Generalized least squares for trend estimation of summarized dose-response data.” Stata Journal 6.1 (2006): 40.
Orsini, Nicola, et al. “Meta-analysis for linear and nonlinear dose-response relations: examples, an evaluation of approximations, and software.” American journal of epidemiology 175.1 (2012): 66-73.
Larsson, Susanna C., and Nicola Orsini. “Coffee consumption and risk of stroke: a dose-response meta-analysis of prospective studies.” American journal of epidemiology 174.9 (2011): 993-1001.