6.7 Conditional Parallel Trend Assumption

We have discussed the parallel trend assumption already. This is the unconditional parallel trend assumption, which assumes that the parallel trend assumption holds without accounting for any covariates.

One way to bolster the credibility of the parallel trend assumption is to claim that it only holds conditional on covariates. For example, since the decision of whether to expand Medicaid was under the states’ discretion, we may want to condition on a state’s partisan leaning, i.e. Democrat versus Republican Governor.

In the canonical model, the parallel trend assumption can be modified to obtain the conditional parallel trend assumption. This means we are assuming that the parallel trend only exists once conditioned on covariates. This is given as below.

\[\begin{equation} E(Y^0(1) - Y^0(0)| D = 1, X) = E(Y^0(1) - Y^0(0)| D = 0, X) \tag{6.3} \end{equation}\]

The conditional parallel trend is easy to understand when covariates required are small in number and if covariates are discrete. For example, say, in the case of ACA-Medicaid example, the parallel trend assumption holds once accounting for state’s partisan leaning in 2013 (pre-treatment). What does this mean exactly? This would be equivalent to running two different DiD estimates: one for the group with Democrat Governor and the other for the Republican governor. This gives two DiD estimates. Next, we average these two estimates to get the DiD estimate for the whole sample.

GovernorisDemocrat1Yes is a variable that indicates whether a state’s governor is of the Democrat party.

# we need to first get the state partisan data for 2013 and merge with the main data
# note that it is recommended to conduct all data cleaning in separate files. 
# we are doing this in a fly, so I break that rule. 
dat_gov2013  <- dat_canonical  %>% 
                    filter(year == 2013)  %>% 
                    dplyr::select(c(countyfips, GovernorisDemocrat1Yes))  %>% 
                    rename(GovernorisDemocrat1Yes2013 = GovernorisDemocrat1Yes)

dat_canonical  <- dat_canonical  %>% 
                    merge(dat_gov2013, by = c("countyfips"), all.x = TRUE)

# get the first and second differences for states with democrat governor in 2013
first_diff_dem  <- mean(dat_canonical$sahieunins138[dat_canonical$expand == 1 & 
                    dat_canonical$year == 2014 & 
                    dat_canonical$GovernorisDemocrat1Yes2013 == 1], na.rm = T)  - 
                    mean(dat_canonical$sahieunins138[dat_canonical$expand == 0 & 
                    dat_canonical$year == 2014 &
                    dat_canonical$GovernorisDemocrat1Yes2013 == 1], na.rm = T)

second_diff_dem  <- mean(dat_canonical$sahieunins138[dat_canonical$expand == 1 & 
                    dat_canonical$year == 2013 & 
                    dat_canonical$GovernorisDemocrat1Yes2013 == 1], na.rm = T) - 
                    mean(dat_canonical$sahieunins138[dat_canonical$expand == 0 & 
                    dat_canonical$year == 2013 &
                    dat_canonical$GovernorisDemocrat1Yes2013 == 1], na.rm = T)

# get the first and second differences for the state with the republican state in 2013
first_diff_rep  <- mean(dat_canonical$sahieunins138[dat_canonical$expand == 1 & 
                    dat_canonical$year == 2014 & 
                    dat_canonical$GovernorisDemocrat1Yes2013 == 0], na.rm = T)  - 
                    mean(dat_canonical$sahieunins138[dat_canonical$expand == 0 & 
                    dat_canonical$year == 2014 &
                    dat_canonical$GovernorisDemocrat1Yes2013 == 0], na.rm = T)

second_diff_rep  <- mean(dat_canonical$sahieunins138[dat_canonical$expand == 1 & 
                    dat_canonical$year == 2013 & 
                    dat_canonical$GovernorisDemocrat1Yes2013 == 0], na.rm = T)   - 
                    mean(dat_canonical$sahieunins138[dat_canonical$expand == 0 & 
                    dat_canonical$year == 2013 &
                    dat_canonical$GovernorisDemocrat1Yes2013 == 0], na.rm = T)

did_dem  <- first_diff_dem - second_diff_dem

did_rep  <- first_diff_rep - second_diff_rep

# fraction with Democrat Governor
gov_dem  <- mean(dat_canonical$GovernorisDemocrat1Yes2013, na.rm = T) 

# weighted average
did_estimate  <- (gov_dem * did_dem) + (1 - gov_dem) * did_rep

# conditional DiD estimate
cat("did estimate (controling for state partisan leaning in 2013) = \n", did_estimate)
## did estimate (controling for state partisan leaning in 2013) = 
##  -5.091879
# unconditional DiD estimate (note: we already have this from previous estimation)
cat("did estimate (no controls) = \n", naive - naive_pre)
## did estimate (no controls) = 
##  -5.813426

What we observe is that DiD estimate that accounts for a state’s political leaning in 2013 is slightly lower than the unconditional version. The difference is not too large in this case. However, I’d still be inclined to trust the conditional DiD estimate.

Why so?

This is because the condition forces comparison across the treatment vs. control units with the same political leaning in 2013. For example, treated units under the Democrat regime are compared to control units also under the Democrat regime. The same goes with treated and control units falling under the Republican Governor in 2013. Since, ACA was highly politicized and also since Democrat vs. Republican states are quite different in socio-economic factors, we need to make sure that we are comparing units with similar political leaning. In other words, we are conducting relatively more similar comparison.