help plausexogsee also: ivregress

Title

plausexog -- Stata implementation of IV estimation under flexible (plausibly exogenous) conditions

Syntax

plausexog method depvar [varlist1]
(varlist2 =
varlist_iv) [if] [in] [weight]
[, options]

method

uci Union of confidence intervals

ltz Local to Zero approach

level(#) set confidence level; default is level(0.95)

vce(vcetype) vcetype may be unadjusted,
robust, or cluster clustvar

uci
gmin(numlist) Minimum gamma for plausibly exogneous variable(s)

gmax(numlist) Maximum gamma for plausibly exogneous variable(s)

grid(#) Specifies number of points (in [gmin, gmax]) at which to
calculate bounds; default is grid(2)

ltz
mu(#) Value specifying mean of prior for support of gamma assuming a normal distribution

omega(#) Value specifying variance of prior for support of gamma assuming a normal distribution

distribution(name, params) Allows for the specification of gammas with arbitrary distributions. Allowed distributaions are: normal, uniform, chi2, poisson, t, gamma, or special.
Numerical parameters associated with the distributions are specified as "params". As many parameters are required as plausibly exogenous variables and distribution moments. Further details are provided below.

seed(#) Sets the seed for simulation-based calculations when using a non-Gaussian prior for the LTZ option.
Only required when specifying the distribution option.

iterations(#) Determines the number of iterations for simulation-based calculations when using a non-Gaussian prior for the LTZ option.
Only required when specifying the distribution option; default is iterations(5000)

Graphing
graph(varname)

* graphmu(numlist) List of values of mu over which graph should be plotted

* graphomega(numlist) List of values of omega corresponding to each point on the graph

* graphdelta(numlist) List of values to characterise each distribution on the graph (x axis values). If symmetric distribution is assumed, delta=gamma

* Any other options documented in [G-3] twoway_options. Overrides default graph options (ie title, axis labels)

* These options must be specified only when graphing with the ltz option.

Description

plausexog implements "Plausibly Exogenous" estimation developed by Conley et
al. (2012). This allows for inference using instrumental variable estimation in
situations where the exclusion restriction need not hold precisely. A comprehensive
description of this method of inference is provided in
Conley et al (2012).

Briefly, consider a dependent variable y, a set of exogenous
variables X1, a set of endogenous variables X2 (together referred to as
X), and a set of instrumental variables Z. Standard IV estimation requires
that gamma=0 in the following equation:

y_i = X_i * Beta + Z_i * gamma + u_i (1)

However, using plausexog, the restriction that gamma=0 can be relaxed, and
replaced with the assumption that gamma is close to, but not necessarily equal to,
zero. This assumption about gamma can take a number of forms: either the support
of gamma can be assumed, or distributional assumptions about gamma can be made.
The first assumption is more conservative but generally will lead to wider bounds
on the estimated coefficients on X2.

The first of these methods is referred to as the union of confidence interval
approach (UCI) and the user need simply specify the maximum and minimum value which
gamma can take. These values can be either symmetrical or non-symmetrical around
zero. The second method: the local to zero (LTZ) approach requires the specification
of the distribution which descripes the prior belief about gamma. Once again this
can either be symmetrical around zero (for example by specifying a normal distribution
centred at zero, or non-symmetrical around zero (for example by specififying a uniform
U[0,G] distribution, where G is some scalar reflecting the maximum believed deviation
from zero).

Analytical bounds in the local to zero approach are based on an assumed normal distribution
for gamma. However, Conley et al. document that a simulation-based approach can be
used to calculate bounds for non-normal distributions of gamma in the LTZ approach.
plausexog has implemented this simulation-based approach for a number of
common distributions such as the uniform, Chi-squared, Poisson, or
Gamma distribution. Additionally, non-standard and empirical distributions for gamma
can be used when a sample from this distribution is passed to the command as a
variable. Instructions are available in the distribution option, and full
details of the simulation-based algorithm followed by plausexog are available
on page 265 of Conley et al. (2012).

plausexog can return results in various ways. By default it returns an output
(stored as a matrix) presenting upper and lower bounds (and point estimates where
appropriate), however it also can return scalars for the upper and lower bound on
each endogenous variable. Graphical results can also be automatically generated
which display confidence intervals and point estimates under various assumptions
about the support or distribution of gamma using the graphing commands.

Options

Method

uci use the union of confidence interval approach for estimation of bounds.
This requires the specification of a maximum and minimum prior for gamma: the
sign on the plausibly exogenous variable in the structural equation above.
The result then provides the union of all interval estimates of beta conditional
on a grid of all possible gamma values.

ltz use the local to zero approach to estimate. This requires specifying
a full prior distribution for gamma in the structural equation via a series of
distributional parameters.

General options

level(#); see
[R] estimation options.

UCI options

grid(#) specifies the number of grid points for gamma over which to estimate beta.
For example, if gmin is -x and gmax is +x then specifying grid(2) will result in two estimates
of beta: once at gamma=-x and once at gamma=x. Similarly, specifying 5 will result in
five estimates: at gamma=-x, gamma=-x/2, gamma=0, gamma=x/2 and gamma=x.

gmin(numlist) specifies the minimum prior for gamma believed to characterise the
degree that Z may diverge from true exogeneity (ie the smallest possible value that gamma
is believed to take in the first stage). One value should be specified for each potentially
exogenous variable included. If multiple Z variables are used and some are believed to be
exogenous then for these variables both gmin and gmax should take the value of 0.

gmax(numlist) specifies the maximum prior for gamma believed to characterise the
degree that Z may diverge from true exogeneity (ie the largest possible value that gamma
is believed to take in the first stage). One value should be specified for each potentially
exogenous variable included.

gmin and gmax do not have to be symmetrical around zero. Any value can be entered based
on the researcher's prior.

LTZ options

mu(#) the value for the researchers's prior for the mean of gamma in the structural
equation (1). This value refers to the mean when a Gaussian prior is imposed on gamma in
the LTZ approach, and results in an exact set of confidence intervals.

omega(#) the value describing the researcher's prior for the variance of gamma
in the structural equation (1). Along with the value specified in mu(#), this
describes the Gaussian prior over gamma to be used in calculating bounds on the
parameter of interest.

distribution(name, params) allows for non-Guassian priors for the distribution
of gamma. When using the distribution option, the mu and omega option do not need
to be specified. Bounds based on non-normal distributions for gamma are calculated
using the simulation-based algorithm described in Conley et al. page 265. Accepted
distributions names are: normal, uniform, chi2, poisson, t, gamma, and special.
When specifying any of the first six options, parameters must be specified along
with each of these distributions. For normal, parameters are the assumed mean and
standard deviation; for uniform, the parameters are the minimum and maximum; for
chi2 (Chi squared) it is the degrees of freedom; for Poisson it is the distribution
mean, for t it is the degrees of freedom; and for gamma it is the shape and scale
of the assumed distribution. For any assumed distribution of gamma which is not
contained in the previous list, special can be specified, and a variable can
be passed which contains analytical draws from this distribution. If more than
one plausibly exogenous variable is used, the relevant parameters must be specified
for each plausibly exogenous variable. Note that although a Gaussian prior is allowed
in this format, if a Gaussian prior is assumed it is preferable to use the mu(#)
and omega(#) options, as these give an exact, rather than approximate (simulated)
set of bounds.

seed(#) Sets the seed for simulation-based calculations when using a
non-Gaussian prior for the LTZ option. Setting the seed allows for bounds to be
replicated when using the simulation-based process described above.
Only required when specifying the distribution option.

iterations(#) Determines the number of iterations for simulation-based
calculations when using a non-Gaussian prior for the LTZ option. Only required
when specifying the distribution option; default is iterations(5000).
In Stata IC and Small Stata the number of iterations are limited by the maximum
matrix size of Stata (800 and 100 respectively). Given this, the distribution
option should be used with caution in these versions of Stata.

graphmu(numlist); see plausexog graphing

graphomega(numlist); see plausexog graphing

graphdelta(numlist); see plausexog graphing

Graphing

graph(varname) the name of the (plausibly exogneous) Z variable that the
user wishes to graph. In the UCI method, confidence intervals will be graphed,
while in the LTZ approach both confidence intervals and a point estimate will be
graphed over a range of gamma values.

graphmu(numlist) this option must be used with the LTZ model when a graph
is desired. This provides the values for a series of mu values (see mu() under LTZ options)
for each point desired on the graph. For example, if five points should be
plotted on the line graph then 5 separate values should be provided in graphmu().
See the examples below for an example of this syntax.

graphomega(numlist) this option must be used with the LTZ model when a graph is desired.
This provides the values for a series of omega values (see omega() under LTZ options) for each
point desired on the graph. Each graphomega values must correspond to the graphmu value
specified in graphmu()

graphdelta(numlist) this option must be used with the LTZ model when a graph is desired.
This provides a series of values which correspond to each point on the graph characterised by
graphmu and graphomega above. For example, if gamma is assumed normally distributed and the
x-axis should disply the variance at each point on the graph, then the variance corresponding
to each graphmu() and graphomega() should be listed in graphdelta(). See the
examples below for an example of this syntax.

* overrides the typical graphing options built-in to
plausexog. This allows for the inclusion of any graphing commands
permissable in Stata's line plots to be incorporated, including
added lines, added text,
changes to axes, alternative titles
and so forth. For example, to include a horizontal line at zero the following
syntax can be used: yline(0).

Examples

Setup

. webuse set http://www.damianclarke.net/data/

. webuse Conleyetal2012

. local xvar i2 i3 i4 i5 i6 i7 age age2 fsize hs smcol col marr twoearn db pira hown

Run union of confidence interval (UCI) estimation with Conley et al's REStat data

. plausexog uci net_tfa `xvar' (p401 = e401), gmin(-10000) gmax(10000) grid(2) level(.95) vce(robust)

Run local to zero (LTZ) estimation with Conley et al's REStat data

. plausexog ltz net_tfa `xvar' (p401 = e401), mu(0) omega(25000) level(.95) vce(robust)

Run same local to zero (LTZ) estimation using simulation-based method which works for arbitrary distributions (here normal with mean zero and standard deviation 5000)

. plausexog ltz net_tfa `xvar' (p401 = e401), distribution(normal, 0, 5000)

Run local to zero (LTZ) estimation and graph output as per Conley et al. (figure 2)

. plausexog ltz net_tfa `xvar' (p401 = e401), omega(25000) mu(0) level(.95) vce(robust) graph(p401) graphmu(1000 2000 3000 4000 5000) graphomega(333333.33 1333333.3 3000000 5333333.3 8333333.3) graphdelta(2000 4000 6000 8000 10000)

Saved results

plausexog saves the following in e():

Scalars

e(lb_endogname) Lower bound estimate for each (plausibly) instrumented variable

e(ub_endogname) Upper bound estimate for each (plausibly) instrumented variable

Matrices

e(b) Coefficient vector under plausible exogeneity

e(V) Variance-covariance matrix of the estimators under plausible exogeneity

References

Conley, T. G., Hansen, C. B., and Rossi, P. E. 2012. Plausibly Exogenous.
The Review of Economics and Statistics 94(1): 260-272.

Acknowledgements

The original plausibly exogenous code was written by Christian Hansen, Tim Conley and
Peter Rossi. I thank Christian Hansen for his very useful comments on this version of the code.

Also see

Online: [R] ivregress

Author

Damian Clarke, Department of Economics, Universidad de Santiago de Chile. damian.clarke@usach.cl