MatchBalance
function which checks if the results of this function have actually
achieved balance on a set of covariates. If one wants to do
propensity score matching, one should estimate the propensity model
before calling Match
, and then send Match
the propensity
scores to use. The GenMatch
function can be used to
automatically find balance by the use of a genetic search
algorithm which determines the optimal weight to give each covariate.
Match
provides principled standard errors when matching is done
with covariates or a known propensity score. Ties are handled in a
deterministic and coherent fashion.Match(Y=NULL, Tr, X, Z = X, V = rep(1, length(Y)), estimand = "ATT", M = 1,
BiasAdjust = FALSE, exact = NULL, caliper = NULL,
Weight = 1, Weight.matrix = NULL, weights = NULL,
Var.calc = 0, sample = FALSE, tolerance = 1e-05,
distance.tolerance = 1e-05, restrict=NULL,
match.out = NULL, version="standard")
Match
will rVar.calc
option,
which takes precedence.Z
matrix.X
. If a logical vector is provided, a logical value should
be providX
. The default value of
1 denotes that weights are equal to the inverse of the variances. 2
denotes the MahaX
---see
the Weight
option. This square matrix should have as many
columns as the number of columns of the X
Y
which
provides observations specific weights. If none are provided, equal
weights of 1 for each observations are assumed.Var.calc=0
which means that
homoscedasticity is assumed. For values of Var.calc > 0
,
robust variances are calculated using Var.calc
madistance.tolerance
are deemed to be equal to zero. This
option can be used to perform a type of optimal Match
. If this object is provided, then Match
will
use the matches found by the previous invocation of the function.
Hence, Match
will run faster. This is
uX
consists of either covariates or a known propensity score
because it takes into account the uncertainty of the matching
procedure. If an estimated propensity score is used, the
uncertainty involved in its estimation is not accounted for although the
uncertainty of the matching procedure itself still is.BiasAdjust
. If BiasAdjust
is not requested, this is the
same as est
.weights
. Note that the
standard error provided by se
takes into account the uncertainty
of the matching procedure while se.standard
does not. Neither
se
nor se.standard
take into account the uncertainty of
estimating a propensity score. se.standard
does
not take into account any BiasAdjust
. Summary of the naive
results can be requested by setting the full=TRUE
flag when
using the summary.Match
function on the object
returned by
Match
.Match
. Three datasets are included in this list: Y
,
Tr
and X
.index.control
can be used to recover the matched dataset produced by
Match
. For example, the X
matrix used by Match
can be recovered by
rbind(X[index.treated,],X[index.control,])
. The user should
generally just examine the output of mdata
.index.treated
can be used to recover the matched dataset produced by
Match
. For example, the X
matrix used by Match
can be recovered by
rbind(X[index.treated,],X[index.control,])
. The user should
generally just examine the output of mdata
.caliper
which was used.X
variables. This object has the same length as the number of
covariates in X
.exact
function argument.ndrops.matches
, takes into account observation specific
weights which the user may have provided via the weights
argument.MatchBalance
function which checks if the results of this
function have actually achieved balance. The results of this function
can be summarized by a call to the summary.Match
function. If one wants to do propensity score matching, one should estimate the
propensity model before calling Match
, and then place the
fitted values in the X
matrix---see the provided example.
The GenMatch
function can be used to automatically
find balance by the use of a genetic search algorithm which determines
the optimal weight to give each covariate. The object returned by
GenMatch
can be supplied to the Weight.matrix
option of Match
to obtain estimates.
The Matchby
function provides a wrapper for Match
which is much faster for large datasets when it can be used.
Three demos are included: GerberGreenImai
, DehejiaWahba
,
and AbadieImbens
. These can be run by calling the
demo
function such as by demo(DehejiaWahba)
. Sekhon, Jasjeet S. 2006. ``Alternative Balance Metrics for Bias
Reduction in Matching Methods for Causal Inference.'' Working Paper.
Abadie, Alberto and Guido Imbens. 2005.
``Large Sample Properties of Matching Estimators for Average
Treatment Effects.'' Econometrica 74(1): 235-267.
Diamond, Alexis and Jasjeet S. Sekhon. 2005. ``Genetic Matching for
Estimating Causal Effects: A General Multivariate Matching Method for
Achieving Balance in Observational Studies.'' Working Paper.
Imbens, Guido. 2004. Matching Software for Matlab and
Stata.
summary.Match
,
GenMatch
,
MatchBalance
,
Matchby
,
balanceMV
, balanceUV
,
qqstats
, ks.boot
,
GerberGreenImai
, lalonde
#
# Replication of Dehejia and Wahba psid3 model
#
# Dehejia, Rajeev and Sadek Wahba. 1999.``Causal Effects in Non-Experimental Studies: Re-Evaluating the
# Evaluation of Training Programs.''Journal of the American Statistical Association 94 (448): 1053-1062.
#
data(lalonde)
#
# Estimate the propensity model
#
glm1 <- glm(treat~age + I(age^2) + educ + I(educ^2) + black +
hisp + married + nodegr + re74 + I(re74^2) + re75 + I(re75^2) +
u74 + u75, family=binomial, data=lalonde)
#
#save data objects
#
X <- glm1$fitted
Y <- lalonde$re78
Tr <- lalonde$treat
#
# one-to-one matching with replacement (the "M=1" option).
# Estimating the treatment effect on the treated (the "estimand" option defaults to ATT).
#
rr <- Match(Y=Y, Tr=Tr, X=X, M=1);
summary(rr)
#
# Let's check for balance
# 'nboots' and 'nmc' are set to small values in the interest of speed.
# Please increase to at least 500 each for publication quality p-values.
mb <- MatchBalance(treat~age + I(age^2) + educ + I(educ^2) + black +
hisp + married + nodegr + re74 + I(re74^2) + re75 + I(re75^2) +
u74 + u75, data=lalonde, match.out=rr, nboots=10, nmc=10)
Run the code above in your browser using DataLab