Skip to contents

For \(Y = 1\{V + X'\beta + \varepsilon > 0\}\) with V the SPECIAL REGRESSOR – continuously distributed with large support, entering additively, coefficient known to be 1 – write \(V = S'b + U\) with \(U\) independent of \((S, \varepsilon)\) and construct

Usage

morie_lewbel_binary(
  x,
  y,
  z,
  bandwidth = NULL,
  instruments = NULL,
  density = "nonparametric"
)

Arguments

x

numeric matrix of regressors excluding V; a constant is added when absent.

y

binary 0/1 response.

z

the special regressor V.

bandwidth

bandwidth for the density of U; Silverman's rule when NULL. Ignored when density = "normal".

instruments

instruments for endogenous columns of x; least squares is used when NULL.

density

"nonparametric" or "normal" (Estimator 1, step 2).

Value

list: beta, se, coefficient_on_V, min_density, max_weight, root_n_consistent, heteroskedasticity_allowed, identifies_choice_probabilities, bandwidth, endogenous, n, d, method.

Details

$$T = [Y - 1\{V \ge 0\}] / f(U).$$

Then \(T = X'\beta + \tilde\varepsilon\) with \(E(Z\tilde\varepsilon) = 0\), so beta follows from a LINEAR regression of T on X: least squares when X is exogenous, two-stage least squares on instruments when it is not. A discrete-choice problem collapses to a linear one.

Why the chapter reaches for this: maximum score and smoothed maximum score are consistent under weak assumptions but do not identify \(P(Y = 1|X = x)\) and converge more slowly than \(n^{-1/2}\). This estimator buys back both, at the price of needing a special regressor, and still allows heteroskedasticity of unknown form.

The dividing density is the fragility: \(\hat f(U)\) sits in a DENOMINATOR, so tail observations carry enormous weight – the source itself notes outliers may need discarding. The smallest fitted density and the largest weight are returned rather than left implicit. Mirrors morie.fn.hrzlew.

References

Horowitz, Sec. 4.5; Dong and Lewbel, Corollary 1 and Estimator 1. The indicator is \(1\{V \ge 0\}\) – at least one secondary description states \(1\{V < 0\}\), which changes the estimand.

Examples

set.seed(1)
n <- 500
x <- cbind(1, rnorm(n))
v <- rnorm(n) * 6
y <- as.numeric(v + x %*% c(0, 1) + rnorm(n) > 0)
morie_lewbel_binary(x, y, v)$beta
#> [1] -0.0526974  0.8356821