dat.obrien2003: Studies on the Relationship Between BMI and Risk of...

dat.obrien2003R Documentation

Studies on the Relationship Between BMI and Risk of Preeclampsia

Description

Results from 13 studies on the relationship between maternal body mass index (BMI) and the risk of preeclampsia.

Usage

dat.obrien2003

Format

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

Details

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).

Concepts

medicine, obstetrics, risk ratios, proportions, multilevel models, dose-response models

Author(s)

Wolfgang Viechtbauer, wvb@metafor-project.org, https://www.metafor-project.org

Source

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⁠

Examples

### 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(0.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)

wviechtb/metadat documentation built on Jan. 14, 2024, 1:22 a.m.