Econometrics & Omitted-Variable Sensitivity
Cinelli-Hazlett Partial R-Squared and Robustness Value (RV) Formula
Convert any regression t-statistic and degrees of freedom into partial R^2_{Y~D|X} and Cinelli & Hazlett’s (2020) omitted-variable Robustness Value RV_q.
Compute omitted-variable sensitivity directly from published t-statistics and df
Even when you only have a published regression table reporting a treatment slope’s t-statistic t_obs and residual degrees of freedom df, Cinelli and Hazlett (2020) showed that you can compute exact omitted-variable sensitivity metrics! First, partial R^2 of treatment D with outcome Y given controls X is R^2_{Y~D|X} = t_obs^2 / (t_obs^2 + df), with Cohen’s partial f = |t_obs| / SQRT(df).
Second, to reduce the point estimate by fraction q_red = 1 (all the way to zero, or to bring |t| down to critical threshold t_crit = 1.96 via f_q = MAX(0, (|t_obs| - t_crit) / SQRT(df))), an unobserved confounder Z must explain at least Robustness Value RV_q = 0.5 * (SQRT(f_q^4 + 4 * f_q^2) - f_q^2) of the residual variance of BOTH treatment D and outcome Y! Verify by hand for t_obs = 4.00 (B2) and df = 84 (B3): partial R^2 = 16 / (16 + 84) = 0.1600 (exact!), f_1 = 4 / SQRT(84) -> f_1^2 = 16 / 84 = 4 / 21, and point-zero RV_1 = 0.5 * (SQRT(16/441 + 16/21) - 4/21) = 0.3515 (35.15% residual variance in BOTH D and Y!).
| Cinelli-Hazlett Metric (t=4, df=84) | Exact Algebraic Formula | Sample Output |
|---|---|---|
| Partial R^2_{Y~D|X} (Extreme Bound) | t_obs^2 / (t_obs^2 + df) = 16 / 100 | 0.1600 (16.00%) |
| Point-Zero Robustness Value RV_{q=1} | 0.5 * (SQRT(f^4 + 4*f^2) - f^2) | 0.3515 (35.15% in D & Y) |
| Adjusted f_{alpha=0.05} vs Hurdle 1.96 | MAX(0, (|t_obs| - 1.96) / SQRT(df)) | 0.2226 |
| Alpha-0.05 Significance RV_{q,a=0.05} | 0.5 * (SQRT(f_a^4 + 4*f_a^2) - f_a^2) | 0.1992 (19.92% to lose p<0.05) |
Exact Partial R-Squared R^2_{Y~D|X} from t-Statistic Formula
Notice that R^2_{Y~D|X} = t^2 / (t^2 + df) simultaneously serves as Cinelli and Hazlett’s "extreme scenario" bound if an omitted confounder explained 100% of remaining outcome variance!
=IF(B3 < 1, "Invalid Degrees of Freedom", ROUND((B2^2) / ((B2^2) + B3), 4))Robustness Value RV_q (Point-Zero & Critical-t Significance) Formula
Pass t_crit = 0 to compute point-zero RV_{q=1}, or pass t_crit = 1.96 in B4 to compute RV_{q=1, alpha=0.05}. If |t_obs| <= t_crit initially (test setting B2 = 1.50 with B4 = 1.96), f_q = 0 and RV_alpha = 0 cleanly because statistical significance is already absent!
=LET(t_val, ABS(B2), df_v, B3, t_cr, B4, IF(OR(df_v < 1, t_cr < 0), "Invalid Degrees of Freedom", IF(t_val <= t_cr, 0, LET(fq_sq, ((t_val - t_cr)^2) / df_v, ROUND(0.5 * (SQRT((fq_sq^2) + 4 * fq_sq) - fq_sq), 4)))))Try the example
Use the original values or change them to test your understanding.