Relevance and usage
Background and rationale
Statistical methodology
Interactive web-app
References
September 22, 2016
Relevance and usage
Background and rationale
Statistical methodology
Interactive web-app
References
Derive a dose-response curve from published results of multiple studies on the relation between a quantitative exposure (e.g. number of cigarettes, diet) and the occurrence of a health outcome (e.g. mortality risk, incidence of a disease)
Research questions:
Several fields of application (oncology, environmental and occupational health, nutrition epidemiology, endocrinology, and general internal medicine)
Many leading medical and epidemiological journals (JAMA, Lancet, Stroke, Gastroenterology, American J of Medicine, American J of Clinical Nutrition, American J Epidemiology, International J Epidemiology, International J of Cancer, Statistics in Medicine)
Global health organizations and foundations (World Cancer Research Fund, American Institute for Cancer Research, International Agency for Research on Cancer
Measures of public health impact (burden of mortality, attributable fractions)
Donna Spiegelman, Professor at Harvard T.H. Chan School of Public Health, Boston
Stefan Leucht, Professor at Technische Universität München, Munich
James Woodcock, Senior Research Associate at University of Cambridge School of Clinical Medicine, Cambridge
Emir Veledar, Center for Healthcare Advancement and Outcomes, Baptist Health South Florida, Miami
Marco Vinceti, member of the European Food Safety Authority, Panel on Dietetics Products
Kristina Thayer, Deputy Director for Analysis, Division of the Search Results National Institute of Environmental Health Sciences
If any, what is the dose-response association between coffee consumption and all-cause mortality?
# devtools::install_github("alecri/dosresmeta")
library(dosresmeta)
coffee <- get(data(coffee_mort))
head(coffee, n = 10)
## id author year type dose cases n logrr se gender area
## 1 1 LeGrady et al. 1987 ci 0.5 57 249 0.0000 0.000 M USA
## 2 1 LeGrady et al. 1987 ci 2.5 136 655 -0.2877 0.139 M USA
## 3 1 LeGrady et al. 1987 ci 4.5 144 619 -0.1744 0.137 M USA
## 4 1 LeGrady et al. 1987 ci 6.5 115 387 0.0862 0.140 M USA
## 5 2 Rosengren et al. 1991 ci 0.0 17 192 0.0000 0.000 M Europe
## 6 2 Rosengren et al. 1991 ci 1.5 88 1121 -0.1204 0.253 M Europe
## 7 2 Rosengren et al. 1991 ci 3.5 155 2464 -0.3418 0.244 M Europe
## 8 2 Rosengren et al. 1991 ci 5.5 155 1986 -0.1262 0.244 M Europe
## 9 2 Rosengren et al. 1991 ci 7.5 39 575 -0.2665 0.278 M Europe
## 10 2 Rosengren et al. 1991 ci 9.5 24 427 -0.5108 0.280 M Europe
Relation between weight change and risk of hyponatremia among runners of a Boston marathon. The exposure (wtdiff) is continuous
## Min. 1st Qu. Median Mean 3rd Qu. Max. NA's ## -7.0 -1.8 -0.7 -0.7 0.5 4.1 33
but it is often categorized (wtdiffcat)
table(hypo$wtdiffcat) ## ## [-7,-1.5) [-1.5,-0.5) [-0.5,0.5) [0.5,3) [3,5) ## 126 125 111 85 7
And included in the model as dummy variables.
model <- glm(nas135 ~ wtdiffcat + bmi + female + runtime + age + urinat3p,
data = hypo, family = "binomial")
The results are presented in a tabular way
## wtdiffcat dose cases n rr lb ub logrr se ## 1 [-7,-1.5) -2.5353 3 97 1.00 NA NA 0.000 NA ## 2 [-1.5,-0.5) -1.0162 8 100 2.53 0.633 10.1 0.929 0.707 ## 3 [-0.5,0.5) -0.0182 9 96 2.98 0.764 11.6 1.093 0.695 ## 4 [0.5,3) 1.3870 24 71 13.05 3.584 47.5 2.569 0.660 ## 5 [3,5) 3.4612 4 6 82.16 9.173 735.8 4.409 1.119
Observations are not independent (share reference category)
The RR in the referent is 1
A linear trend is seldom reported
lin_ipd <- glm(nas135 ~ wtdiff + bmi + female + runtime + age + urinat3p,
data = hypo, family = "binomial")
ci.exp(lin_ipd, subset = "wtdiff")
## exp(Est.) 2.5% 97.5%
## wtdiff 2.02 1.59 2.57
Log-linear model:
\[ y = X \beta + \epsilon \]
\(y\) : vector of non-referent log \(RR\)
\(X\) : design matrix contains the assigned doses
Model without intercept, so that \(RR = 1|x = 0\)
\(Cov(\epsilon)\) can be approximated depending on the study design ("cc" case-control, "ir" incidence-rate, "ci" cumulative-incidence)
Additional information about the number of cases and subjects (for case-control and cumulative incidence data) or person-time (for incidence rate data)
covar.logrr(cases, n, logrr, se^2, type = "cc", data = hypo_tab) ## [,1] [,2] [,3] [,4] ## [1,] 0.500 0.350 0.355 0.338 ## [2,] 0.350 0.483 0.354 0.337 ## [3,] 0.355 0.354 0.435 0.342 ## [4,] 0.338 0.337 0.342 1.251
Assuming a linear trend: \(y = \beta_1 x + \epsilon\)
lin_ad <- dosresmeta(logrr ~ dose, type = "cc", cases = cases, n = n,
se = se, data = hypo_tab)
predict(lin_ad, delta = 1, expo = T)
## delta pred ci.lb ci.ub
## 1 2.03 1.58 2.61
To be compared with that obtain from individual data
ci.exp(lin_ipd, subset = "wtdiff") ## exp(Est.) 2.5% 97.5% ## wtdiff 2.02 1.59 2.57
## 1 2 3 4 5 6 7 8 ## bi 0.03283 -0.02360 -0.01431 -0.04777 -0.04736 -0.02028 -0.06517 -0.4180 ## vi_bi 0.00045 0.00036 0.00006 0.00062 0.00122 0.00011 0.00042 0.0089 ## 9 12 13 14 15 16 17 18 ## bi -0.1026 -0.01980 -0.02451 -0.02790 -0.05505 -0.02904 -0.01781 -0.01354 ## vi_bi 0.0168 0.00007 0.00005 0.00011 0.00004 0.00054 0.00011 0.00018 ## 19 20 21 22 23 24 ## bi -0.03212 -0.07854 -0.06802 -0.08603 -0.02244 -0.03806 ## vi_bi 0.00061 0.00199 0.00019 0.00044 0.00001 0.00002
\[ b_i \sim N \left( \bar b , v_{b_i} + \tau^2 \right) \]
\[ \hat {\bar b} = \frac{\sum_{i = 1}^K b_i w_i}{\sum_{i = 1}^K w_i} \] \(w_i = (v_{b_i} + \tau^2)^{-1}\)
\(\tau^2\) is the between-studies heterogeneity
Test for overall association: \(H_0: \bar b = 0\)
Test (Cochran \(Q\)) and quantify the impact (\(I^2\)) of statistical heterogeneity
library(metafor) meta <- rma.uni(yi = bi, vi = vi_bi, data = dat_i, method = "DL") forest(meta)
lin <- dosresmeta(formula = logrr ~ dose, id = id, se = se, type = type,
cases = cases, n = n, data = coffee, method = "mm")
summary(lin)
## Call: dosresmeta(formula = logrr ~ dose, id = id, type = type, cases = cases,
## n = n, data = coffee, se = se, method = "mm")
##
## Two-stage random-effects meta-analysis
## Estimation method:
## Covariance approximation: Greenland & Longnecker
##
## Chi2 model: X2 = 44.4226 (df = 1), p-value = 0.0000
##
## Fixed-effects coefficients
## Estimate Std. Error z Pr(>|z|) 95%ci.lb 95%ci.ub
## (Intercept) -0.0324 0.0049 -6.6650 0.0000 -0.0419 -0.0229 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Between-study random-effects (co)variance components
## Std. Dev
## 0.0163
##
## Univariate Cochran Q-test for residual heterogeneity:
## Q = 77.0088 (df = 21), p-value = 0.0000
## I-square statistic = 72.7%
##
## 22 studies, 22 values, 1 fixed and 1 random-effects parameters
Every increase of one cup of coffee per day was associated with a pooled \(100*(1 - \exp({\beta_1})) = 100*(1 - \exp(\)-0.032)) = 3.19% reduction in all-cause mortality (95% CI: 2.26, 4.1).
Modeling non-linearity: Restricted Cubic Splines
library(rms)
k <- with(coffee, quantile(dose, c(.1, .5, .9)))
spl <- dosresmeta(logrr ~ rcs(dose, k), id = id, se = se, type = type,
cases = cases, n = n, data = coffee, method = "mm")
summary(spl)
## Call: dosresmeta(formula = logrr ~ rcs(dose, k), id = id, type = type,
## cases = cases, n = n, data = coffee, se = se, method = "mm")
##
## Two-stage random-effects meta-analysis
## Estimation method:
## Covariance approximation: Greenland & Longnecker
##
## Chi2 model: X2 = 209.5069 (df = 2), p-value = 0.0000
##
## Fixed-effects coefficients
## Estimate Std. Error z Pr(>|z|) 95%ci.lb 95%ci.ub
## rcs(dose, k)dose.(Intercept) -0.0764 0.0105 -7.3101 0.0000 -0.0969 -0.0559 ***
## rcs(dose, k)dose'.(Intercept) 0.1053 0.0229 4.5935 0.0000 0.0604 0.1502 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Between-study random-effects (co)variance components
## Std. Dev Corr
## rcs(dose, k)dose 0.0354 rcs(dose, k)dose
## rcs(dose, k)dose' 0.0797 -1
## (Note: Truncated estimate - 1 negative eigenvalues set to 0)
##
## Univariate Cochran Q-test for residual heterogeneity:
## Q = 101.3912 (df = 42), p-value = 0.0000
## I-square statistic = 58.6%
##
## 22 studies, 44 values, 2 fixed and 1 random-effects parameters
"Every unit increase is associated with …" not appropriate
Predict RRs for a set of exposure levels \(x^*\) (as compared to \(x_{ref}\))
\[\widehat {RR} = e^{(X^* - X_{ref}) \hat {\bar \beta}}\]
\[\text{95% CI: } e^{(X^* - X_{ref}) \hat {\bar \beta} \pm z_{1-\alpha/2} \left[ (X^* - X_{ref})^\top Var(\hat {\bar \beta}) (X^* - X_{ref}) \right]}\]
newdata <- data.frame(dose = 0:7) predict(spl, newdata, xref = 0, expo = T) ## rcs(dose, k)dose rcs(dose, k)dose' pred ci.lb ci.ub ## 1 0 0.0000 1.000 1.000 1.000 ## 2 1 0.0237 0.929 0.911 0.947 ## 3 2 0.1893 0.876 0.847 0.905 ## 4 3 0.6049 0.847 0.818 0.878 ## 5 4 1.2413 0.840 0.815 0.865 ## 6 5 2.0355 0.846 0.827 0.865 ## 7 6 2.9244 0.860 0.837 0.884 ## 8 7 3.8462 0.878 0.841 0.918
To further explain heterogeneity and/or explore differences in dose-response curves
Prespecified study-level characteristics
Limited number of data points: interpret with caution
Stratified (or subgroups) analysis: divide the observations in groups and evaluate differences
spl_regr <- dosresmeta(logrr ~ rcs(dose, k), id, I(se^2), type, cases, n,
data = coffee, mod = ~ area, method = "mm")
waldtest(Sigma = vcov(spl_regr), b = coef(spl_regr), Terms = c(2, 3, 5, 6))
## Wald test:
## ----------
##
## Chi-squared test:
## X2 = 9.7, df = 4, P(> X2) = 0.046
Crippa A, Orsini N. Multivariate Dose-Response Meta-Analysis: the dosresmeta R Package. Journal of Statistical Software, Code Snippets, 72(1), 1-15.
Crippa A, Discacciati A, Larsson SC, Wolk A, Orsini N. Coffee consumption and mortality from all causes, cardiovascular disease, and cancer: a dose-response meta-analysis. American journal of epidemiology. 2014 Aug 24:kwu194.
Greenland S, Longnecker MP. Methods for trend estimation from summarized dose-response data, with applications to meta-analysis. American journal of epidemiology. 1992 Jun 1;135(11):1301-9.
Orsini N, Li R, Wolk A, Khudyakov P, Spiegelman D. Meta-analysis for linear and nonlinear dose-response relations: examples, an evaluation of approximations, and software. American journal of epidemiology. 2012 Jan 1;175(1):66-73.
Berlin JA, Longnecker MP, Greenland S. Meta-analysis of epidemiologic dose-response data. Epidemiology. 1993 May 1;4(3):218-28.
Orsini N, Bellocco R, Greenland S. Generalized least squares for trend estimation of summarized dose-response data. Stata Journal. 2006 Jan 1;6(1):40.
Discacciati A, Crippa A, Orsini N. Goodness of fit tools for dose–response meta‐analysis of binary outcomes. Research synthesis methods. 2015 Jan 1.
Crippa A, Orsini N. Dose-response meta-analysis of differences in means. BMC Medical Research Methodology. 2016 Aug 2;16(1):91.
Crippa A, Khudyakov P, Wang M, Orsini N, Spiegelman D. A new measure of between-studies heterogeneity in meta-analysis. Statistics in Medicine. 2016 May 10. doi: 10.1002/sim.6980.
Larsson S, Crippa A, Orsini N, Wolk, Michaëlsson K. Milk Consumption and Mortality from All Causes, Cardiovascular Disease, and Cancer: A Systematic Review and Meta-Analysis. Nutrients. 2015 Sep 11;7(9):7749-7763.