# Estimating ATET using propensity score

I have couple of questions. To give short background, I am trying to estimate ATET based on stratified matching. First I used logit model to estimated propensity score of being treated by covariables.

m_ps <- glm(train ~ age + agesq + re74 + re75 + nodegree + black + hisp,
family = binomial(link="logit"), data = training)


It returned:

summary(m_ps)

Call:
glm(formula = train ~ age + agesq + re74 + re75 + nodegree +
black + hisp, family = binomial(link = "logit"), data = training)

Deviance Residuals:
Min      1Q  Median      3Q     Max
-1.447  -0.986  -0.938   1.314   1.687

Coefficients:
Estimate   Std. Error z value Pr(>|z|)
(Intercept)  0.242071771  1.289204253    0.19   0.8511
age          0.007623644  0.084283306    0.09   0.9279
agesq       -0.000000516  0.001382059    0.00   0.9997
re74        -0.030814939  0.025852631   -1.19   0.2333
re75         0.063935389  0.042606822    1.50   0.1335
nodegree    -0.708616484  0.243880013   -2.91   0.0037 **
black       -0.222076429  0.364532789   -0.61   0.5424
hisp        -0.801474756  0.504345088   -1.59   0.1120
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

(Dispersion parameter for binomial family taken to be 1)

Null deviance: 604.20  on 444  degrees of freedom
Residual deviance: 588.46  on 437  degrees of freedom
AIC: 604.5

Number of Fisher Scoring iterations: 4


Then I assigned propensity to each observation:

prs_df <- data.frame(pr_score = predict(m_ps, type = "response"),
train = m_ps$model$train)
head(prs_df)

1   0.3996     1
2   0.2496     1
3   0.5617     1
4   0.3815     1
5   0.3923     1
6   0.3726     1


My question is how can I estimate ATET based on stratified matching on propensity score (I am thinking of rounding propensity score to first digit as a stratification). And how can I check the covariate balance to check if the transformation of x to the propensity score retained all necessary information? And how can I Check the common support assumption using the propensity score itself?

My he outcome variable re78, real earnings in 1978. the covariate vector xi that contains real earnings in 1974, real earnings in 1975, age, age squared, whether completed high school (variable name: nodegree), and race dummies (one for black, one for Hispanic). I want to estimate effect of training on re78.

Thank you.

## 1 Answer

Typically, people do stratification on quantiles of the propensity score (e.g., the top 10%, then next 10%, etc.). Researchers should choose the number of strata based on which produces the best balance. Here is some R code to do the stratification for estimating the ATET:

nstrata <- 6
strata <- findInterval(prs_df$pr_score, quantile(prs_df$pr_score[training$train==1], (0:nstrata)/nstrata), all.inside = T)  You can also use the MatchIt package as so: m.out <- matchit(train ~ age + agesq + re74 + re75 + nodegree + black + hisp, data = training, method = "subclass", subclass = 6, distance = prs_df$pr_score)


and the subclasses will be in the m.out object.

To assess balance on subclassified data, use the cobalt package as so:

If you did subclassification manually (i.e., using the first code block), do the following:

bal.tab(train ~ age + agesq + re74 + re75 + nodegree +
black + hisp, subclass = strata, data = training,
method = "subclassification", disp.subclass = TRUE)


If you used MatchIt for the subclassification, do the following:

bal.tab(m.out, disp.subclass = TRUE)


The output is the standardized means differences (for continuous variables) and differences in proportion (for binary variables) in each subclass, followed by a summary averaging over the subclasses. If your mean differences are low, that's evidence you have achieved balance.

For common support, you can see using bal.tab() how many units are in each subclass. If there are too few of either treatment or control, you may not have common support. You can graphically examine common support using bal.plot() in cobalt:

bal.plot(prs_df, treat = training\$train, var.name = "pr_score")


All this is described in the documentation for cobalt.

• Thank you very much. But how can I get ATET based on stratified matching as well? – user5372470 Feb 25 '17 at 11:32