# Size of Complier Group (Instrumental Variables) - Mostly Harmless vs. Abadie Kappa

Focusing solely on the case with a binary endogenous explanatory variable $$D$$ and binary instrument $$Z$$ and control variables $$X$$, Angrist & Pischke 2009 ("Mostly Harmless Econometrics") show that the size of the complier group can be given by the Wald first stage

$$P[D_{1i}>D_{0i}]=E[D_i|Z_i=1]-E[D_i|Z_i=0]$$

However, it is unclear to me whether this holds true once we add the covariates to the first stage. In contrast to the above, Abadie 2003 (top of page 237) shows that the size of the complier group is given by

$$P[D_{1i}>D_{0i}]=E[\kappa_i] \\ \textrm{where} \quad \kappa_i = 1 - \frac{D_i(1-Z_i)}{1-P(Z_i=1|X_i)} - \frac{(1-D_i)Z_i}{P(Z_i=1|X_i)}$$

In simulations, it's easy to show that when X is independent (or is an intercept only) these two measures are equivalent. Otherwise, they seem to differ. In at least one paper (Maestas, Mullen, Strand 2013), the authors claim that the first stage coefficient with controls gives the number of compliers, but the two measures above also differ from the coefficient on $$Z$$ in the full first stage, i.e. $$D_i=\alpha + X_i'\beta + Z_i'\gamma + \varepsilon_i$$. The simulation results are attached at the bottom of this post.

I am unsure about which of these gives the correct measure of the complier group. I feel similarly unsure about the intuition for the size of the complier group with controls. It seems that the degree to which covariates predict $$Z$$ can dramatically affect the size of the complier group, but any intuition about why this makes sense, what this means for external validity, etc. is greatly appreciated.

The simulation is in the following R script. Please do point out if these differences are due to errors in implementation.

### simulate the data generating process
set.seed(2839)
n <- 20000

endo <- rnorm(n)
endo2 <- rnorm(n)
z <- as.integer(endo2 + rnorm(n)>0)
d <- endo2 + endo + z + rnorm(n)
d <- as.integer(d > median(d))
x <- rnorm(n)+endo2
# x <- rep(1,n) # can confirm that if x is just an intercept these are equivalent
# x <- rnorm(n) # similarly if x is independent these are equivalent

y <- 1.5+ 2*d - 4*x + 1.5*endo + rnorm(n)

## make sure you've simulated estimable model coefficients
mod_1st <- lm(d ~ z + x)
dhat <- fitted(mod_1st)
mod_2nd <- lm(y ~ dhat + x)

mod_ols <- lm(y ~ d + x)

### wald 1st stage implied size of complier group
mean(d[z==1]) - mean(d[z==0]) # roughly .49

## kappa version
zmodel <- fitted(lm(z~x))
kappa <-
1 -
(d * (1-z)) / (1 - zmodel) -
((1-d)*z)/zmodel
mean(kappa) # roughly .65


In the same paper, Abadie shows (Lemma 2.1.) that $$\mathbb{P}(D_1>D_0|X) = \mathbb{E}[D|Z=1, X] - \mathbb{E}[D|Z=0, X]$$ so the conditional variant of this holds even if you add covariates.

• Thanks so much for this additional detail. Can you explain more about how this detail could rationalize the fact that the Wald first stage differs from the (unconditional) expectation of Kappa in the example? And why the first stage coefficient controlling for X is different from both? I guess ultimately I still don't know which of these would be an appropriate measure of the unconditional "size of the complier population." I guess would also be interested to understand how this relates to accurately measuring the size of the complier population conditional on X. Thanks again!
– jrm
Apr 27, 2022 at 19:25

In the script you write $$X$$ and $$Z$$ as jointly determined.

This is equivalent to there being selection into instrument on endo2 in your script, confounding the estimates of the estimation.

The LATE framework requires the instrument, $$Z$$, be independently assigned to unit (or conditionally so). This is violated in your script by determining both $$Z$$ and $$X$$ by endo2.

To see this, note that the $$\kappa$$-weight gets the average rate of compliance correct if you estimate $$\Pr(Z_i = 1)$$ without conditioning on $$X_i$$:

### simulate the data generating process
set.seed(2839)
n <- 20000
endo <- rnorm(n)
endo2 <- rnorm(n)
z <- as.integer(endo2 + rnorm(n)>0)
d <- endo2 + endo + z + rnorm(n)
d <- as.integer(d > median(d))
x <- rnorm(n)+endo2
y <- 1.5+ 2*d - 4*x + 1.5*endo + rnorm(n)
### wald 1st stage implied size of complier group
mean(d[z==1]) - mean(d[z==0]) # roughly .49
zmodel <- fitted(lm(z~1)) # This is where the change is, Z ~ 1
kappa <- (1 -
(d * (1-z)) / (1 - zmodel) -
((1-d)*z)/zmodel)
mean(kappa) # roughly .49


Though, if you're interested in further practical details on the Abadie (2003) weights approach, new research in the area is fairly interesting.

• Thanks for your response! Is it true that LATE requires $Z$ to be independent of all observed covariates $X$ in the model? The 2SLS estimates in the original code do recover the correct coefficient after all. If independence of $Z$ and $X$ were required, what would be the point of including $P(Z_i=1|X_i)$ in the calculation of $\kappa$ (as opposed to $P(Z_i=1)$)?
– jrm
Apr 13, 2023 at 14:34
• I also understand that the Wald first stage coincides with the $\kappa$ weights when conditioning on $X$ is omitted. However, I am most interested in understanding the rate of compliance when conditioning on $X_i$. Could you provide more intuition (or simulation) on that front?
– jrm
Apr 13, 2023 at 14:38