You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

839 lines
26 KiB
Plaintext

7 months ago
/*
*! metan dialog version 1.0.5, 1 Apr 2004, T. J. Steichen, steichen@triad.rr.com
*! for metan version 1.85, 15 Mar 2004, M. J. Bradburn, mike.bradburn@cancer.org.uk
Fixed and random effects meta-analysis
--------------------------------------
Syntax: metan varlist [if exp] [in range] [,
label(namevar=name, yearvar=year)
fixed random fixedi randomi peto
rr or rd cornfield chi2 breslow notable nograph
cohen hedges glass nostandard
log sortby(sort_vars) ilevel(#) olevel(#) nokeep
xlabel(#,..,#) force t1title(#,..,#) boxsha(#) boxsca(#) texts(#)
saving(filename) nowt counts nostats nooverall
group1(text) group2(text) effect(text) nobox eform
wgt(weightvar) xtick(#,..,#)
t2title(#,..,#) b1title(#,..,#) b2title(#,..,#)
nointeger cc(#) by(byvar) nosubgroup sgweight legend(text) ]
To install in User Statistics menu via Stata commands:
. window menu append item "stUserStatistics" "Meta-analysis of Binary and Continuous Data (meta&n)" "db metan"
. window menu refresh
To permanently install, place the commands in your -profile.do- file.
*/
VERSION 8.0
INCLUDE _std_medium
INCLUDE _ht300
DEFINE _dlgwd 450
INCLUDE header
HELP hlp1, view("help metan")
RESET res1, label("Reset")
DIALOG main, label("metan 1.85 - Meta-analysis of Binary & Continuous") tabtitle("Main")
BEGIN
GROUPBOX gb_data 10 5 310 _ht1h, ///
label("Type of Data:")
RADIO r_binary 15 25 60 ., ///
label(" Count") first ///
onclickon(script main_binary_on) ///
onclickoff(script main_binary_off)
RADIO r_continuous 75 25 90 ., ///
label("Continuous") middle ///
onclickon(script main_continuous_on) ///
onclickoff(script main_continuous_off)
RADIO r_effect_ci 165 25 75 ., ///
label("Effect/CI") middle ///
onclickon(script main_effect_ci_on) ///
onclickoff(script main_effect_ci.off)
RADIO r_effect_se 240 25 75 ., ///
label("Effect/SE") last ///
onclickon(script main_effect_se_on) ///
onclickoff(script main_effect_se_off)
/* end GROUPBOX gb_data */
TEXT tx_binary 10 50 310 ., ///
label("Vars for Counts: a, b, c, d, in that order")
VARLIST vl_binary @ _ss @ ., ///
label("Vars for a, b, c, d")
TEXT tx_contin_exp @ 50 310 ., ///
label("Vars for Exp. Group: n, mean, sd, in that order")
VARLIST vl_contin_exp @ _ss @ ., ///
label("Experimental Group: n, mean, sd")
TEXT tx_contin_ctl @ _ss 310 ., ///
label("Vars for Control Group: n, mean, sd, in that order")
VARLIST vl_contin_ctl @ _ss @ ., ///
label("Control Group: n, mean, sd")
TEXT tx_effect_ci @ 50 310 ., ///
label("Vars for Effects: theta, lowerCI, upperCI, in that order")
VARLIST vl_effect_ci @ _ss @ ., ///
label("Effect Sizes: theta, lowerCI, upperCI")
TEXT tx_effect_se @ 50 310 ., ///
label("Vars for Effects: theta, se(theta), in that order")
VARLIST vl_effect_se @ _ss @ ., ///
label("Effect Sizes: theta, se(theta)")
/* end vars */
GROUPBOX gb_labels 10 130 310 _ht3h, ///
label("Labels for Data:")
CHECKBOX cb_name 20 150 70 ., ///
label("Name:") ///
onclickon(main.vn_name.enable) ///
onclickoff(main.vn_name.disable)
VARNAME vn_name 100 150 210 ., ///
label("Name Variable")
CHECKBOX cb_year 20 170 70 ., ///
label("Year:") ///
onclickon(main.vn_year.enable) ///
onclickoff(main.vn_year.disable)
VARNAME vn_year 100 170 210 ., ///
label("Year Variable")
/* end GROUPBOX gb_labels */
GROUPBOX gb_by 10 200 310 45, ///
label("By Variable:")
CHECKBOX cb_by 20 220 70 ., ///
label(" By:") ///
onclickon(script main_by_on) ///
onclickoff(script main_by_off)
VARLIST vl_by 100 220 210 ., ///
label("By Variable") ///
option("by")
/* end GROUPBOX gb_by */
GROUPBOX gb_sortby 10 250 310 45, ///
label("Sort Data:")
CHECKBOX cb_sortby 20 270 70 ., ///
label(" By:") ///
onclickon(main.vl_sortby.enable) ///
onclickoff(main.vl_sortby.disable)
VARLIST vl_sortby 100 270 210 ., ///
label("Name Variable") ///
option("sortby")
/* end GROUPBOX gb_sortby */
GROUPBOX gb_opts 325 5 120 85, ///
label("General Options:")
CHECKBOX cb_nokeep 330 25 70 ., ///
label("noKeep") ///
option("nokeep")
CHECKBOX cb_ilevel 330 45 60 ., ///
label("ilevel:") ///
onclickon(main.ed_ilevel.enable) ///
onclickoff(main.ed_ilevel.disable)
EDIT ed_ilevel 400 45 40 ., ///
label("ilevel") ///
numonly default(global S_level) ///
option("ilevel")
CHECKBOX cb_olevel 330 65 60 ., ///
label("olevel:") ///
onclickon(main.ed_olevel.enable) ///
onclickoff(main.ed_olevel.disable)
EDIT ed_olevel 400 65 40 ., ///
label("olevel") ///
numonly default(global S_level) ///
option("olevel")
/* end GROUPBOX gb_opts */
FRAME fr_wgt 325 95 120 60
CHECKBOX cb_wgt 330 100 110 ., ///
label("Weight Var") ///
onclickon(main.vn_wgt.enable) ///
onclickoff(main.vn_wgt.disable)
VARNAME vn_wgt 330 121 110 ., ///
label("Weight Variable") ///
option("wgt")
/* end wgt */
GROUPBOX gb_by_opts 325 200 120 61, ///
label("By Options:")
CHECKBOX cb_nosubgroup 330 220 100 ., ///
label("noSubGroup") ///
option("nosubgroup")
CHECKBOX cb_sgweight 330 240 100 ., ///
label("sgWeight") ///
option("sgweight")
/* end GROUPBOX gb_by_opts */
END
DIALOG metan_b, tabtitle("Binary...")
BEGIN
GROUPBOX gb_pool 0 10 210 _ht9h, ///
label("Pooling Model")
RADIO r_fixed 10 30 190 ., ///
label("Fixed, Mantel-Haenszel") first ///
onclickoff(program metan_b_bd) ///
option("fixed")
RADIO r_fixedi @ _ss @ ., ///
label("Fixed, Inverse Variance") middle ///
onclickoff(program metan_b_bd) ///
option("fixedi")
RADIO r_random @ _ss 195 ., ///
label("Random (M-H heterogeneity)") middle ///
onclickon(script metan_b_random_on) ///
onclickoff(program metan_b_chi2) ///
option("random")
RADIO r_randomi @ _ss @ ., ///
label("Random (I-V heterogeneity)") middle ///
onclickon(script metan_b_random_on) ///
onclickoff(program metan_b_chi2) ///
option("randomi")
RADIO r_peto @ _ss @ ., ///
label("Peto") last ///
onclickon(script metan_b_peto_on) ///
onclickoff(program metan_b_cornfield) ///
option("peto")
GROUPBOX gb_stat 220 10 120 _ht5h, ///
label("Statistic")
RADIO r_rr 230 30 80 ., ///
label("RR") first ///
onclickon(script metan_b_rr_on) ///
onclickoff(program metan_b_rr_off) ///
option("rr")
RADIO r_or @ _ss @ ., ///
label("OR") middle ///
onclickon(program metan_b_or_on) ///
onclickoff(program metan_b_or_off) ///
option("or")
RADIO r_rd @ _ss @ ., ///
label("RD") last ///
option("rd")
CHECKBOX cb_cornfield 10 140 200 ., ///
label("Use Cornfield CI's") ///
option("cornfield")
CHECKBOX cb_chi2 10 160 200 ., ///
label("Use Chi-2 Statistic") ///
option("chi2")
CHECKBOX cb_breslow 10 180 200 ., ///
label("Use Breslow-Day test") ///
option("breslow")
CHECKBOX cb_log 230 100 200 ., ///
label("Log scaled") ///
option("log")
CHECKBOX cb_eform 230 120 200 ., ///
label("Exponentiate") ///
option("eform")
CHECKBOX cb_notable 230 140 200 ., ///
label("noTable") ///
option("notable")
CHECKBOX cb_nograph 230 160 200 ., ///
label("noGraph") ///
option("nograph")
CHECKBOX cb_cc 10 260 150 ., ///
label("Continuity Correction:") ///
onclickon(metan_b.ed_cc.enable) ///
onclickoff(metan_b.ed_cc.disable)
EDIT ed_cc 160 260 65 ., ///
label("Continuity Correction") ///
option("cc")
CHECKBOX cb_nointeger 230 260 200 ., ///
label("noInteger") ///
option("nointeger")
END
DIALOG metan_c, tabtitle("Continuous...")
BEGIN
GROUPBOX gb_pool 0 10 210 _ht3h, ///
label("Pooling Model")
RADIO r_fixed 10 30 190 ., ///
label("Fixed, Inverse Variance") first ///
option("fixed")
RADIO r_random @ _ss @ ., ///
label("Random (I-V heterogeneity)") last ///
option("random")
GROUPBOX gb_stat 220 10 120 _ht7h, ///
label("Statistic")
RADIO r_cohen 230 30 100 ., ///
label("Cohen") first ///
option("cohen")
RADIO r_hedges @ _ss @ ., ///
label("Hedges") middle ///
option("hedges")
RADIO r_glass @ _ss @ ., ///
label("Glass") middle ///
option("glass")
RADIO r_nostandard @ _ss @ ., ///
label("noStandard") last ///
option("nostandard")
CHECKBOX cb_notable 230 140 200 ., ///
label("noTable") ///
option("notable")
CHECKBOX cb_nograph 230 160 200 ., ///
label("noGraph") ///
option("nograph")
CHECKBOX cb_nointeger 230 260 200 ., ///
label("noInteger") ///
option("nointeger")
END
DIALOG metan_e, tabtitle("Effect...")
BEGIN
GROUPBOX gb_pool 0 10 210 _ht3h, ///
label("Pooling Model")
RADIO r_fixed 10 30 190 ., ///
label("Fixed, Inverse Variance") first ///
option("fixed")
RADIO r_random @ _ss @ ., ///
label("Random (I-V heterogeneity)") last ///
option("random")
CHECKBOX cb_notable 230 140 200 ., ///
label("noTable") ///
option("notable")
CHECKBOX cb_nograph 230 160 200 ., ///
label("noGraph") ///
option("nograph")
CHECKBOX cb_effect 10 110 100 ., ///
label("Effect Label:") ///
onclickon(metan_e.ed_effect.enable) ///
onclickoff(metan_e.ed_effect.disable)
EDIT ed_effect 115 @ 225 ., ///
label("effect label") ///
option("effect")
END
DIALOG graph, tabtitle("Graph Opts")
BEGIN
CHECKBOX cb_saving 10 10 100 ., ///
label("Save graph:") ///
onclickon(graph.fi_saving.enable) ///
onclickoff(graph.fi_saving.disable)
FILE fi_saving 110 10 240 ., ///
label("File Name") ///
error("Save filename") ///
dialogtitle("Save graph") ///
filter("Stata Graphs|*.gph") ///
save ///
option("saving")
/* end saving */
GROUPBOX gb_xlabel 10 40 330 _ht3h, ///
label("X-axis Tick Labels (comma between):")
CHECKBOX cb_xlabel 15 60 45 ., ///
label("Set:") ///
onclickon(script graph_xlabel_on) ///
onclickoff(script graph_xlabel_off)
EDIT ed_xlabel 65 @ 270 ., ///
label("X Tick labels") ///
option("xlabel")
CHECKBOX cb_force 15 80 320 ., ///
label("Force Scale to Tick Range") ///
option("force")
/* end tick labels */
CHECKBOX cb_counts 15 115 65 ., ///
label("Counts") ///
onclickon(script graph_counts_on) ///
onclickoff(script graph_counts_off) ///
option("counts")
CHECKBOX cb_nowt 15 145 85 ., ///
label("noWeights") ///
option("nowt")
CHECKBOX cb_nostats 15 165 85 ., ///
label("noStats") ///
option("nostats")
CHECKBOX cb_nooverall 115 145 85 ., ///
label("noOverall") ///
option("nooverall")
CHECKBOX cb_nobox 115 165 85 ., ///
label("noBox") ///
option("nobox")
/* end switches */
CHECKBOX cb_legend 115 185 70 ., ///
label("Legend:") ///
onclickon(graph.ed_legend.enable) ///
onclickoff(graph.ed_legend.disable)
EDIT ed_legend 190 @ 55 ., ///
label("legend") ///
option("legend")
CHECKBOX cb_grp1 85 115 55 ., ///
label("Grp 1:") ///
onclickon(graph.ed_grp1.enable) ///
onclickoff(graph.ed_grp1.disable)
EDIT ed_grp1 145 @ 90 ., ///
label("Grp1") ///
option("group1")
CHECKBOX cb_grp2 245 115 55 ., ///
label("Grp 2:") ///
onclickon(graph.ed_grp2.enable) ///
onclickoff(graph.ed_grp2.disable)
EDIT ed_grp2 305 @ 90 ., ///
label("Grp2") ///
option("group2")
CHECKBOX cb_boxy 255 145 95 ., ///
label("Box yscale:") ///
onclickon(graph.ed_boxy.enable) ///
onclickoff(graph.ed_boxy.disable)
EDIT ed_boxy 355 @ 40 ., ///
label("Box yscale") numonly default(1) ///
option("boxsca")
CHECKBOX cb_boxs 255 165 95 ., ///
label("Box shade:") ///
onclickon(graph.ed_boxs.enable) ///
onclickoff(graph.ed_boxs.disable)
EDIT ed_boxs 355 @ 40 ., ///
label("Box shading") numonly default(4) ///
option("boxsha")
CHECKBOX cb_texts 255 185 95 ., ///
label("Font scale:") ///
onclickon(graph.ed_texts.enable) ///
onclickoff(graph.ed_texts.disable)
EDIT ed_texts 355 @ 40 ., ///
label("Font scale") numonly default(1) ///
option("texts")
/* end sets */
GROUPBOX gb_gopts7 10 205 390 _ht1h, ///
label("Allowed Graph7 Options:")
EDIT ed_gopts7 15 225 380 ., ///
label("Graph7 Options")
CHECKBOX cb_b1 15 255 390 ., ///
label("Effect Direction Labels, option b1( ):") ///
onclickon(script graph_b1_on) ///
onclickoff(script graph_b1_off)
TEXT tx_b1_l 10 275 25 ., ///
label("Left:")
EDIT ed_b1_l 35 275 160 ., ///
label(" Left")
TEXT tx_b1_r 205 275 35 ., ///
label("Right:")
EDIT ed_b1_r 240 275 160 ., ///
label("Right")
/* end Graph7 opts */
END
INCLUDE ifin
SCRIPT main_binary_on
BEGIN
main.tx_binary.show
main.vl_binary.show
main.tx_binary.enable
main.vl_binary.enable
main.tx_effect_ci.disable
main.vl_effect_ci.disable
main.tx_effect_ci.hide
main.vl_effect_ci.hide
main.tx_effect_se.disable
main.vl_effect_se.disable
main.tx_effect_se.hide
main.vl_effect_se.hide
main.tx_contin_exp.disable
main.vl_contin_exp.disable
main.tx_contin_exp.hide
main.vl_contin_exp.hide
main.tx_contin_ctl.disable
main.vl_contin_ctl.disable
main.tx_contin_ctl.hide
main.vl_contin_ctl.hide
graph.cb_counts.enable
END
SCRIPT main_binary_off
BEGIN
main.tx_binary.disable
main.vl_binary.disable
main.tx_binary.hide
main.vl_binary.hide
graph.cb_counts.disable
END
SCRIPT main_continuous_on
BEGIN
main.tx_contin_exp.show
main.vl_contin_exp.show
main.tx_contin_exp.enable
main.vl_contin_exp.enable
main.tx_contin_ctl.show
main.vl_contin_ctl.show
main.tx_contin_ctl.enable
main.vl_contin_ctl.enable
main.tx_binary.disable
main.vl_binary.disable
main.tx_binary.hide
main.vl_binary.hide
main.tx_effect_ci.disable
main.vl_effect_ci.disable
main.tx_effect_ci.hide
main.vl_effect_ci.hide
main.tx_effect_se.disable
main.vl_effect_se.disable
main.tx_effect_se.hide
main.vl_effect_se.hide
END
SCRIPT main_continuous_off
BEGIN
main.tx_contin_exp.disable
main.vl_contin_exp.disable
main.tx_contin_exp.hide
main.vl_contin_exp.hide
main.tx_contin_ctl.disable
main.vl_contin_ctl.disable
main.tx_contin_ctl.hide
main.vl_contin_ctl.hide
END
SCRIPT main_effect_ci_on
BEGIN
main.tx_effect_ci.show
main.vl_effect_ci.show
main.tx_effect_ci.enable
main.vl_effect_ci.enable
main.tx_effect_se.disable
main.vl_effect_se.disable
main.tx_effect_se.hide
main.vl_effect_se.hide
main.tx_binary.disable
main.vl_binary.disable
main.tx_binary.hide
main.vl_binary.hide
main.tx_contin_exp.disable
main.vl_contin_exp.disable
main.tx_contin_exp.hide
main.vl_contin_exp.hide
main.tx_contin_ctl.disable
main.vl_contin_ctl.disable
main.tx_contin_ctl.hide
main.vl_contin_ctl.hide
END
SCRIPT main_effect_ci_off
BEGIN
main.tx_effect_ci.disable
main.vl_effect_ci.disable
main.tx_effect_ci.hide
main.vl_effect_ci.hide
END
SCRIPT main_effect_se_on
BEGIN
main.tx_effect_se.show
main.vl_effect_se.show
main.tx_effect_se.enable
main.vl_effect_se.enable
main.tx_effect_ci.disable
main.vl_effect_ci.disable
main.tx_effect_ci.hide
main.vl_effect_ci.hide
main.tx_binary.disable
main.vl_binary.disable
main.tx_binary.hide
main.vl_binary.hide
main.tx_contin_exp.disable
main.vl_contin_exp.disable
main.tx_contin_exp.hide
main.vl_contin_exp.hide
main.tx_contin_ctl.disable
main.vl_contin_ctl.disable
main.tx_contin_ctl.hide
main.vl_contin_ctl.hide
END
SCRIPT main_effect_se_off
BEGIN
main.tx_effect_se.disable
main.vl_effect_se.disable
main.tx_effect_se.hide
main.vl_effect_se.hide
END
SCRIPT main_by_on
BEGIN
main.vl_by.enable
main.gb_by_opts.enable
main.cb_nosubgroup.enable
main.cb_sgweight.enable
END
SCRIPT main_by_off
BEGIN
main.vl_by.disable
main.gb_by_opts.disable
main.cb_nosubgroup.disable
main.cb_sgweight.disable
END
SCRIPT metan_b_random_on
BEGIN
metan_b.cb_breslow.disable
metan_b.cb_chi2.disable
END
SCRIPT metan_b_peto_on
BEGIN
metan_b.cb_breslow.disable
metan_b.cb_cornfield.disable
END
PROGRAM metan_b_bd
BEGIN
if metan_b.r_or {
call metan_b.cb_breslow.enable
}
END
PROGRAM metan_b_chi2
BEGIN
if metan_b.r_or & !(metan_b.r_random | metan_b.r_randomi) {
call metan_b.cb_chi2.enable
}
END
PROGRAM metan_b_cornfield
BEGIN
if metan_b.r_or {
call metan_b.cb_cornfield.enable
}
END
SCRIPT metan_b_rr_on
BEGIN
metan_b.cb_log.enable
metan_b.cb_eform.enable
END
PROGRAM metan_b_or_on
BEGIN
call metan_b.cb_log.enable
call metan_b.cb_eform.enable
call metan_b.r_peto.enable
if !metan_b.r_peto {
call metan_b.cb_cornfield.enable
}
if !(metan_b.r_random | metan_b.r_randomi) {
call metan_b.cb_chi2.enable
}
call metan_b.cb_breslow.enable
END
PROGRAM metan_b_or_off
BEGIN
if !metan_b.r_rr {
call metan_b.cb_log.disable
call metan_b.cb_eform.disable
}
call metan_b.r_peto.disable
call metan_b.cb_cornfield.disable
call metan_b.cb_chi2.disable
call metan_b.cb_breslow.disable
END
PROGRAM metan_b_rr_off
BEGIN
if !metan_b.r_or {
call metan_b.cb_log.disable
call metan_b.cb_eform.disable
}
END
SCRIPT graph_xlabel_on
BEGIN
graph.ed_xlabel.enable
graph.cb_force.enable
END
SCRIPT graph_xlabel_off
BEGIN
graph.ed_xlabel.disable
graph.cb_force.disable
END
SCRIPT graph_counts_on
BEGIN
graph.cb_grp1.enable
graph.cb_grp2.enable
END
SCRIPT graph_counts_off
BEGIN
graph.cb_grp1.disable
graph.cb_grp2.disable
graph.cb_grp1.setoff
graph.cb_grp2.setoff
graph.ed_grp1.disable
graph.ed_grp2.disable
END
SCRIPT graph_b1_on
BEGIN
graph.tx_b1_l.enable
graph.ed_b1_l.enable
graph.tx_b1_r.enable
graph.ed_b1_r.enable
END
SCRIPT graph_b1_off
BEGIN
graph.tx_b1_l.disable
graph.ed_b1_l.disable
graph.tx_b1_r.disable
graph.ed_b1_r.disable
END
PROGRAM command
BEGIN
put " metan "
if main.r_binary {
varlist main.vl_binary
}
if main.r_continuous {
varlist main.vl_contin_exp main.vl_contin_ctl
}
if main.r_effect_ci {
varlist main.vl_effect_ci
}
if main.r_effect_se {
varlist main.vl_effect_se
}
INCLUDE _ifin_pr
beginoptions
if main.cb_name | main.cb_year {
put "label("
if main.cb_name {
put "namevar=" main.vn_name
}
if main.cb_name & main.cb_year {
put ", "
}
if main.cb_year {
put "yearvar=" main.vn_year
}
put ") "
}
optionarg main.vl_sortby
optionarg main.vl_by
optionarg main.ed_ilevel
optionarg main.ed_olevel
optionarg main.vn_wgt
option main.cb_nokeep
option main.cb_nosubgroup
option main.cb_sgweight
if main.r_binary {
if !main.vn_wgt {
option radio(metan_b r_fixed r_fixedi r_random r_randomi r_peto)
}
option radio(metan_b r_rr r_or r_rd)
option metan_b.cb_cornfield
option metan_b.cb_chi2
option metan_b.cb_breslow
option metan_b.cb_log
option metan_b.cb_eform
option metan_b.cb_nograph
option metan_b.cb_notable
optionarg metan_b.ed_cc
option metan_b.cb_nointeger
}
if main.r_continuous {
if !main.vn_wgt {
option radio(metan_c r_fixed r_random)
}
option radio(metan_c r_cohen r_hedges r_glass r_nostandard)
option metan_c.cb_nograph
option metan_c.cb_notable
option metan_c.cb_nointeger
}
if main.r_effect_se | main.r_effect_ci {
if !main.vn_wgt {
option radio(metan_e r_fixed r_random)
}
optionarg metan_e.ed_effect
option metan_e.cb_nograph
option metan_e.cb_notable
}
optionarg graph.fi_saving
optionarg graph.ed_xlabel
option graph.cb_force
option graph.cb_counts
option graph.cb_nowt
option graph.cb_nostats
option graph.cb_nooverall
option graph.cb_nobox
optionarg graph.ed_grp1
optionarg graph.ed_grp2
optionarg graph.ed_texts
optionarg graph.ed_legend
optionarg graph.ed_boxy
optionarg graph.ed_boxs
put graph.ed_gopts7 " "
if graph.cb_b1 {
put "b1(*I:" graph.ed_b1_l "*" graph.ed_b1_r ") "
}
endoptions
END