Last chance! 50% off unlimited learning
Sale ends in
dat.ishak2007
study | character |
(first) author and year | y1i |
numeric |
observed mean difference at 3 months |
v1i | numeric |
sampling variance of the mean difference at 3 months | y2i |
numeric |
observed mean difference at 6 months |
v2i | numeric |
sampling variance of the mean difference at 6 months | y3i |
numeric |
observed mean difference at 12 months |
v3i | numeric |
sampling variance of the mean difference at 12 months | y4i |
numeric |
observed mean difference at the long-term follow-up |
v4i | numeric |
sampling variance of the mean difference at the long-term follow-up | mdur |
numeric |
mean disease duration (in years) |
Since the same patients were followed over time within a study, effect size estimates from multiple measurement occasions are likely to be correlated. A multivariate model accounting for the correlation in the effects can be used to meta-analyze these data. A difficulty with this approach is the lack of information about the correlation of the measurements over time in the individual studies. The approach taken by Ishak et al. (2007) was to assume an autoregressive (AR1) structure for the estimates within the individual studies. In addition, the correlation in the true effects was modeled, again using an autoregressive structure.
### load data
dat <- get(data(dat.ishak2007))
### create long format dataset
dat.long <- reshape(dat, direction="long", idvar="study", v.names=c("yi","vi"),
varying=list(c(2,4,6,8), c(3,5,7,9)))
dat.long <- dat.long[order(dat.long$study, dat.long$time),]
rownames(dat.long) <- 1:nrow(dat.long)
### remove missing measurement occasions from dat.long
is.miss <- is.na(dat.long$yi)
dat.long <- dat.long[!is.miss,]
### construct the full (block diagonal) V matrix with an AR(1) structure
rho.within <- .97 ### value as estimated by Ishak et al. (2007)
V <- lapply(split(with(dat, cbind(v1i, v2i, v3i, v4i)), dat$study), diag)
V <- lapply(V, function(v) sqrt(v) %*% toeplitz(ARMAacf(ar=rho.within, lag.max=3)) %*% sqrt(v))
V <- bldiag(V)
V <- V[!is.miss,!is.miss] ### remove missing measurement occasions from V
### plot data
with(dat.long, interaction.plot(time, study, yi, type="b", pch=19, lty="solid", xaxt="n",
legend=FALSE, xlab="Time Point", ylab="Mean Difference", bty="l"))
axis(side=1, at=1:4, lab=c("1 (3 months)", "2 (6 months)", "3 (12 months)", "4 (12+ months)"))
### multivariate model with heteroscedastic AR(1) structure for the true effects
res <- rma.mv(yi, V, mods = ~ factor(time) - 1, random = ~ time | study,
struct = "HAR", data = dat.long)
print(res, digits=2)
Run the code above in your browser using DataLab