Title

persuasio4ytz2lpr -- Conduct causal inference on the local persuasion rate
for binary outcomes y, binary treatments t and binary instruments z

Syntax

persuasio4ytz2lpr depvar treatvar instrvar [covariates] [if] [in] [, level(#) model(string) method(string) nboot(#) title(string)]

Options

option Description

level(#) Set confidence level; default is level(95)
model(string) Regression model when covariates are present
method(string) Inference method; default is method("normal")
nboot(#) Perform # bootstrap replications
title(string) Title

Description

persuasio4ytz2lpr conducts causal inference on causal inference on the local persuasion rate.

It is assumed that binary outcomes y, binary treatments t, and binary instruments z are observed.
This command is for the case when persuasive treatment (t) is observed,
using estimates of the local persuasion rate (LPR) via
this package's command lpr4ytz.

varlist should include depvar treatvar instrvar covariates in order.
Here, depvar is binary outcome (y), treatvar is binary treatment,
instrvar is binary instrument (z), and covariates (x) are optional.

There are two cases: (i) covariates are absent and (ii) covariates are present.

- Without x, the LPR is defined by

LPR = /.

The estimate and its standard error are obtained by the following procedure:

1. The numerator of the LPR is estimated by regressing y on z.

2. The denominator is estimated by regressing (1-y)*(1-t) on z.

3. The LPR is obtained as the ratio.

4. The standard error is computed via STATA command nlcom.

5. Then, a confidence interval for the LPR is obtained via the usual normal approximation.

- With x, the LPR is defined by

LPR = E[LPR_num(x]/E[LPR_den(x]

where

LPR_num(x) = Pr(y=1|z=1,x) - Pr(y=1|z=0,x)

and

LPR_den(x) = Pr[y=0,t=0|z=0,x] - Pr[y=0,t=0|z=1,x].

The estimate is obtained by the following procedure.

If model("no_interaction") is selected (default choice),

1. The numerator of the LPR is estimated by regressing y on z and x.

2. The denominator is estimated by regressing (1-y)*(1-t) on z and x.

3. The LPR is obtained as the ratio.

4. The standard error is computed via STATA command nlcom.

5. Then, a confidence interval for the LPR is obtained via the usual normal approximation.

Note that in this case, LPR(x) does not depend on x because of the linear regression model specification.

Alternatively, if model("interaction") is selected,

1. Pr(y=1|z,x) is estimated by regressing y on x given z = 0,1.

2. Pr[y=0,t=0|z,x] is estimated by regressing (1-y)*(1-t) on x given z = 0,1.

3. Pr(t=1|z,x) is estimated by regressing t on x given z = 0,1.

4. For each x in the estimation sample, both LPR_num(x) and LPR_den(x) are evaluated.

5. Then, the sample analog of LPR is constructed.

6. Finally, the bootstrap procedure is implemented via STATA command bootstrap.

Options

model(string) specifies a regression model of y on z and x.

This option is only relevant when x is present.
The default option is "no_interaction" between z and x.
When "interaction" is selected, full interactions between z and x are allowed.

level(#) sets confidence level; default is level(95).

method(string) refers the method for inference.

The default option is method("normal").
Since the LPR is point-identified, usual two-sided confidence intervals are produced.

1. When model("interaction") is chosen as an option, it needs to be set as method("bootstrap");
otherwise, the confidence interval will be missing.

nboot(#) chooses the number of bootstrap replications.

The default option is nboot(50).
It is only relevant when method("bootstrap") is selected.

title(string) specifies a title.

Remarks

It is recommended to use nboot(#) with # at least 1000.
A default choice of 50 is meant to check the code initially
because it may take a long time to run the bootstrap part.
The bootstrap confidence interval is based on percentile bootstrap.
Normality-based bootstrap confidence interval is not recommended
because bootstrap standard errors can be unreasonably large in applications.

Examples

We first call the dataset included in the package.

. use GKB_persuasio, clear

The first example conducts inference on the LPR without covariates, using normal approximation.

. persuasio4ytz2lpr voteddem_all readsome post, level(80) method("normal")

The second example conducts bootstrap inference on the LPR.

. persuasio4ytz2lpr voteddem_all readsome post, level(80) method("bootstrap") nboot(1000)

The third example conducts bootstrap inference on the LPR with a covariate, MZwave2, interacting with the instrument, post.

. persuasio4ytz2lpr voteddem_all readsome post MZwave2, level(80) model("interaction") method("bootstrap") nboot(1000)

Stored results

Matrices

e(lpr_est): (1*1 matrix) estimate of the local persuasion rate

e(lpr_ci): (1*2 matrix) confidence interval for the local persuasion rate in the form of [lb_ci, ub_ci]

Macros

e(cilevel): confidence level

e(inference_method): inference method: "normal" or "bootstrap"

Authors

Sung Jae Jun, Penn State University, <sjun@psu.edu>

Sokbae Lee, Columbia University, <sl3841@columbia.edu>

License

GPL-3

References

Sung Jae Jun and Sokbae Lee (2022),
Identifying the Effect of Persuasion,
arXiv:1812.02276 [econ.EM]

Version

0.2.1 20 November 2022