
Calculate Set Identification Bounds for Lewbel Estimator
Source:R/estimation.R
calculate_lewbel_bounds.Rd
Computes set identification bounds for the endogenous parameter under a relaxed covariance restriction. Optionally computes bootstrap standard errors for the bounds.
Usage
calculate_lewbel_bounds(
data,
tau,
compute_se = FALSE,
b_reps = .hetid_const("DEFAULT_BOOTSTRAP_REPS"),
df_adjust = "asymptotic"
)
Arguments
- data
Data.frame. Dataset containing Y1, Y2, Xk, Z variables.
- tau
Numeric. Relaxation parameter for covariance restriction \(0 \le \tau < 1\). When \(\tau = 0\), gives point identification.
- compute_se
Logical. Whether to compute bootstrap standard errors (default: FALSE).
- b_reps
Integer. Number of bootstrap replications if compute_se = TRUE (default: 100).
- df_adjust
Character. Method for degrees of freedom adjustment:
"asymptotic": No adjustment (default)
"finite": Finite sample adjustment using HC2 formula
Value
A list containing:
bounds: Numeric vector of length 2 with lower and upper bounds
se: Numeric vector of length 2 with bootstrap standard errors (if requested)
Details
Note: This parameter currently only affects the interpretation of bootstrap SEs, not the bounds calculation itself.
Under the relaxed assumption \(|\mathrm{Corr}(Z, \epsilon_1 \epsilon_2)| \le \tau\,|\mathrm{Corr}(Z, \epsilon_2^2)|\), the parameter \(\gamma_1\) is set-identified. The bounds are computed as the real roots of a quadratic equation in \(\gamma_1\).
References
Lewbel, A. (2012). Using heteroscedasticity to identify and estimate mismeasured and endogenous regressor models. Journal of Business & Economic Statistics, 30(1), 67-80. doi:10.1080/07350015.2012.643126
Examples
if (FALSE) { # \dontrun{
params <- list(
beta1_0 = 0.5, beta1_1 = 1.5, gamma1 = -0.8,
beta2_0 = 1.0, beta2_1 = -1.0,
alpha1 = -0.5, alpha2 = 1.0, delta_het = 1.2
)
# TODO: Update generate_lewbel_data call if its return columns change to
# snake_case
data <- generate_lewbel_data(1000, params)
# Point identification (tau = 0)
bounds_point <- calculate_lewbel_bounds(data, tau = 0)
# Set identification with bootstrap SE
bounds_set <- calculate_lewbel_bounds(
data,
tau = 0.2, compute_se = TRUE, b_reps = 100
)
} # }