*Inverse Probability Weighting clear all set seed 22019 set obs 10000 ********************************************************************* *Let's review the case of the conditionally randomized experiment *** *Let's compare standardization and IPWs for getting the correct ***** *Causal estimate (risk ratio or risk difference) ******************** ********************************************************************* gen unique_id = _n gen female = runiform()<0.60 gen treat = runiform()<0.60 if female==1 replace treat = runiform()<0.40 if female==0 tab female treat, row gen y1 = int(runiform()<0.45 - 0.15*treat) if female==1 /*treatment protective for women*/ replace y1 = int(runiform()<0.45 + 0.15*treat) if female==0 /*harms men*/ *counterfactual outcome values gen y1_fem1 = int(runiform()<0.45 - 0.15*1) if female==1 gen y1_fem0 = int(runiform()<0.45 - 0.15*0) if female==1 *causal risk ratio for women di 0.30/0.45 *causal risk difference for women di 0.30 - 0.45 gen y1_male1 = int(runiform()<0.45 + 0.15*1) if female==0 gen y1_male0 = int(runiform()<0.45 + 0.15*0) if female==0 *causal risk ratio for men di 0.60/0.45 *causal risk difference for men di 0.60-0.45 *Let's use standardization to get overall causal risk ratio *Numerator di(0.30*0.6038) + (0.60*.3962) *Denominator di(0.45*0.6038) + (0.45*.3962) *overall causal risk ratio should be di 0.41 / 0.45 *What happens if we tried to estimate the causal risk ratios via regression *for women glm y1 treat if female==1, family(binomial) link(log) eform *for men glm y1 treat if female==0, family(binomial) link(log) eform *overall glm y1 treat, family(binomial) link(log) eform *Inverse probability weighting logistic treat female predict treat_p gen wt1 = 1/treat_p if treat==1 replace wt1 = 1/1-treat_p if treat==0 sum wt1 hist wt1 glm y1 treat [pw = wt1], family(binomial) link(log) eform /*robust standard errors were estimated above, but below are two ways to add to double-check*/ glm y1 treat [pw = wt1], family(binomial) link(log) eform cluster(unique_id) glm y1 treat [pw = wt1], family(binomial) link(log) eform robust