Dear all,
I am conducting propensity score matching and would like to use a caliper of width equal to 0.2 of the standard deviation of the logit of the propensity score (as suggested by Austin, 2011: DOI: 10.1002/pst.433). Since I am using multiple imputed data, I run the whole matching process “by hand” rather than using one of the Stata commands.
The following code shows my attempt to calculate the caliper widths:
Somehow this doesn't seem to be right since I get a caliper widths of 0.4256. The differences between propensity scores of the treatment and control group are overall below 0.05. Thus, all control respondents are chosen as matches according to the calculated caliper widths. Can someone tell me what I might be doing wrong?
Thank you very much!
Nicole
Basic information: Stata 16, data from the German SOEP
I am conducting propensity score matching and would like to use a caliper of width equal to 0.2 of the standard deviation of the logit of the propensity score (as suggested by Austin, 2011: DOI: 10.1002/pst.433). Since I am using multiple imputed data, I run the whole matching process “by hand” rather than using one of the Stata commands.
The following code shows my attempt to calculate the caliper widths:
Code:
***Estimate propensity score mi estimate, saving(reg_ps, replace): logistic treat c.age i.cohort i.mig /// basic demographic c.siblings i.pedu /// family of origin c.age0t17 i.east c.age18plus /// hh living arrangements i.help /// Health/help needed i.edu incomeheq_log incomeind_log /// human capital i.empst expft incsat i.worries /// i.own i.saccount i.business i.bildloan /// wealth i.lifeins i.shares i.gains_cat /// c.p_age i.p_mig i.p_edu c.p_siblings i.p_pedu /// partner information c.p_expft i.p_empst c.p_incsat i.p_worries mi predict xb using reg_ps, xb //obtain linear predictions mi predict stdp using reg_ps, stdp //obtain standard error mi xeq: gen ps = exp(xb)/(1+exp(xb)) //transfer linear predictions into predicted probabilities mi xeq: gen se = ps * (1-ps) * stdp //transfer linear predictions of standard errors into se of predicted probabilities mi xeq: gen sd = se * sqrt(20271) //calculate standard deviation based on SE and sample size (=respondents in the regression) mi xeq: gen sd2 = sd^2 //calculate pooled standard deviationof the logit of the propensity score using forumlar from Cohen(1988) mi xeq: egen sdpool = total(sd2) mi xeq: replace sdpool = sqrt(sdpool/20271) mi xeq: gen cal = sdpool * 0.20 //caliper of width equal to 0.2 of the standard deviation of the logit of the propensity score
Somehow this doesn't seem to be right since I get a caliper widths of 0.4256. The differences between propensity scores of the treatment and control group are overall below 0.05. Thus, all control respondents are chosen as matches according to the calculated caliper widths. Can someone tell me what I might be doing wrong?
Thank you very much!
Nicole
Basic information: Stata 16, data from the German SOEP