I am using genetic matching, implemented through the
MatchIt package (dependent on
rgenoud), in order to evaluate causal effects of a particular treatment (binary categorical variable) on a binary outcome. I used
mice to multiply impute 5 datasets, each of which subsequently underwent genetic matching in
MatchIt against a set of pretreatment covariates. Each of the imputed, matched datasets is to undergo regression separately; the analysis results are to be combined into a
mira object and pooled using the appropriate
I was going to report odds ratios from a
glm log regression of the outcome of interest against the binary treatment variable and covariates. It seems as though people commonly report treatment effects (Average Treatment Effect on the Treated, or Average Treatment Effect). The
MatchIt documentation describes how to use the
Zelig package to compute treatment effects, but I'm running into a couple problems.
For one, I'm not able to deal with multiply imputed data in
coef() methods, but for whatever reason
mice::pool() is unable to utilize them (I think
zelig names them
get_vcov(), so I think the naming may be an issue).
Zelig itself is able to take in a
mi object, and has a function
to_zelig_mi() for rolling multiple dataframes into an
mi object, but it will not accept my data. My matched datasets vary in their weighting and don't sum to the same size control group, and
Zelig doesn't seem to like that the weights vectors aren't the same length.
However, even if I could get
Zelig to work with my data, I don't know how to interpret the output regarding the ATT. This is what I am given when using
Zelig to calculate ATT for one of the imputed datasets.
> z.out <- zelig(outcome ~ cov1 + cov2 + cov3, + data = match.data(gen_match_1, "control"), + weights="weights", model = "logit") Noninteger weights were set, but the model in Zelig is only able to use integer valued weights. A bootstrapped version of the dataset was constructed using the weights as sample probabilities. > x.out <- setx(z.out, data = match.data(gen_match_1, "treat"), cond = TRUE) > s.out <- sim(z.out, x = x.out) > summary(s.out) sim x : ----- ev mean sd 50% 2.5% 97.5% [1,] 0.470119 0.1370024 0.4651871 0.2140349 0.731371 pv 0 1 [1,] 0.533 0.467
If I understand correctly, the second matrix
pv is for "predicted values", and [1,1] is the predicted value for the Treated group with receipt of treatment, whereas [1,0] is the Treated group had they not received the treatment, and the difference is the treatment effect? If this was a least-squares regression, I would have an idea of how to interpret that, but I'm not sure what to make of that given that this is a logit model.
Any help with regards to how to compute the ATT for multiply imputed data that is subject to matching and subsequent analysis (working with 5 different analysis objects), as well as how to interpret an ATT in this case would be highly appreciated. Thanks!