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))
metafor - Cochrane on change score in pre-post design
2 messages · Antonello Preti, Michael Dewey
Comment below
On 13/04/2015 20:46, Antonello Preti wrote:
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)".
As I read Cochrane this is a comment about which data you should extract from the primary studies if you have a choice. It is not a recommendation to you the meta-analyst about how you subsequently conduct the meta-analysis of the extracted data.
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 at 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.