Problem with forest plot in 'meta' after update and byvar command

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Problem with forest plot in 'meta' after update and byvar command

antor
Dear all, I have a problem with the package ‘meta’.
I have 15 studies in a meta-analysis, belonging to two groups (a different
control was used depending on the study).
After the general estimation of the effect of the experimental treatment, I
want to evaluate the effect by type of control. So I used the ‘update’
function with the ‘byvar’ command.

I want the sample size of the experimental group and the control group to
be printed in the forest plot. So I added the sample size to the result of
the subgroup analysis.

Then I have arranged the forest plot to have the sample size to be printed
before the effect size of each study, by grouping the studies according to
their type of control (two groups).

In the forest plot, I can see the total sample size of the whole sample of
studies, but the forest plot does not print the total sample size by the
group. Instead, it prints a point.

I do not know why.

Usually the forest plot after the ‘update byvar’ print the total sample
size by the group, as in the fig. 2.8 of Schwarzer, Carpenter, Rucker,
Meta-analysis with R, Springer, 2015.

What can I do?

Thank you in advance,
Antonello Preti

### Here the data and the codes I have used.

### The data

datAgg <- structure(list(Study = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L,
8L, 9L, 10L, 11L, 13L, 14L, 15L, 16L), .Label = c("Amber et al. 2015
Other         ",
"Beta et al. 1994 TAU           ", "Gemma†et al. 2012 TAU     ",
"Delta et al. 2015 Other         ", "Delta et al. 2015 TAU           ",
"Heta 1989 Other ", "Heta 1989 TAU   ",
"Lemme et al. 2008 Other   ", "Roda et al. 2011 Other      ",
"Saint et al. 2013 TAU         ", "Stabat et al. 2005 TAU          ",
"Spera et al. 1999 Other     ", "Tania et al. 2016 TAU             ",
"Vanda et al. 2002 TAU    ", "Vasto et al. 2005 Other         ",
"Vasto et al. 2005 TAU           ", "Wolf et al. 2005 Other        ",
"Wolf et al. 2005 TAU          "), class = "factor"), yi =
c(0.413781967817236,
0.897867818781807, -0.629691420114331, -0.0570629170645163,
0.100199348083711,
0.166720438987659, -0.0791416968479593, -0.516848713049707,
-0.588171436440896,
1.68578725963673, 0.549424389382073, -0.528085519326364,
0.0552725558889493,
0.450384415544429, 0.455766346836709), vi = c(0.0526848369519856,
0.0653245457221679, 0.0403678427142577, 0.0460018003388296,
0.0465699994730023,
0.200694892619406, 0.200156585204499, 0.0574699191913509,
0.0542032153656511,
0.060279300844124, 0.0988317519005698, 0.039802280364049,
0.0952744649456488,
0.0446012425417145, 0.0441325163026295), tr = c(42, 40, 52, 43,
43, 10, 10, 41, 38, 38, 21, 52, 21, 47, 47), ct = c(36, 29, 52,
44, 43, 10, 10, 32, 39, 54, 21, 52, 21, 45, 46), group = c("Vale",
"ADE", "ADE", "Vale", "ADE", "Vale", "ADE", "Vale", "Vale",
"ADE", "ADE", "ADE", "ADE", "Vale", "ADE"), sem = c(0.229531777651779,
0.255586669687932, 0.200917502259653, 0.214480302915745, 0.215800832883014,
0.447989835397418, 0.44738862882789, 0.239728845138316, 0.232815840023077,
0.245518432799095, 0.314375176978988, 0.199505088566806, 0.308665619960579,
0.211190062601711, 0.210077405502423)), row.names = c(NA, -15L
), class = "data.frame")


###########################################################
#
# Analysis with 'meta'
#
###########################################################

### aggregated data, check

head(datAgg)


### call the library

library(meta)

### analysis

meta1 <- metagen(TE=yi, seTE=sem, data=datAgg, studlab=datAgg$Study,
    sm="SMD", hakn=TRUE, method.tau="EB")

### add sample size to the results of the meta-analysis

meta1$n.e=datAgg$tr
meta1$n.c=datAgg$ct

### summary

summary(meta1)

### forest plot
### digits.se=2 is the minimum number of significant digits for standard
error (in this case = 2)

forest(meta1, digits.se=2, leftcols=c("studlab","n.e", "n.c", "TE",
"seTE"),
    leftlabs=c("Study", "n∞ \n Treated", "n∞ \n Controls", "Estimated \n
Effect Size", "Standard \n error"))


###########################################################
### subgroup analysis
###########################################################

modelsub <- update(meta1, byvar=group)

summary(modelsub)


### add sample size to the results of the meta-analysis

modelsub$n.e=datAgg$tr
modelsub$n.c=datAgg$ct

###########################################################
### forest plot
###########################################################

### save as .tiff

tiff("Figure.tiff", width = 12, height = 8, units = 'in', res = 300,
compression = 'lzw')

### forest plot
### digits=2 is the minimum number of significant digits for data

forest(modelsub,studlab=paste(datAgg$Study), print.byvar=FALSE,
fontsize=10,fs.heading=10,digits=2,
leftcols=c("studlab","n.e", "n.c"),comb.fixed=T, overall=T, col.by="black",

leftlabs=c("Study", "n∞ \n Treated", "n∞ \n Controls"))

dev.off()
### done

        [[alternative HTML version deleted]]

______________________________________________
[hidden email] 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.
Reply | Threaded
Open this post in threaded view
|

Re: Problem with forest plot in 'meta' after update and byvar command

Michael Dewey-3
Dear Antonello

There is a mailing list dedicated to meta-analysis and R. People from
the team behind the package you mention do post there.

https://stat.ethz.ch/mailman/listinfo/r-sig-meta-analysis//

Remember to register first please.

Michael

On 21/03/2019 22:04, Antonello Preti wrote:

> Dear all, I have a problem with the package ‘meta’.
> I have 15 studies in a meta-analysis, belonging to two groups (a different
> control was used depending on the study).
> After the general estimation of the effect of the experimental treatment, I
> want to evaluate the effect by type of control. So I used the ‘update’
> function with the ‘byvar’ command.
>
> I want the sample size of the experimental group and the control group to
> be printed in the forest plot. So I added the sample size to the result of
> the subgroup analysis.
>
> Then I have arranged the forest plot to have the sample size to be printed
> before the effect size of each study, by grouping the studies according to
> their type of control (two groups).
>
> In the forest plot, I can see the total sample size of the whole sample of
> studies, but the forest plot does not print the total sample size by the
> group. Instead, it prints a point.
>
> I do not know why.
>
> Usually the forest plot after the ‘update byvar’ print the total sample
> size by the group, as in the fig. 2.8 of Schwarzer, Carpenter, Rucker,
> Meta-analysis with R, Springer, 2015.
>
> What can I do?
>
> Thank you in advance,
> Antonello Preti
>
> ### Here the data and the codes I have used.
>
> ### The data
>
> datAgg <- structure(list(Study = structure(c(1L, 2L, 3L, 4L, 5L, 6L, 7L,
> 8L, 9L, 10L, 11L, 13L, 14L, 15L, 16L), .Label = c("Amber et al. 2015
> Other         ",
> "Beta et al. 1994 TAU           ", "Gemma†et al. 2012 TAU     ",
> "Delta et al. 2015 Other         ", "Delta et al. 2015 TAU           ",
> "Heta 1989 Other ", "Heta 1989 TAU   ",
> "Lemme et al. 2008 Other   ", "Roda et al. 2011 Other      ",
> "Saint et al. 2013 TAU         ", "Stabat et al. 2005 TAU          ",
> "Spera et al. 1999 Other     ", "Tania et al. 2016 TAU             ",
> "Vanda et al. 2002 TAU    ", "Vasto et al. 2005 Other         ",
> "Vasto et al. 2005 TAU           ", "Wolf et al. 2005 Other        ",
> "Wolf et al. 2005 TAU          "), class = "factor"), yi =
> c(0.413781967817236,
> 0.897867818781807, -0.629691420114331, -0.0570629170645163,
> 0.100199348083711,
> 0.166720438987659, -0.0791416968479593, -0.516848713049707,
> -0.588171436440896,
> 1.68578725963673, 0.549424389382073, -0.528085519326364,
> 0.0552725558889493,
> 0.450384415544429, 0.455766346836709), vi = c(0.0526848369519856,
> 0.0653245457221679, 0.0403678427142577, 0.0460018003388296,
> 0.0465699994730023,
> 0.200694892619406, 0.200156585204499, 0.0574699191913509,
> 0.0542032153656511,
> 0.060279300844124, 0.0988317519005698, 0.039802280364049,
> 0.0952744649456488,
> 0.0446012425417145, 0.0441325163026295), tr = c(42, 40, 52, 43,
> 43, 10, 10, 41, 38, 38, 21, 52, 21, 47, 47), ct = c(36, 29, 52,
> 44, 43, 10, 10, 32, 39, 54, 21, 52, 21, 45, 46), group = c("Vale",
> "ADE", "ADE", "Vale", "ADE", "Vale", "ADE", "Vale", "Vale",
> "ADE", "ADE", "ADE", "ADE", "Vale", "ADE"), sem = c(0.229531777651779,
> 0.255586669687932, 0.200917502259653, 0.214480302915745, 0.215800832883014,
> 0.447989835397418, 0.44738862882789, 0.239728845138316, 0.232815840023077,
> 0.245518432799095, 0.314375176978988, 0.199505088566806, 0.308665619960579,
> 0.211190062601711, 0.210077405502423)), row.names = c(NA, -15L
> ), class = "data.frame")
>
>
> ###########################################################
> #
> # Analysis with 'meta'
> #
> ###########################################################
>
> ### aggregated data, check
>
> head(datAgg)
>
>
> ### call the library
>
> library(meta)
>
> ### analysis
>
> meta1 <- metagen(TE=yi, seTE=sem, data=datAgg, studlab=datAgg$Study,
>      sm="SMD", hakn=TRUE, method.tau="EB")
>
> ### add sample size to the results of the meta-analysis
>
> meta1$n.e=datAgg$tr
> meta1$n.c=datAgg$ct
>
> ### summary
>
> summary(meta1)
>
> ### forest plot
> ### digits.se=2 is the minimum number of significant digits for standard
> error (in this case = 2)
>
> forest(meta1, digits.se=2, leftcols=c("studlab","n.e", "n.c", "TE",
> "seTE"),
>      leftlabs=c("Study", "n∞ \n Treated", "n∞ \n Controls", "Estimated \n
> Effect Size", "Standard \n error"))
>
>
> ###########################################################
> ### subgroup analysis
> ###########################################################
>
> modelsub <- update(meta1, byvar=group)
>
> summary(modelsub)
>
>
> ### add sample size to the results of the meta-analysis
>
> modelsub$n.e=datAgg$tr
> modelsub$n.c=datAgg$ct
>
> ###########################################################
> ### forest plot
> ###########################################################
>
> ### save as .tiff
>
> tiff("Figure.tiff", width = 12, height = 8, units = 'in', res = 300,
> compression = 'lzw')
>
> ### forest plot
> ### digits=2 is the minimum number of significant digits for data
>
> forest(modelsub,studlab=paste(datAgg$Study), print.byvar=FALSE,
> fontsize=10,fs.heading=10,digits=2,
> leftcols=c("studlab","n.e", "n.c"),comb.fixed=T, overall=T, col.by="black",
>
> leftlabs=c("Study", "n∞ \n Treated", "n∞ \n Controls"))
>
> dev.off()
> ### done
>
> [[alternative HTML version deleted]]
>
> ______________________________________________
> [hidden email] 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.
>

--
Michael
http://www.dewey.myzen.co.uk/home.html

______________________________________________
[hidden email] 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.