*! version 1.0 22june2021

ivbounds -- Instrumental variable method to bound treatment-effects estimates with potentially misreported and endogenous
program participation

Syntax

ivbounds depvar [indepvars] [if] [in], treat(varname_t) iv(varname_iv) strategy(#) [options]

required

Model
treat(varname_t) specify the name of the binary mismeasured treatment indicator

iv(varname_iv) specify the name of the binary or discrete instrumental variable

strategy(#) specify which partial identification strategy to use in estimation

Model
order(#) positive or negative ascending order in iv(varname_iv)

alpha(#) significance level of the confidence interval

lower(#) lower bound of the treatment misclassification probability

upper(#) upper bound of the treatment misclassification probability

strata(#) number of strata to discretise the propensity score when covariates are included in indepvars

seed(#) set random seed at the beginning of the program

nboot(#) number of bootstraps to compute the critical values when constructing confidence intervals

kn(#) number of partitions of outcome depvar

Survey
survey indicate that data are survey data and weights are specified in svyset

weights(#) indicate whether bootstrap weights have already been calculated

npsu(#) value of n(#) passed to the bsweights command

reps(#) number of bootstrap replications passed to the bsweights command

Reporting/Saving
nodisplay suppress the summary results table

saving(filename) specify where to save output results

replace replace results in current saving(filename)

Description

ivbounds provides an estimate of the bounds of the average causal effect for compliers (Imbens and Angrist, 1994) when both noncompliance and misreporting of treatment status are present.
The approach follows the estimation procedure developed in Tommasi and Zhang (2020).
When iv(varname_iv) is binary, the command estimates the bounds of the local average treatment effect (LATE).
When iv(varname_iv) is binary and covariates are included, the command estimates the bounds of the unconditional LATE (Frölich, 2007).
In both cases, the estimated bounds coincide with those in Ura (2018).
When iv(varname_iv) is discrete, the command estimates the bounds of the weighted average of LATEs (WLATE).
When iv(varname_iv) is discrete and covariates are included, the command estimates the bounds of the conditional WLATE.
In the latter case, the user must specify the number of strata to discretise the propensity score. The inference procedure follows
Dehejia and Wahba (1999) and Battistin and Sianesi (2011).
ivbounds assumes a binary treat(varname_t), a binary or discrete iv(varname_iv), and a continuous or discrete depvar.
The bounds can be improved if external information regarding the treatment misclassification probability in treat(varname_t) is available.

Required

treat(varname_t) specifies the name of the binary mismeasured treatment indicator. treat(varname_t) is required and the variable can only take value 0 and 1 for control and
treatment, respectively.

iv(varname_iv) specifies the name of the binary or discrete instrumental variable. iv(varname_iv) is required.

strategy(#) specifies which partial identification strategy to use. strategy(1) provides estimates of the bounds of the target parameter via the bounds of LATEs.
Prior information about the treatment misclassification probability is not required. strategy(2) provides estimates of the bounds of the target parameter via the bounds of the average treatment misclassification probabilities for compliers.
Prior information about the treatment misclassification probability is not required. strategy(1) and strategy(2) produce the same result if the instrument is binary.
strategy(3) provides estimates of the bounds of the target parameter exploiting external sources of information about the treatment misclassification
probability to further improve the bounds of the second strategy. The quality of the external information is an important identifying assumption and must be well justified in practice. strategy(#) is required.

Options

Model

order(#) specifies the order of values of the instrumental variable iv(varname_iv). In practice,
the user must specify whether, in population, the instrument positively or negatively affect the true
treatment variable, which can be obtained by economic theory or linear regression of the observed treatment on the instrument
(assuming the observed treatment is a good proxy for the true one). If the user specifies order(1), the ascending order holds
and hence the effect of iv(varname_iv) on the true treatment is assumed to be positive. If the user specifies order(0),
the descending order holds and hence the effect of iv(varname_iv) on the true treatment is assumed to be negative.
The order of instrumental variable is an important identifying assumption and must be well justified in practice. The default is order(1).

alpha(#) specifies the significance level of confidence interval for any specified strategy. For example, alpha(0.05) means the output is a (1 - 0.05)% = 95% confidence interval of the bound for the target parameter.
The default is alpha(0.05).

lower(#) specifies the lower bound of the treatment misclassification probability. For example, lower(0.80) implies that the parameter ξ ≥ 80%. Only available for strategy(3).

upper(#) specifies the upper bound of the treatment misclassification probability. For example, upper(0.80) implies that the parameter ξ ≤ 80%. Only available for strategy(3).

strata(#) specifies the number of strata to discretise the propensity score when covariates are included in the analysis. The inference procedure follows
Dehejia and Wahba (1999) and Battistin and Sianesi (2011). This option can only be specified in the presence of covariates indepvars. The default is strata(3).

seed(#) sets the initial value of the random-number seed used by the randomnumber functions.

nboot(#) specifies the number of bootstraps to compute the critical values when constructing confidence intervals. The default is nboot(500).

kn(#) specifies the number of partitions of outcome depvar. The default is kn(3).

Survey

survey indicates that data are survey data and that survey weights have been assigned with svyset.

weights(#) indicates whether bootstrap weights have already been calculated. The default is weights(0), which indicates that bootstrap weights
have not been calculated and will instead be calculated from within the ivbounds command via the program bsweights. The weights(#) option is intended
as a programming control to avoid replacing the estimates in ereturn at each iteration of the bootstrap. Should the user have prespecified bootstrap weights
available, the weights must be of the form bsw1 bsw2 ... bswN, where N denotes the number of bootstrap replications.

npsu(#) specifies the value of n(#) for the bsweights command. npsu(#) specifies how the number of primary sampling units per stratum are handled.
The default is npsu(-1), which indicates a bootstrap sample of size n_h-1 for all strata h (Kolenikov, 2010).

reps(#) specifies the value of reps(#) for the bsweights command. reps(#) specifies the number of bootstrap replications to be taken and the
number of weight variables to be generated. The default is reps(100).

Reporting/Saving

nodisplay suppresses the summary results table. Results are still stored in ereturn.

saving(filename) indicates the location in which to save the output.

replace indicates that the output in saving(filename) should replace any preexisting file in the same location.

Examples

Load the 401ksubs dataset

. bcuse 401ksubs, clear

ivbounds estimation under a default setting

. ivbounds nettfa, treat(p401k) iv(e401k) strategy(1) order(1)

ivbounds estimation including covariates

. ivbounds nettfa inc marr age agesq fsize, treat(p401k) iv(e401k) strategy(1) order(1)

ivbounds estimation with some variations

. ivbounds nettfa inc marr age agesq fsize, treat(p401k) iv(e401k) strategy(2) order(1) seed(123) alpha(0.01)

ivbounds estimation using strategy 3 and approximation on false negative probability. For example, in case the probability of
false negative is approximately 17% (wn=0.17), then one should set lower(max{0, 1-2*wn}) upper(1-wn)

. ivbounds nettfa inc marr age agesq fsize, treat(p401k) iv(e401k) strategy(3) strata(3) lower(0.66) upper(0.83)

ivbounds estimation using strategy 3 and approximation on false positive probability. For example, in case the probability of
false positive is approximately 10% (wp=0.10), then one should set lower(0) upper(1-2*wp)

. ivbounds nettfa inc marr age agesq fsize, treat(p401k) iv(e401k) strategy(3) strata(3) lower(0) upper(0.80)

ivbounds estimation using strategy 3 and bounds of false positive and false negative probabilities. For example, in case the
bounds are (0.1<=wn<=0.17 & wp=0.10), then one should set lower(1-0.1-0.17) upper(1-0.1-0.1)

. ivbounds nettfa inc marr age agesq fsize, treat(p401k) iv(e401k) strategy(3) strata(3) lower(0.73) upper(0.8)

ivbounds estimation using strategy 3 and approximations of false positive and false negative probabilities. For example, in case the
probabilities are wn=0.17 and wp=0.10, then one should set upper(1-wn-wp=0.73) lower(1-wn-wp=0.73)

. ivbounds nettfa inc marr age agesq fsize, treat(p401k) iv(e401k) strategy(3) strata(3) lower(0.73) upper(0.73)

Stored results

ivbounds stores the following in e():

Scalars

e(N) number of observations

e(strata) number of strata

e(strategy) partial identification strategy chosen

e(order) order specification

e(lower) lower bound of the treatment misclassification probability

e(upper) upper bound of the treatment misclassification probability

Macros

e(depvar) dependent variable

e(treat) mismeasured treatment variable

e(iv) instrumental variable

Matrices

e(bounds) estimated bounds of the LATE or WLATE

References

Battistin, E., and B. Sianesi. 2011. Misclassified treatment status and treatment effects: An application to returns to education in the United Kingdom. Review of Economics and Statistics, 93, 495-509.

Dehejia, R. H., and S. Wahba. 1999. Causal effects in nonexperimental studies: Reevaluating the evaluation of training programs. Journal of the American statistical Association, 94, 1053-1062.

Frölich, M., 2007. Nonparametric IV estimation of local average treatment effects with covariates. Journal of Econometrics, 139(1), 35-75.

Imbens, G. W., and J. D. Angrist. 1994. Identification and Estimation of Local Average Treatment Effects. Econometrica 62(2): 467-475.

Kolenikov, S. 2010. Resampling variance estimation for complex survey data. Stata Journal 10: 165-199.

Tommasi, D., and L. Zhang. 2020. Bounding Program Benefits When Participation Is Misreported. IZA Discussion Paper.

Ura, T. 2018. Heterogeneous treatment effects with mismeasured endogenous treatment. Quantitative Economics 9(3): 1335-1370.

Remarks

This command requires Stata 13.

This is a preliminary version which is currently being updated as we receive comments. Please feel free to share your comments, reports of bugs, and propositions for extensions to
denni.tommasi@monash.edu.

If you use this command in your work, please cite Tommasi and Zhang (2020).

Help: moremata, bsweights, bs4rw (if installed)

Authors

Andy Lin
Institute for Digital Research and Education
USA
alin@oit.ucla.edu

Denni Tommasi
Monash University
Australia
denni.tommasi@monash.edu

Lina Zhang
Monash University
Australia
lina.zhang@monash.edu