Hi, this is another quesite related to the use of 'metafor' for calculation of standardized mean change in pre-post design studies. Essentially, my aim is to compare different method to arrive at the same conclusion: Does the treatment work?
The Cochrane manual advise not to calculate change score: "9.4.5.2 Meta-analysis of change scores In some circumstances an analysis based on changes from baseline will be more efficient and powerful than comparison of final values, as it removes a component of between-person variability from the analysis. However, calculation of a change score requires measurement of the outcome twice and in practice may be less efficient for outcomes which are unstable or difficult to measure precisely, where the measurement error may be larger than true between-person baseline variability. Change-from-baseline outcomes may also be preferred if they have a less skewed distribution than final measurement outcomes. Although sometimes used as a device to ‘correct’ for unlucky randomization, this practice is not recommended. The preferred statistical approach to accounting for baseline measurements of the outcome variable is to include the baseline outcome measurements as a covariate in a regression model or analysis of covariance (ANCOVA)". My question is: how do include both baseline (experimental and control group) in the analysis as a covariate in 'metafor'? So, far, this is what I did. I kinly request some help tp add the baseline as covariate to comply with the Cochrane suggestion- How can I add the baseline mean in both groups? Should I consider baseline standard deviation, and if yes, how? Should I take into account dropouts? I mean, in some sample at baseline n = 30 and 35 and at end of treatment n was 28 and 29... Thank you in advance, Antonello Preti This is my dataset (with imputed r = 0.70 for pre-post correlation, put in the 'ri' variable): ##### the data dat <- structure(list(study = structure(c(11L, 8L, 7L, 12L, 13L, 4L, 5L, 1L, 10L, 3L, 6L, 9L, 2L), .Label = c("Study A, 2012", "Study B, 2013", "Study C, 2013", "Study D, 2010", "Study E, 2012", "Study F, 2013", "Study G, 2006", "Study H, 2005", "Study I, 2013", "Study L, 2012", "Study M, 2003", "Study N, 2007", "Study P, 2007" ), class = "factor"), c_pre_mean = c(4.9, 15.18, 19.01, 5.1, 16.5, 27.35, 18.1, 2.4, 14.23, 0.08, 21.26, 21.5, 21.73), c_pre_sd = c(2.6, 2.21, 7.1, 1.5, 7.2, 13.92, 5.4, 0.13, 4.89, 0.94, 7.65, 5.22, 8.43), c_post_mean = c(6.1, 13.98, 18.5, 4.53, 15.9, 23, 16.9, 2.2, 16.58, -0.02, 16, 16.84, 23.54), c_post_sd = c(2.06, 3.24, 7, 2.06, 6.8, 12.06, 3.8, 0.13, 6.35, 0.88, 4.69, 4.64, 6.74), c_sample = c(14, 13, 19, 15, 34, 20, 24, 35, 31, 26, 49, 21, 22), e_pre_mean = c(4.6, 13.81, 19.9, 5.3, 18.7, 22.71, 19.2, 2.7, 15.97, -0.22, 20.9, 20.43, 21.94), e_pre_sd = c(2.1, 6.64, 8.1, 2.9, 7.3, 7.82, 4.1, 0.13, 6.73, 0.93, 5.18, 4.87, 7.02), e_post_mean = c(4.64, 15.86, 18.1, 4.33, 17.2, 24.89, 17.6, 2.8, 13.6, 0.06, 17.41, 16.05, 19.29), e_post_sd = c(2.34, 7.76, 7.8, 2.26, 7.4, 11.89, 3.7, 0.13, 5.79, 1.12, 5.16, 4.17, 6.58), e_sample = c(14, 18, 16, 16, 33, 28, 29, 36, 38, 27, 43, 25, 17), ri = c(.70, .70,.70,.70,.70,.70,.70,.70,.70,.70,.70,.70,.70)), .Names = c("study", "c_pre_mean", "c_pre_sd", "c_post_mean", "c_post_sd", "c_sample", "e_pre_mean", "e_pre_sd", "e_post_mean", "e_post_sd", "e_sample", "ri"), class = "data.frame", row.names = c(NA, -13L)) ### check the data dim(dat) head(dat) str(dat) attach(dat) #### yes, I know, do'nt do this.... # call the library library(metafor) # Computing Standardized Mean Difference (Hedges' g) for Each Group (experimental and control) at post treatment # use "SMD" for the standardized mean difference using raw score standardization datT <- escalc(measure="SMD", m1i=e_post_mean, sd1i=e_post_sd, n1i=e_sample, m2i=c_post_mean, sd2i=c_post_sd, n2i=c_sample, vtype="UB", data=dat, append=TRUE) # Extract the effect size ( Standardized Mean Difference (Hedges' g)) and its variance yi <- datT$yi vi <- datT$vi ############################################### # # fixed-effects model # ############################################### model.FE <- rma(yi, vi, method="FE", digits=2) summary(model.FE) # plot globale plot(model.FE, slab=paste(study)) [[alternative HTML version deleted]] ______________________________________________ R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see https://stat.ethz.ch/mailman/listinfo/r-help PLEASE do read the posting guide http://www.R-project.org/posting-guide.html and provide commented, minimal, self-contained, reproducible code.