~/projects/jive-instrumental-variables-movies
JIVE: Correcting Many-Instruments Bias in a Movie Box-Office Natural Experiment
Does a movie's opening-weekend ticket sales causally drive its total ticket sales, or does the naive correlation just reflect that both are driven by the same unobserved quality/demand? Opening sales is endogenous — correlated with unobserved quality — so a plain regression of total sales on opening sales conflates the causal effect with that confound.
Problem
Does a movie's opening-weekend ticket sales causally drive its total ticket sales, or does the naive correlation just reflect that both are driven by the same unobserved quality/demand? Opening sales is endogenous — correlated with unobserved quality — so a plain regression of total sales on opening sales conflates the causal effect with that confound.
Decision Supported
Which estimator's causal effect estimate to trust when the identification strategy relies on a large bank of weak/many instruments (here, weather conditions on a movie's opening weekend, used as an exogenous shifter of opening attendance) — since the standard fix, 2SLS, is itself biased when the instrument count is large relative to the sample size.
Dataset
1,671 movies, each with total ticket sales (the outcome), opening-weekend ticket sales (the endogenous regressor), and 52 weather-based instruments: opening-weekend snow and rain indicators, precipitation-timing percentile bins, and precipitation-probability bins, each recorded at two lag windows — a deliberately large instrument set to create a genuine many-instruments bias problem worth correcting.
Architecture
Four estimators built from scratch in NumPy/pandas: (1) OLS, (2) standard 2SLS using all 52 weather instruments, (3) JIVE1 and (4) JIVE2 (Angrist–Imbens–Krueger, 1999) — both jackknife estimators that compute each observation's first-stage fitted value leaving that observation out, removing the own-observation leverage term that biases standard 2SLS toward OLS when instruments are numerous. A companion script adds HC1-robust standard errors, t-stats, p-values, and 95% CIs to the same four estimators. A separate Double Post-Lasso script (Belloni–Chernozhukov–Hansen) selects relevant controls from the same 52 weather variables via two independent Lasso fits — on the outcome and on the treatment — before a post-selection OLS, an alternative selection-based way of handling the same high-dimensional-controls problem. A Random Forest regression (500 trees, 5-fold CV) is run as a deliberately non-causal predictive benchmark for contrast.
Baseline
OLS is the explicit naive baseline every other estimator is compared against, since it's the one most vulnerable to endogeneity bias if opening sales correlates with unobserved movie quality.
Evaluation Framework
Each IV estimator is fit on the full 1,671-movie sample and its coefficient on opening-weekend sales is compared directly against OLS and against the other estimators — a classic "does correcting for endogeneity move the estimate" comparison, rather than a predictive train/test evaluation, which wouldn't be meaningful for a causal parameter.
Results
The opening-weekend effect estimate shifts meaningfully across methods: OLS beta = 0.4712, standard 2SLS (all 52 instruments) beta = 0.5033, JIVE1 beta = 0.5819, JIVE2 beta = 0.5496. Both JIVE variants push the estimate well above standard 2SLS, which is itself only modestly above OLS — consistent with 2SLS being biased back toward the (endogenous) OLS estimate when the instrument count is large relative to the sample, and JIVE's jackknife correction removing that bias.
Error Analysis
Standard 2SLS moved the estimate only 0.032 away from OLS despite using 52 instruments, while JIVE1 moved it 0.111 away — a textbook signature of many-instruments bias: with many instruments, first-stage fit is partly mechanical overfitting, which pulls the second-stage IV estimate back toward OLS unless corrected. The gap between JIVE1 (0.582) and JIVE2 (0.550) is itself informative: the two use slightly different bias corrections (JIVE1 removes each observation's actual leverage, JIVE2 uses a uniform 1/N approximation), and their disagreement is a useful diagnostic for how much leverage varies across movies.
Deployment Considerations
This is a research/teaching exercise, not a deployed model — there's no production use case. Its value is methodological: demonstrating why a naive "2SLS with lots of instruments" fix isn't automatically a good fix, with a from-scratch (not black-box library) implementation of the jackknife correction.
Monitoring Approach
Not applicable — a one-time cross-sectional estimation on a fixed historical dataset, not a model that gets retrained or monitored over time.
Limitations
The robust-inference version (standard errors, t-stats, p-values, confidence intervals) could not be run in this environment (a required dependency wasn't installed), so statistical significance of the beta differences above is not directly confirmed here — only the point estimates were verified by re-running the core script.
The exclusion restriction — weather affects total sales only through opening-weekend attendance, not through any other channel — is assumed, not tested; if weather correlates with, say, regional marketing timing, the instruments could be invalid regardless of the many-instruments correction applied.
With 52 instruments and 1,671 observations, even the corrected JIVE estimates operate in a regime where finite-sample bias can remain nontrivial — the original method itself was designed around exactly this tradeoff, not a guarantee of removing it entirely.
The Double Post-Lasso and Random Forest scripts were reviewed but not executed (their dependencies weren't installed here), so their specific selected-controls list and predictive R² aren't included as verified numbers.