dat.obrien2003 | R Documentation |
Results from 13 studies on the relationship between maternal body mass index (BMI) and the risk of preeclampsia.
dat.obrien2003
The data frame contains the following columns:
study | numeric | study id |
author | character | (first) author of the study |
year | numeric | publication year |
ref | numeric | reference number |
ch | character | exclusion due to chronic hypertension (yes/no) |
dm | character | exclusion due to diabetes mellitus (yes/no) |
mg | character | exclusion due to multiple gestation (yes/no) |
bmi.lb | numeric | lower bound of the BMI interval |
bmi.ub | numeric | upper bound of the BMI interval |
bmi | numeric | midpoint of the BMI interval |
cases | numeric | number of preeclampsia cases in the BMI group |
total | numeric | number of individuals in the BMI group |
The dataset includes the results from 13 studies examining the relationship between maternal body mass index (BMI) and the risk of preeclampsia. For each study, results are given in terms of the number of preeclampsia cases within two or more groups defined by the lower and upper BMI bounds as shown in the dataset (NA
means that the interval is either open to the left or right). The bmi
variable is the interval midpoint as defined by O'Brien et al. (2003).
medicine, obstetrics, risk ratios, proportions, multilevel models, dose-response models
Wolfgang Viechtbauer, wvb@metafor-project.org, https://www.metafor-project.org
O'Brien, T. E., Ray, J. G., & Chan, W.-S. (2003). Maternal body mass index and the risk of preeclampsia: A systematic overview. Epidemiology, 14(3), 368–374. https://doi.org/10.1097/00001648-200305000-00020
### copy data into 'dat' and examine data dat <- dat.obrien2003 dat ## Not run: ### load metafor package library(metafor) ### restructure the data into a wide format dat2 <- to.wide(dat, study="study", grp="grp", ref=1, grpvars=c("bmi","cases","total"), addid=FALSE, adddesign=FALSE, postfix=c(1,2)) dat2[1:10, -c(2:3)] ### calculate log risk ratios and corresponding sampling variances dat2 <- escalc(measure="RR", ai=cases1, n1i=total1, ci=cases2, n2i=total2, data=dat2) dat2[1:10, -c(2:7)] ### forest plot of the risk ratios dd <- c(0,diff(dat2$study)) dd[dd > 0] <- 1 rows <- (1:nrow(dat2)) + cumsum(dd) rows <- 1 + max(rows) - rows slabs <- mapply(function(x,y,z) as.expression(bquote(.(x)^.(y)~.(z))), dat2$author, dat2$ref, dat2$year) with(dat2, forest(yi, vi, header=TRUE, slab=slabs, xlim=c(-7,5.5), fonts="mono", cex=0.8, psize=1, pch=19, efac=0, rows=rows, ylim=c(0,max(rows)+3), yaxs="i", atransf=exp, at=log(c(.05,0.1,0.2,0.5,1,2,5,10,20)), ilab=comp, ilab.xpos=-4, ilab.pos=4)) text(-4.4, max(rows)+2, "Comparison", font=2, cex=0.8, pos=4) ### within-study mean center the BMI variable dat$bmicent <- with(dat, bmi - ave(bmi, study)) ### compute the proportion of preeclampsia cases and corresponding sampling variances dat <- escalc(measure="PR", xi=cases, ni=total, data=dat) ### convert the proportions to percentages (and convert the variances accordingly) dat$yi <- dat$yi*100 dat$vi <- dat$vi*100^2 dat[1:10, -c(2:3)] ### fit multilevel meta-regression model to examine the relationship between the ### (centered) BMI variable and the risk of preeclampsia res <- rma.mv(yi, vi, mods = ~ bmicent, random = ~ 1 | study/grp, data=dat) res ### draw scatterplot with regression line res$slab <- dat$ref regplot(res, xlab=expression("Within-Study Mean Centered BMI"~(kg/m^2)), ylab="Preeclampsia Prevalence (%)", las=1, bty="l", at=seq(0,18,by=2), olim=c(0,100), psize=2, bg="gray90", label=TRUE, offset=0, labsize=0.6) ### fit model using a random slope for bmicent res <- rma.mv(yi, vi, mods = ~ bmicent, random = ~ bmicent | study, struct="GEN", data=dat) res ### load rms package library(rms) ### fit restricted cubic spline model res <- rma.mv(yi, vi, mods = ~ rcs(bmicent, 4), random = ~ 1 | study/grp, data=dat) res ### get knot positions knots <- attr(rcs(model.matrix(res)[,2], 4), "parms") ### computed predicted values based on the model xs <- seq(-10, 10, length=1000) sav <- predict(res, newmods=rcspline.eval(xs, knots, inclx=TRUE)) ### draw scatterplot with regression line based on the model tmp <- regplot(res, mod=2, pred=sav, xvals=xs, xlab=expression("Within-Study Mean Centered BMI"~(kg/m^2)), ylab="Preeclampsia Prevalence (%)", las=1, bty="l", at=seq(0,18,by=2), olim=c(0,100), psize=2, bg="gray90", label=TRUE, offset=0, labsize=0.6) abline(v=knots, lty="dotted") points(tmp) ## End(Not run)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.