Login  Register

Re: 'Forest-plots' or Errror bar-charts in SPSS

Posted by Marta García-Granero on Sep 15, 2006; 9:44am
URL: http://spssx-discussion.165.s1.nabble.com/Forest-plots-or-Errror-bar-charts-in-SPSS-tp1070926p1070927.html

Hi Laurie

LP> Thanks to those who responded with very helpful messages in
LP> response to my queries about using SPSS for meta-analysis. Now I'm
LP> at the stage of reporting the results, please can anyone help me
LP> with a way of drawing up a 'forest plot' like those produced by
LP> the Cochrane RevMan software using SPSS? Perhaps someone knows an
LP> ingenious way to import SPSS data to RevMan in order to do this?
LP> Or, maybe someone has a macro to do the same thing using
LP> SPSS? Alternatively, if someone could help me draw up a simple
LP> error bar-chart in SPSS, showing the effect size with its 95%
LP> confidence interval for each study, that would also help.

* Sample dataset (processed data )*.
DATA LIST LIST/ trial(F4) year(A5) study(A10) measure cilow ciup percwi(4 F8.3).
BEGIN DATA
 1 "1989" "Hodnett  " .502 .262  .962   4.940
 2 "1991" "Kennell  " .352 .216  .575   8.694
 3 "1992" "Bréart-Fr" .785 .483 1.276   8.878
 4 "1992" "Bréart-Bg" .811 .653 1.007  44.598
 5 "1997" "Gagnon   " .867 .573 1.311  12.237
 6 "1998" "Langer   " .280 .203  .384  20.654
 7 "    " "Total    " .594 .514  .687 100.000
END DATA.

A) Assuming you have SPSS 14:

SORT CASES BY trial(D).
STRING YearAndStudy(A30).
COMPUTE YearAndStudy=CONCAT(RTRIM(year)," ",study).
COMPUTE RefLine=1.

GGRAPH
  /GRAPHDATASET NAME="graphdataset" VARIABLES=YearAndStudy ciup cilow measure percwi RefLine
  MISSING=LISTWISE REPORTMISSING=NO
 /GRAPHSPEC SOURCE=INLINE.

* If the effect you are measuring is OR or RR, then this syntax can
 do the task *.

BEGIN GPL
 SOURCE: s=userSource(id("graphdataset"))
 DATA:   YearAndStudy=col(source(s),   name("YearAndStudy"), unit.category())
 DATA:   ciup=col(source(s),    name("ciup"))
 DATA:   cilow=col(source(s),   name("cilow"))
 DATA:   measure=col(source(s), name("measure"))
 DATA:   percwi=col(source(s),  name("percwi"))
 DATA:   RefLine=col(source(s), name("RefLine"))
 COORD:  transpose(rect(dim(1,2), transpose()))
 GUIDE:  axis(dim(2), label(" Favours treatment                 Favours Control"))
 SCALE:  cat(dim(1))
 SCALE:  log(dim(2))
 ELEMENT: interval(position(region.spread.range(YearAndStudy*(cilow+ciup))),
  shape(shape.line), color(color.black))
 ELEMENT: point(position(YearAndStudy*measure), shape(shape.square),
  size(percwi), color.interior(color.black))
 ELEMENT: line(position(YearAndStudy*RefLine), shape(shape.line))
END GPL.

If your meta-analyzing means, then the reference line should be set at
0 [COMPUTE RefLine=0] and the scale should be linear instead of
logarithmic [SCALE: linear(dim(2))].

B) If you don't have SPSS 14, but older, then use the simpler syntax
(uglier graph) you can find in the collection of meta-analytic files I
wrote time ago:

http://www.spsstools.net/Syntax/MetaAnalysis/META-SPSS.ZIP

Basically:

GRAPH /HILO(SIMPLE)=VALUE( ciup cilow measure ) BY study.

(same sample dataset is used).

Then edit the graph to transpose the coordinates system, change the
scale to log (if needed), add a reference line at 0 or 1 (depending on
the summary measure), save the chart template an apply it to new
graphs:

GRAPH /HILO(SIMPLE)=VALUE( ciup cilow measure ) BY study
 /TEMPLATE='Your template file'.

--
Regards,
Dr. Marta García-Granero,PhD           mailto:[hidden email]
Statistician

---
"It is unwise to use a statistical procedure whose use one does
not understand. SPSS syntax guide cannot supply this knowledge, and it
is certainly no substitute for the basic understanding of statistics
and statistical thinking that is essential for the wise choice of
methods and the correct interpretation of their results".

(Adapted from WinPepi manual - I'm sure Joe Abrahmson will not mind)