Econometrics · binary outcomes

LPM vs. Logit / Probit

An interactive walk-through — built around your exact setup: a binary outcome, a binary treatment, and dummy controls / fixed effects.

Jump to: Short answer The saturated-model result S-curve vs. line Heteroskedasticity Marginal effects What to actually do

Short answer for your case

When the outcome and all the regressors are binary, the usual reasons to prefer logit/probit mostly evaporate — and in the special-but-common case of a saturated dummy model, the LPM, logit, and probit return the exact same predicted probabilities. So for your design the choice is driven far more by interpretation and inference than by "which model is correct."

The textbook complaints about the LPM (predictions outside [0,1], wrong functional form, heteroskedasticity) are real in general, but each one is either harmless or easily fixed in a dummies-only setting. The sections below let you see exactly when each issue bites and when it doesn't.

1 · The result the thread missed: a saturated dummy model

All regressors binary + every interaction included → the model is saturated.

A model is saturated when it has one free parameter for every distinct combination of the regressors (i.e. every "cell"). With binary x₁ and x₂ that's four cells: (0,0), (0,1), (1,0), (1,1), and a saturated model is β₀ + β₁x₁ + β₂x₂ + β₃(x₁·x₂).

Here's the key fact: any model that fits a separate parameter per cell — LPM, logit, or probit — can do nothing but reproduce the observed proportion of 1's in each cell. There is no functional form left to disagree about. So the three models give identical fitted probabilities, all of them inside [0,1] by construction.

Drag the observed share of y=1 in each cell and watch all three models return the same fitted probability:

Cell (x₁, x₂)ObservedLPMLogitProbitAgree?
Takeaway: in a saturated dummy model the link function is irrelevant — every model just returns the cell means. No out-of-bounds predictions are possible, and the "S-curve vs. line" debate never starts. Verified by simulation (n = 4,000): with the interaction term included, LPM, logit and probit matched to 4 decimals in every cell.
The catch: most applied models are not saturated — people add dummies additively and drop the interactions (especially with many fixed effects, where full saturation is infeasible). The moment the model is unsaturated, the link function starts to matter again and the three models diverge. In a quick simulation, an additive-only fit pulled the cell predictions off the true proportions by 0.5–1.5 points, and the gap differed by model. The rest of this page shows why they diverge.

2 · S-curve vs. straight line (the [0,1] problem)

Away from the saturated case — e.g. with a continuous regressor, or dummies entered additively — the LPM models the probability as a straight line, while logit/probit push a linear index through a CDF so the fitted probability bends to stay inside [0,1]. The straight line has no such guardrail.

Logit (true S-curve) LPM (OLS line fit to it) where the line leaves [0,1]
The shaded red bands are ranges of x where the LPM predicts a probability below 0 or above 1 — impossible values. Push the curve toward the extremes and the line increasingly misfires; keep the action in the 10–90% band and the line tracks the S-curve closely.

3 · Heteroskedasticity is built in

For a binary outcome the variance is mechanically tied to the mean: Var(y | x) = p(x)·(1 − p(x)). Since the LPM lets p change with x, the error variance changes with x too — homoskedasticity is violated by construction. This doesn't bias the coefficients, but it makes the default OLS standard errors wrong.

Var(y|x) = p(1−p)
Variance is largest at p = 0.5 (a coin flip is the noisiest) and shrinks to zero as p approaches 0 or 1. Because it isn't flat, you must use heteroskedasticity-robust standard errors with an LPM. That's a one-line fix (vce(robust) / HC1), and it makes large-sample inference valid again.

4 · Constant vs. varying marginal effects

This is the most substantive difference. The LPM forces the effect of a regressor to be the same everywhere (the coefficient). Logit/probit let the marginal effect depend on where you are on the curve: ∂p/∂x = β₁·p(1−p) for logit — biggest near p = 0.5, vanishing near 0 or 1.

LPM marginal effect (constant) Logit marginal effect (varies with p)
Uses the same β₀, β₁ as section 2 — adjust those sliders and this updates. The logit's effect peaks where the population is most "undecided" and fades for groups that are already near-certain. If you believe a treatment should matter more for people in the middle than for those already at 5% or 95%, that curvature is a feature; if a constant effect is a fine approximation over your data's range, the LPM's single number is easier to report.

5 · So what should you actually do?

If your model is (or can be) saturated in dummies

It genuinely doesn't matter — all three give the same predicted probabilities. Use the LPM for the clean interpretation (coefficients = differences in probability), and report robust standard errors. This is exactly your described setup, so an LPM is a perfectly defensible default.

If it's unsaturated (additive dummies, many fixed effects)

The models can diverge. The practical guidance:

Pragmatic move: report the LPM as your headline (with robust SEs) and add a logit/probit average marginal effect as a robustness check. If the AMEs from logit/probit land close to the LPM coefficients — which they usually do when predicted probabilities sit mostly in the 20–80% range — you've shown the result isn't an artifact of functional form, and you keep the easy interpretation.