Hi All,

I’ve been using the code in the draft book chapter on Encouragement Designs to teach me about how to represent a simple Encouragement design with one-way non-compliance. I would like to compare the Intent to Treat Effect (ITT) with the Complier Average Causal Effect (CACE). When the exclusion restriction and no-defiers are true, I would have assumed no bias in the estimate of the ITT. I also would have assumed no bias in the estimate of the ITT even when the exclusion restriction was violated.

Yet, below when `direct_effect_of_encouragement`

is non-zero, I see bias that increases in the direct effect of Z on Y. So, I suspect I’m using DeclareDesign wrong. I’m not surprised to see increasing bias in the estimation of the CACE below, but I am surprised to see it in the estimation of the ITT.

Am I representing the estimand wrong? Or the potential outcomes incorrectly? Would love to hear any thoughts or help.

```
> res %>% select(direct_effect_of_encouragement,'Estimand Label','Estimator Label','Term','Bias','SD Estimate','Mean Estimand')
direct_effect_of_encouragement Estimand Label Estimator Label Term Bias SD Estimate Mean Estimand
1 0.000 CACE 2SLS D -0.01 0.11 0.50
2 0.000 ITT OLS Z -0.03 0.09 0.43
3 0.075 CACE 2SLS D 0.09 0.12 0.50
4 0.075 ITT OLS Z 0.05 0.09 0.43
5 0.150 CACE 2SLS D 0.19 0.11 0.50
6 0.150 ITT OLS Z 0.12 0.09 0.42
7 0.225 CACE 2SLS D 0.28 0.12 0.50
8 0.225 ITT OLS Z 0.20 0.09 0.43
9 0.300 CACE 2SLS D 0.38 0.11 0.50
10 0.300 ITT OLS Z 0.28 0.09 0.42
```

Here is the hunk of the code from that book chapter for reference with me adding what I think would be the ITT estimand and estimator.

```
types <- c("Always-Taker", "Never-Taker", "Complier", "Defier")
direct_effect_of_encouragement <- 0.0
proportion_defiers <- 0.0
design <-
declare_population(
N = 500,
type = sample( types, N, replace = TRUE,
prob = c(0.1, 0.1, 0.8 - proportion_defiers, proportion_defiers)
),
noise = rnorm(N)
) +
declare_potential_outcomes(
D ~ case_when(
Z == 0 & type %in% c("Never-Taker", "Complier") ~ 0,
Z == 1 & type %in% c("Never-Taker", "Defier") ~ 0,
Z == 0 & type %in% c("Always-Taker", "Defier") ~ 1,
Z == 1 & type %in% c("Always-Taker", "Complier") ~ 1
)
) +
declare_potential_outcomes(
Y ~ 0.5 * (type == "Complier") * D +
0.25 * (type == "Always-Taker") * D +
0.75 * (type == "Defier") * D +
direct_effect_of_encouragement * Z + noise,
assignment_variables = c("D", "Z")
) +
declare_estimand(CACE = mean((Y_D_1_Z_1 + Y_D_1_Z_0) / 2 -
(Y_D_0_Z_1 + Y_D_0_Z_0) / 2),
subset = type == "Complier") +
declare_estimand(ITT = mean((Y_D_1_Z_1 + Y_D_1_Z_0) / 2 -
(Y_D_0_Z_1 + Y_D_0_Z_0) / 2)) +
declare_assignment(prob = 0.5) +
declare_reveal(D, assignment_variable = "Z") +
declare_reveal(Y, assignment_variables = c("D", "Z")) +
declare_estimator(Y ~ D | Z, model = iv_robust, estimand = "CACE",label='2SLS') +
declare_estimator(Y ~ Z, model=lm_robust, estimand = "ITT",label='OLS')
designs <- redesign(
design,
proportion_defiers = 0,
direct_effect_of_encouragement = seq(0, 0.3, length.out = 5)
)
plan(multiprocess,workers=8)
bookdesigns_diag <- diagnose_design(designs, bootstrap_sims=0,sims = 1000)
plan(sequential)
res <- reshape_diagnosis(bookdesigns_diag)
res %>% select(direct_effect_of_encouragement,'Estimand Label','Estimator Label','Term','Bias','SD Estimate','Mean Estimand')
```