/* psmatch2 VERSION 1.0.3 12dec2011 * fix submit VERSION 1.0.1 19nov2003 keyword: rclass */ VERSION 8.0 POSITION . . 490 370 DIALOG main, label("psmatch2: Propensity Score and Mahalanobis Matching") BEGIN /* mahalanobis settings */ GROUPBOX mahalbox 10 60 230 100, l("Mahalanobis Settings") TEXT mvarsL 20 +25 30 ., l("Vars:") left VARLIST mvars 60 @ 170 ., l("Select Control Variables") option(mahal) CHECKBOX matrix 20 +25 100 ., l("Matrix: ") onclickon(main.wmat.enable) onclickoff(main.wmat.disable) EDIT wmat 120 @ 110 ., l("Distance matrix") /* propensity score settings */ GROUPBOX pscorebox 10 60 230 100, l("Propensity Score Settings") RADIO prvps 20 +25 100 ., l("Provide score:") first onclickon(script est_disable) onclickoff(script est_enable) VARNAME pscore 140 @ 80 ., l("Pscore") option(pscore) RADIO estps 20 +25 180 ., l("Estimate score") last default(1) onclickon(script est_enable) onclickoff(script est_disable) CHECKBOX logodds 20 +25 180 ., l("Match on log-odds ratio") /* estimate settings */ GROUPBOX estpsbox 10 170 470 80, l("Propensity Score Estimation Settings") TEXT cvarsL 20 +25 120 ., l("Variable list:") left VARLIST cvars 100 @ 360 ., l("Select Control Variables") CHECKBOX logit 20 +25 120 ., l("Logit estimation") CHECKBOX index 150 @ 180 ., l("Match on index x'b") /* neighbor settings */ GROUPBOX neighborbox 250 60 230 100, l("Neighbor Settings") TEXT neighborL +10 +25 70 ., l("# neigbors") left SPINNER neighbor +100 @ 70 ., l("") min(1) max(10000) option(neighbor) TEXT aiL 260 +25 70 ., l("# matches SE") left SPINNER ai +100 @ 70 ., l("") min(0) max(10000) option(ai) CHECKBOX descend 260 +25 100 ., l("Descending") CHECKBOX noreplace +100 @ 100 ., l("No replacement") /* kernel settings */ GROUPBOX kernelbox 250 60 230 100, l("Kernel Settings") TEXT kernelL +10 +25 70 ., l("Kernel type:") left COMBOBOX kernel +70 @ 120 ., dropdownl label("Kernel") content("kernel") val("kval") option(kerneltype) TEXT bwidthL 260 +25 70 ., l("Bandwidth:") left EDIT bwidth +70 @ 100 ., l("Bandwidth") numonly option(bwidth) /* llr settings */ GROUPBOX llrbox 250 60 230 100, l("Local linear regression Settings") /* support & trim settings */ GROUPBOX trimbox 250 260 230 100, l("Support & Trim") CHECKBOX support +10 +25 150 ., l("Common support at tails") CHECKBOX trimL @ +25 100 ., l("Trim bottom") onclickon(main.trim.enable) onclickoff(main.trim.disable) SPINNER trim 350 @ 50 ., l("Trim") min(0) max(100) option(trim) TEXT trimL2 400 @ 70 ., l("%") left TEXT caliperL 260 +25 70 ., l("Caliper:") left EDIT caliper 350 @ 80 ., l("Bandwidth") numonly option(caliper) /* outcome */ GROUPBOX outcomebox 10 260 230 100, l("Outcome") TEXT treatmentL 20 +25 120 ., l("Treatment Indicator:") VARNAME treatment 140 @ 90 ., l("Select Treatment Indicator") TEXT outcomeL 20 +25 110 ., l("Outcome variable:") left VARLIST outcome 140 @ 90 ., l("Outcome variable") option(outcome) CHECKBOX ate 20 +25 180 ., l("Also estimate ATE") /* basic method & metric settings */ TEXT metriclab 10 10 180 ., l("Matching metric:") TEXT methodlab 250 @ 180 ., l("Matching method:") COMBOBOX metricCB 10 +20 230 ., dropdownl l("Metric") content("metric") val("metric_val") onselchangelist(metric_show) COMBOBOX methodCB 250 @ 230 ., dropdownl l("Method") content("method") val("method_val") onselchangelist(method_show) END OK ok1, label("OK") CANCEL can1, label("Cancel") SUBMIT sub1, label("Submit") HELP hlp1, label("Help") view("help psmatch2") PROGRAM command BEGIN if !(main.treatment) { stopbox stop "You must specify a treatment indicator!" } if (main.prvps & !main.pscore) { stopbox stop "You must provide a matching score!" } if (!H(main.mahalbox) & main.matrix & !main.wmat) { stopbox stop "You must provide the name of the weighting matrix!" } if (!H(main.mahalbox) & main.matrix & !main.mvars) { stopbox stop "You must provide matching variable for the mahalanobis matching!" } put "psmatch2 " put main.treatment if ((!H(main.pscorebox) & main.estps) | !H(main.mahalbox)) { put " " put main.cvars } put ", " optionarg main.outcome if ((!H(main.pscorebox) & main.estps)) { if (main.index) { put "index " } if (main.logit) { put "logit " } } if (!H(main.pscorebox) & main.prvps) { optionarg main.pscore } if (!H(main.pscorebox) & main.logodds) { put "odds " } if !H(main.mahalbox) { optionarg main.mvars } if !H(main.neighborbox) { optionarg main.neighbor } if (!H(main.neighborbox) & main.ai) { optionarg main.ai } if !H(main.kernelbox) { put "kernel " optionarg main.kernel optionarg main.bwidth } if !H(main.llrbox) { put "llr " optionarg main.kernel optionarg main.bwidth } if (main.ate) { put "ate " } if (main.descend) { put "descending " } if (main.support) { put "common " } if (main.noreplace) { put "noreplace " } if (main.trimL) { optionarg main.trim } if (main.caliper) { optionarg main.caliper } END PROGRAM prvpsIsChecked BEGIN if (main.prvps) { call script est_disable } else { call script est_enable } END SCRIPT trim_enable BEGIN gaction main.trimbox.enable gaction main.trim.enable gaction main.trimL.enable gaction main.trimL2.enable gaction main.support.enable gaction main.caliper.enable gaction main.caliperL.enable END SCRIPT trim_disable BEGIN gaction main.trimbox.disable gaction main.trim.disable gaction main.trimL.disable gaction main.trimL2.disable gaction main.support.disable gaction main.caliper.disable gaction main.caliperL.disable END SCRIPT est_disable BEGIN gaction main.pscore.enable gaction main.estpsbox.disable gaction main.cvarsL.disable gaction main.cvars.disable gaction main.logit.disable gaction main.index.disable END SCRIPT est_enable BEGIN gaction main.pscore.disable gaction main.estpsbox.enable gaction main.cvarsL.enable gaction main.cvars.enable gaction main.logit.enable gaction main.index.enable END SCRIPT est_disable2 BEGIN script est_disable script trim_disable END SCRIPT est_enable2 BEGIN script est_enable script trim_enable END SCRIPT ps_hide BEGIN script est_disable gaction main.pscorebox.hide gaction main.pscore.hide gaction main.estps.hide gaction main.prvps.hide gaction main.logodds.hide END SCRIPT ps_show BEGIN script est_enable gaction main.pscorebox.show gaction main.pscore.show gaction main.estps.show gaction main.prvps.show gaction main.logodds.show END SCRIPT neighbor_enable BEGIN gaction main.neighborbox.enable gaction main.neighbor.enable gaction main.neighborL.enable gaction main.descend.enable gaction main.noreplace.enable END SCRIPT ms_hide BEGIN gaction main.mahalbox.hide gaction main.mvarsL.hide gaction main.mvars.hide gaction main.matrix.hide gaction main.wmat.hide script neighbor_enable END SCRIPT ms_show BEGIN gaction main.mahalbox.show gaction main.mvarsL.show gaction main.mvars.show gaction main.matrix.show gaction main.wmat.show END SCRIPT pscore_show BEGIN script ps_show script ms_hide script trim_enable program prvpsIsChecked END SCRIPT mahalanobis_show BEGIN script ps_hide script ms_show script trim_disable END SCRIPT neighbor_show BEGIN gaction main.neighborbox.show gaction main.neighbor.show gaction main.neighborL.show gaction main.descend.show gaction main.noreplace.show gaction main.llrbox.hide gaction main.kernelbox.hide gaction main.kernelL.hide gaction main.kernel.hide gaction main.bwidthL.hide gaction main.bwidth.hide END SCRIPT kernel_show BEGIN gaction main.neighborbox.hide gaction main.neighbor.hide gaction main.neighborL.hide gaction main.descend.hide gaction main.noreplace.hide gaction main.llrbox.hide gaction main.kernelbox.show gaction main.kernelL.show gaction main.kernel.show gaction main.bwidthL.show gaction main.bwidth.show gaction main.kernel.setvalue "epan" END SCRIPT llr_show BEGIN gaction main.neighborbox.hide gaction main.neighbor.hide gaction main.neighborL.hide gaction main.descend.hide gaction main.noreplace.hide gaction main.llrbox.show gaction main.kernelbox.hide gaction main.kernelL.show gaction main.kernel.show gaction main.bwidthL.show gaction main.bwidth.show gaction main.kernel.setvalue "tricube" END LIST kernel BEGIN Gaussian Epanechnikov biweight Uniform Tricube END LIST kval BEGIN normal epan biweight uniform tricube END LIST metric BEGIN Propensity Score Mahalanobis END LIST metric_val BEGIN pscore mahalanobis END LIST metric_show BEGIN script pscore_show script mahalanobis_show END LIST method BEGIN Nearest Neighbor Kernel Local Linear Regression END LIST method_val BEGIN neighbor kernel llr END LIST method_show BEGIN script neighbor_show script kernel_show script llr_show END