Computes confidence intervals and p-values in an instrumental variables
regression in which the instrument has a shift-share structure, as in Bartik
(1991). Several different inference methods can computed, as specified by
method.
ivreg_ss(
formula,
X,
data,
W,
subset,
weights,
method,
beta0 = 0,
alpha = 0.05,
region_cvar = NULL,
sector_cvar = NULL
)An object of class "formula" (or one that can be
coerced to that class) of the form outcome ~ controls |
endogenous_regressor. For a regression with no controls (only an
intercept), it takes the form outcome ~ 1 | endogenous_regressor
Shift-share vector with length N of sectoral shocks,
aggregated to regional level using the share matrix W. That is,
each element of X corresponds to a region.
An optional data frame, list or environment (or object coercible
by as.data.frame to a data frame) containing the outcome and
running variables in the model. If not found in data, the
variables are taken from environment(formula), typically the
environment from which the function is called. Each row in the data frame
corresponds to a region.
A matrix of sector shares, so that W[i, s] corresponds to
share of sector s in region i. The ordering of the regions
must coincide with that in the other inputs, such as X. The
ordering of the sectors in the columns of W is irrelevant but the
identity of the sectors in must coincide with those used to construct
X.
An optional vector specifying a subset of observations to be used in the fitting process.
An optional vector of weights to be used in the fitting
process. Should be NULL or a numeric vector, with each row
corresponding to a region. If non-NULL, for computing the first
stage and the reduced form, weighted least squares is used with weights
weights (that is, we minimize sum(weights*residuals^2));
otherwise ordinary least squares is used.
Vector specifying which inference methods to use. The vector elements have to be one or more of the following strings:
"homosk"Assume i.i.d. homoskedastic errors
"ehw"Eicker-Huber-White standard errors
"region_cluster"Standard errors clustered at regional level
"akm"Ad<U+00E3>o-Koles<U+00E1>r-Morales
"akm0"Ad<U+00E3>o-Koles<U+00E1>r-Morales with null imposed. Note the reported standard error for this method corresponds to the normalized standard error, given by the length of the confidence interval divided by \(2z_{1-\alpha/2}\)
"all"All of the methods above
null that is tested (only affects reported p-values)
Determines confidence level of reported confidence intervals,
which will have coverage 1-alpha.
A vector with length N of cluster variables, for
method "cluster_region". If the vector 1:N is used,
clustering is effectively equivalent to ehw
A vector with length S of cluster variables, if
sectors are to be clustered, for methods "akm" and "akm0".
If the vector 1:S is used, this is equivalent to not clustering.
Returns an object of class "SSResults" containing the
estimation and inference results. The print function can be used
to print a summary of the results. The object is a list with at least the
following components:
Point estimate of the effect of interest \(\beta\)
A vector of standard errors and a vector of p-values of the null
\(H_{0}\colon \beta = \beta_{0}\) for the inference
methods in method, with \(\beta_{0}\) specified by the
argument beta0. For the method "akm0", the standard error
corresponds to the effective standard error (length of the confidence
interval divided by 2*stats::qnorm(1-alpha/2))
Upper and lower endpoints of the confidence interval for
the effect of interest \(\beta\), for each of the methods in
method
Bartik, Timothy J., Who Benefits from State and Local Economic Development Policies?, Kalamazoo, MI: W.E. Upjohn Institute for Employment Research, 1991.
Ad<U+00E3>o, Rodrigo, Koles<U+00E1>r, Michal, and Morales, Eduardo, "Shift-Share Designs: Theory and Inference", Quarterly Journal of Economics 2019, 134 (4), 1949-2010. 10.1093/qje/qjz025.
# NOT RUN {
## Use ADH data from Autor, Dorn, and Hanson (2013)
ivreg_ss(d_sh_empl ~ 1 | shock, X=IV, data=ADH$reg, W=ADH$W,
method=c("ehw", "akm", "akm0"))
# }
Run the code above in your browser using DataLab