Estimation.MinimaxATE.VaryingCenterCase2
Second, propensity-dominant varying-center MinimaxATE construction: perturbed sample laws, positivity algebra, class membership, χ² overlap, and lower-bound gap.
Construction 9 core · 4 supporting This file defines the second cell-varying perturbation family for the structure-agnostic average treatment effect lower bound, in the regime where the propensity-error budget is larger than the outcome-regression budget. ★ mPert2_eq★ validDGP_pert2
Propensity-Dominant Construction
This file defines the second cell-varying perturbation family for the structure-agnostic average treatment effect lower bound, in the regime where the propensity-error budget is larger than the outcome-regression budget. It proves that the constructed finite observed-data laws are valid probability models.
Second (propensity-dominant) cell-varying construction data for the same style of Rademacher perturbation as VarConstr but with the roles of the two nuisances swapped, so the propensity carries the larger deviation. It packages two bump-magnitude scalars, the larger on the propensity and the smaller on the treated outcome arm, together with a nuisance center given by the pair-indexed functions m₀, g₀ and g₁ for the propensity and the two potential-outcome regressions, plus the inequalities certifying that both bump magnitudes are nonnegative, the center is pointwise strictly inside (0,1) for m₀, g₀ and g₁, a worst-case bound forcing the perturbed treated outcome regression to stay at most one, which also keeps the perturbation denominator positive, the propensity bump coefficient not to exceed one, keeping the perturbed propensity nonnegative, and the perturbed propensity to stay at most one.
Definition (Lean source)
The propensity bump coefficient κⱼ = β/g₁ⱼ + α·g₁ⱼ − α²·β·g₁ⱼ.
Definition (Lean source)
The treated-arm denominator D = 1 + (β/g₁)·Δ − α·β.
The cell-varying propensity center as a function of the covariate.
The cell-varying outcome-regression center: g₁ j on the treated arm, g₀ j on control, where j is the pair index of the cell.
The perturbed propensity mλ x = m₀ x.1·(1 + α·g₁ x.1·Δ)·D.
The perturbed outcome regression: control arm = g₀ x.1, treated arm gλ(1,x) = g₁ x.1 / D.
Affine collapse of the propensity. For any Rademacher sign vector lam and cell x, the perturbed propensity at x equals m₀(x.1)·(1 + κ(x.1)·Δ(lam,x)), an exactly affine function of the perturbation.
Formal statement
Proof (Lean source)
For any Rademacher sign vector lam indexing the perturbation, the perturbed propensity and outcome-regression functions define a valid finite observed-data model, i.e. take values in [0,1].
Proof (Lean source)
4 supporting declarations (lemmas, instances)
-
κ_nonnegtheorem — 0 ≤ κⱼ.Proof (Lean source)
theorem κ_nonneg (j : Fin K) : 0 ≤ P.κ j := by have hg10 := P.hg₁0 j have hg11 := P.hg₁1 j have hαβ : P.α * P.β ≤ 1 := by have := P.hgU j; have := P.ratio_nonneg j; nlinarith [hg10] have hr := P.ratio_nonneg j have hαg : 0 ≤ P.α * P.g₁ j := mul_nonneg P.hα hg10.le unfold κ -- κ = β/g₁ + α g₁ (1 − αβ) ≥ 0 have : P.α * P.g₁ j - P.α ^ 2 * P.β * P.g₁ j = P.α * P.g₁ j * (1 - P.α * P.β) := by ring rw [show P.β / P.g₁ j + P.α * P.g₁ j - P.α ^ 2 * P.β * P.g₁ j = P.β / P.g₁ j + P.α * P.g₁ j * (1 - P.α * P.β) by ring] have h1 : 0 ≤ P.α * P.g₁ j * (1 - P.α * P.β) := by apply mul_nonneg hαg; linarith linarith -
D2_postheorem — The denominator D = 1 + (β/g₁)·Δ − αβ is positive (at least g₁ > 0). -
validDGP_hat2theorem — The null DGP (m̂, ĝ) is valid.Proof (Lean source)
ChiSqOverlap 3 core · 2 supporting This file computes the single-observation chi-squared overlap for the second cell-varying perturbation family. ★ chiSqOverlap_eq2
Propensity-Dominant Chi-Squared Second-Moment Overlap
This file computes the single-observation chi-squared overlap for the second cell-varying perturbation family. The closed form produces the per-pair coefficients used by the non-uniform Ingster bound in the propensity-dominant lower-bound assembly. This overlap is a χ² second-moment quantity for the lower-bound construction, not the causal positivity/overlap assumption.
The per-pair χ²-overlap coefficient (second construction).
The single-observation χ² second-moment overlap of two perturbed laws relative to the null.
For any two Rademacher sign vectors lam and lam' indexing perturbed data-generating processes, the single-observation χ² overlap between them equals one plus the sum over pairs j of the propensity-dominant coefficient ΓV2 j / K times the sign agreement between lam and lam' at pair j.
Formal statement
Proof (Lean source)
2 supporting declarations (lemmas, instances)
-
ΓV2_nonnegtheorem — Γⱼ ≥ 0.Proof (Lean source)
theorem ΓV2_nonneg (j : Fin K) : 0 ≤ P.ΓV2 j := by have h1 := P.hm₀0 j; have h2 := P.hm₀1 j; have h3 := P.hg₁0 j; have h4 := P.hg₁1 j unfold ΓV2 have t1 : 0 ≤ P.m₀ j * P.α ^ 2 * P.g₁ j ^ 3 := by positivity have t2 : 0 ≤ P.m₀ j * (P.β / P.g₁ j + P.α * P.g₁ j * (1 - P.g₁ j) - P.α ^ 2 * P.β * P.g₁ j) ^ 2 / (1 - P.g₁ j) := by apply div_nonneg (by positivity); linarith have t3 : 0 ≤ P.m₀ j ^ 2 * P.κ j ^ 2 / (1 - P.m₀ j) := by apply div_nonneg (by positivity); linarith linarith -
obsReal_pert2_eqtheorem — Denominator-free value of the perturbed observed mass at the four (d, y).hypothesesconclusionobsReal (P.mPert2 lam) (P.gPert2 lam) (x, d, y)= (card (Fin K × Bool) : ℝ)⁻¹ * (match d, y with | true, true => P.m₀ x.1 * (P.g₁ x.1 + P.α * P.g₁ x.1 ^ 2 * Δ lam x) | true, false => P.m₀ x.1 * (1 + P.α * P.g₁ x.1 * Δ lam x) * (P.D2 lam x - P.g₁ x.1) | false, true => (1 - P.m₀ x.1 - P.m₀ x.1 * P.κ x.1 * Δ lam x) * P.g₀ x.1 | false, false => (1 - P.m₀ x.1 - P.m₀ x.1 * P.κ x.1 * Δ lam x) * (1 - P.g₀ x.1))Proof (Lean source)
theorem obsReal_pert2_eq (lam : Fin K → Bool) (x : Fin K × Bool) (d y : Bool) : obsReal (P.mPert2 lam) (P.gPert2 lam) (x, d, y) = (card (Fin K × Bool) : ℝ)⁻¹ * (match d, y with | true, true => P.m₀ x.1 * (P.g₁ x.1 + P.α * P.g₁ x.1 ^ 2 * Δ lam x) | true, false => P.m₀ x.1 * (1 + P.α * P.g₁ x.1 * Δ lam x) * (P.D2 lam x - P.g₁ x.1) | false, true => (1 - P.m₀ x.1 - P.m₀ x.1 * P.κ x.1 * Δ lam x) * P.g₀ x.1 | false, false => (1 - P.m₀ x.1 - P.m₀ x.1 * P.κ x.1 * Δ lam x) * (1 - P.g₀ x.1)) := by have hDne : P.D2 lam x ≠ 0 := ne_of_gt (P.D2_pos lam x) have hg₁ne : P.g₁ x.1 ≠ 0 := ne_of_gt (P.hg₁0 x.1) have hmeq := P.mPert2_eq lam x unfold obsReal cases d <;> cases y <;> simp only [Bool.false_eq_true, if_false, if_true] · -- (false, false): (1 − mλ)·(1 − g₀) rw [hmeq]; simp only [gPert2, Bool.false_eq_true, if_false] rw [mul_assoc]; refine congrArg _ ?_; unfold κ; ring · -- (false, true): (1 − mλ)·g₀ rw [hmeq]; simp only [gPert2, Bool.false_eq_true, if_false] rw [mul_assoc]; refine congrArg _ ?_; unfold κ; ring · -- (true, false): mλ·(1 − gλ(1)) simp only [mPert2, gPert2, if_true] rw [mul_assoc]; refine congrArg _ ?_; field_simp · -- (true, true): mλ·gλ(1) simp only [mPert2, gPert2, if_true] rw [mul_assoc]; refine congrArg _ ?_; field_simp
Gap 2 core · 7 supporting This file computes the exact average treatment effect gap for the second cell-varying perturbation family. ★ ate_gPert2★ ate_gap2
Propensity-Dominant ATE Gap
This file computes the exact average treatment effect gap for the second cell-varying perturbation family. The calculation shows that the perturbed average treatment effect is independent of the Rademacher sign vector and has the product order required by the lower-bound construction.
Exact ATE of the perturbed construction. For any Rademacher sign vector lam, the average treatment effect of the perturbed outcome regression equals the average over pairs j of 2g₁ⱼ³(1−αβ)/(g₁ⱼ²(1−αβ)²−β²) − 2g₀ⱼ, independent of lam.
Formal statement
Proof (Lean source)
For any Rademacher sign vector lam, the gap between the perturbed construction's ATE and the null estimate's ATE equals 2β/(2K) times the sum over pairs j of g₁ⱼ(αg₁ⱼ²(1−αβ) + β)/(g₁ⱼ²(1−αβ)² − β²).
Formal statement
Proof (Lean source)
7 supporting declarations (lemmas, instances)
-
alphabeta_le_onetheorem — αβ ≤ 1 (a consequence of hgU and g₁ⱼ > 0).Proof (Lean source)
theorem alphabeta_le_one (j : Fin K) : P.α * P.β ≤ 1 := by have := P.hgU j; have := P.ratio_nonneg j; have := P.hg₁0 j; nlinarith -
g1_one_sub_ab_sub_betatheorem — g₁ⱼ(1 − αβ) − β ≥ g₁ⱼ² > 0: clearing hgU by g₁ⱼ.Proof (Lean source)
theorem g1_one_sub_ab_sub_beta (j : Fin K) : P.g₁ j ^ 2 ≤ P.g₁ j * (1 - P.α * P.β) - P.β := by have hg1 := P.hg₁0 j have hh : (P.β / P.g₁ j) * P.g₁ j = P.β := div_mul_cancel₀ _ (ne_of_gt hg1) have hkey := P.hgU j -- multiply hgU by g₁ⱼ > 0 have : (P.g₁ j + P.β / P.g₁ j + P.α * P.β) * P.g₁ j ≤ 1 * P.g₁ j := mul_le_mul_of_nonneg_right hkey hg1.le rw [add_mul, add_mul] at this rw [hh] at this nlinarith [this] -
denomE_postheorem — The pair denominator Eⱼ = g₁ⱼ²(1 − αβ)² − β² > 0.Proof (Lean source)
theorem denomE_pos (j : Fin K) : 0 < P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2 := by have hg1 := P.hg₁0 j have hlin := P.g1_one_sub_ab_sub_beta j have hβ := P.hβ -- E = (g₁(1−αβ) − β)(g₁(1−αβ) + β); first factor ≥ g₁² > 0, second ≥ β ≥ 0 have h1 : 0 < P.g₁ j * (1 - P.α * P.β) - P.β := by nlinarith [hg1] have h2 : 0 < P.g₁ j * (1 - P.α * P.β) + P.β := by nlinarith [hg1] nlinarith [mul_pos h1 h2] -
gPert2_true_eq2theorem — Cleared treated arm. gλ(1,x) = g₁ x.1² / (g₁ x.1·(1 − αβ) + β·Δ) — no nested fractions, so field_simp can clear it given the (positive) denominator.hypothesesconclusionP.gPert2 lam true x = P.g₁ x.1 ^ 2 / (P.g₁ x.1 * (1 - P.α * P.β) + P.β * Δ lam x)Proof (Lean source)
theorem gPert2_true_eq2 (lam : Fin K → Bool) (x : Fin K × Bool) : P.gPert2 lam true x = P.g₁ x.1 ^ 2 / (P.g₁ x.1 * (1 - P.α * P.β) + P.β * Δ lam x) := by have hg₁ne : P.g₁ x.1 ≠ 0 := ne_of_gt (P.hg₁0 x.1) have hD := P.D2_pos lam x have hdc : P.g₁ x.1 * (1 - P.α * P.β) + P.β * Δ lam x = P.g₁ x.1 * P.D2 lam x := by unfold D2; field_simp; ring simp only [gPert2, if_true] rw [hdc, sq, mul_div_mul_left _ _ hg₁ne] -
clearedDenom_postheorem — The cleared denominator g₁ⱼ(1 − αβ) + β·σ is positive.Proof (Lean source)
theorem clearedDenom_pos (j : Fin K) (σ : ℝ) (hσ : σ = 1 ∨ σ = -1) : 0 < P.g₁ j * (1 - P.α * P.β) + P.β * σ := by have hg1 := P.hg₁0 j have hlin := P.g1_one_sub_ab_sub_beta j have hβ := P.hβ rcases hσ with h | h · rw [h]; nlinarith [hg1] · rw [h]; nlinarith [hg1] -
ate_ghat2theorem — The null estimate ĝ has ATE (1/2K) Σⱼ 2(g₁ⱼ − g₀ⱼ).Proof (Lean source)
theorem ate_ghat2 : ate (P.ghat2 (K := K)) = (card (Fin K × Bool) : ℝ)⁻¹ * ∑ j : Fin K, 2 * (P.g₁ j - P.g₀ j) := by rw [ate] have hpt : ∀ x : Fin K × Bool, P.ghat2 true x - P.ghat2 false x = P.g₁ x.1 - P.g₀ x.1 := by intro x; simp [ghat2] rw [Finset.sum_congr rfl (fun x _ => hpt x), Fintype.sum_prod_type] congr 1 refine Finset.sum_congr rfl fun j _ => ?_ rw [Fintype.sum_bool] change (P.g₁ j - P.g₀ j) + (P.g₁ j - P.g₀ j) = 2 * (P.g₁ j - P.g₀ j) ring -
ate_gap2_nonnegtheorem — The ATE gap is nonnegative.Proof (Lean source)
theorem ate_gap2_nonneg [NeZero K] (lam : Fin K → Bool) : 0 ≤ ate (P.gPert2 lam) - ate (P.ghat2 (K := K)) := by rw [P.ate_gap2 lam] have hcard : (0 : ℝ) ≤ (card (Fin K × Bool) : ℝ)⁻¹ := by positivity have hβ := P.hβ; have hα := P.hα have h2β : (0 : ℝ) ≤ 2 * P.β := by positivity have hsum : 0 ≤ ∑ j : Fin K, P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) / (P.g₁ j ^ 2 * (1 - P.α * P.β) ^ 2 - P.β ^ 2) := by refine sum_nonneg fun j _ => ?_ have hg1 := P.hg₁0 j have hE := P.denomE_pos j have hab := P.alphabeta_le_one j have hnum : 0 ≤ P.g₁ j * (P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β) := by have : 0 ≤ P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) := by apply mul_nonneg (by positivity); linarith have : 0 ≤ P.α * P.g₁ j ^ 2 * (1 - P.α * P.β) + P.β := by linarith exact mul_nonneg hg1.le this exact div_nonneg hnum hE.le positivity
LowerBound 4 core · 11 supporting This file assembles the second cell-varying perturbation family into a two-point testing witness for the structure-agnostic average treatment effect minimax lower bound. ★ minimax_lower_bound_var2
Propensity-Dominant Lower Bound
This file assembles the second cell-varying perturbation family into a two-point testing witness for the structure-agnostic average treatment effect minimax lower bound. Under the stated per-cell budgets and chi-squared regularity conditions, it shows that every estimator has nontrivial miss probability at the induced separation.
The null n-sample law P̂^⊗n.
Definition (Lean source)
The perturbed n-sample law Qλ^⊗n.
The alternative n-sample law: the uniform Rademacher mixture of the perturbed laws.
Structure-agnostic minimax lower bound (second / propensity-dominant construction). Fix a cell-varying nuisance center P, sample size n, and nuisance-error budgets εg, εm, and suppose the treated-arm outcome bump magnitude is strictly positive. If the perturbed propensity's squared deviation from its center is at most εm in every cell, the perturbed treated-arm outcome regression's squared deviation from its center is at most εg in every cell, εm is nonnegative, εg is nonnegative, the normalized per-pair χ² coefficients sum to at most 1, and n²/2 times the sum of their squares is at most log 2, then for every measurable estimator, the worst-case-over-class probability that the estimator's error exceeds half of the displayed strictly positive separation gap is at least 1/4.
Formal statement
Proof (Lean source)
11 supporting declarations (lemmas, instances)
-
inClass_null2theorem — The null estimate is itself in the class (zero nuisance error).hypothesesconclusionInClass (P.mhat2 (K := K)) P.ghat2 εg εm P.mhat2 P.ghat2 where validProof (Lean source)
theorem inClass_null2 (P : VarConstr2 K) {εg εm : ℝ} (hεg : 0 ≤ εg) (hεm : 0 ≤ εm) : InClass (P.mhat2 (K := K)) P.ghat2 εg εm P.mhat2 P.ghat2 where valid := P.validDGP_hat2 err_g d := by rw [l2sq_self]; exact hεg err_m := by rw [l2sq_self]; exact hεm -
Qfalse2_isProbtheorem — The null sample law is a probability measure.Proof (Lean source)
theorem Qfalse2_isProb (P : VarConstr2 K) (n : ℕ) [NeZero K] : IsProbabilityMeasure (Qfalse2 P n) := by unfold Qfalse2; infer_instance -
Qpert2_isProbtheorem — Each perturbed sample law is a probability measure.hypothesesconclusionIsProbabilityMeasure (Qpert2 P n lam)Proof (Lean source)
theorem Qpert2_isProb (P : VarConstr2 K) (n : ℕ) [NeZero K] (lam : Fin K → Bool) : IsProbabilityMeasure (Qpert2 P n lam) := by unfold Qpert2; infer_instance -
Qtrue2_isProbtheorem — The Rademacher mixture of perturbed sample laws is a probability measure.Proof (Lean source)
theorem Qtrue2_isProb (P : VarConstr2 K) (n : ℕ) [NeZero K] : IsProbabilityMeasure (Qtrue2 P n) := by haveI : ∀ lam : Fin K → Bool, IsProbabilityMeasure (Qpert2 P n lam) := fun lam => Qpert2_isProb P n lam unfold Qtrue2 exact mixture_isProbabilityMeasure _ (signWeight_sum K) _ -
real2_le_minimaxMisstheorem — An in-class DGP's miss probability at its own ATE is dominated by the minimax miss.hypothesesconclusion(productLaw hin.valid n).real {x | s ≤ |est x - ate g|}≤ minimaxMiss P.mhat2 P.ghat2 εg εm n est sProof (Lean source)
theorem real2_le_minimaxMiss (P : VarConstr2 K) {n : ℕ} [NeZero K] {εg εm : ℝ} {m : Fin K × Bool → ℝ} {g : Bool → Fin K × Bool → ℝ} (hin : InClass (P.mhat2 (K := K)) P.ghat2 εg εm m g) (est : (Fin n → Obs (Fin K × Bool)) → ℝ) (s : ℝ) : (productLaw hin.valid n).real {x | s ≤ |est x - ate g|} ≤ minimaxMiss P.mhat2 P.ghat2 εg εm n est s := by simpa [nMiss] using nMiss_le_minimaxMiss (⟨(m, g), hin⟩ : InClassDGP (P.mhat2 (K := K)) P.ghat2 εg εm) (est := est) (s := s) -
Qfalse2_singleton_ne_zerotheorem — The null n-sample law charges every point.hypothesesconclusionQfalse2 P n {ω} ≠ 0Proof (Lean source)
theorem Qfalse2_singleton_ne_zero (P : VarConstr2 K) {n : ℕ} [NeZero K] (ω : Fin n → Obs (Fin K × Bool)) : Qfalse2 P n {ω} ≠ 0 := by have hpos : 0 < (Qfalse2 P n).real {ω} := by rw [Qfalse2, productLaw_real_singleton] apply Finset.prod_pos intro i _ have hC : (0 : ℝ) < (card (Fin K × Bool) : ℝ) := by have := Fintype.card_pos (α := Fin K × Bool); exact_mod_cast this have hm0 := P.hm₀0 (ω i).1.1; have h1m0 : (0:ℝ) < 1 - P.m₀ (ω i).1.1 := by have := P.hm₀1 (ω i).1.1; linarith have hg00 := P.hg₀0 (ω i).1.1; have h1g0 : (0:ℝ) < 1 - P.g₀ (ω i).1.1 := by have := P.hg₀1 (ω i).1.1; linarith have hg10 := P.hg₁0 (ω i).1.1; have h1g1 : (0:ℝ) < 1 - P.g₁ (ω i).1.1 := by have := P.hg₁1 (ω i).1.1; linarith simp only [obsReal, mhat2, ghat2] rcases (ω i).2.1 with _ | _ <;> rcases (ω i).2.2 with _ | _ <;> · simp only [Bool.false_eq_true, if_false, if_true] refine mul_pos (mul_pos (inv_pos.mpr hC) ?_) ?_ <;> assumption intro h rw [Measure.real, h, ENNReal.toReal_zero] at hpos exact lt_irrefl _ hpos -
Qtrue2_real_singletontheorem — The alternative law's .real point mass: a uniform mixture over sign vectors.hypothesesProof (Lean source)
theorem Qtrue2_real_singleton (P : VarConstr2 K) {n : ℕ} [NeZero K] (ω : Fin n → Obs (Fin K × Bool)) : (Qtrue2 P n).real {ω} = ∑ lam : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ∏ i, obsReal (P.mPert2 lam) (P.gPert2 lam) (ω i) := by haveI : ∀ lam : Fin K → Bool, IsProbabilityMeasure (Qpert2 P n lam) := fun lam => Qpert2_isProb P n lam rw [Qtrue2, Measure.real, mixture_apply] rw [ENNReal.toReal_sum (fun lam _ => ENNReal.mul_ne_top (by rw [signWeight]; exact ENNReal.inv_ne_top.2 (by simp)) (measure_ne_top _ _))] refine Finset.sum_congr rfl fun lam _ => ?_ rw [ENNReal.toReal_mul, signWeight_toReal] congr 1 rw [Qpert2] exact productLaw_real_singleton (P.validDGP_pert2 lam) ω -
one_add_chiSqDiv_Qtrue2_Qfalse2theorem — Mixture second-moment identity (second construction).hypothesesProof (Lean source)
theorem one_add_chiSqDiv_Qtrue2_Qfalse2 (P : VarConstr2 K) {n : ℕ} [NeZero K] : 1 + chiSqDiv (Qtrue2 P n) (Qfalse2 P n) = ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * (P.chiSqOverlapV2 lam lam') ^ n := by haveI : IsProbabilityMeasure (Qtrue2 P n) := Qtrue2_isProb P n haveI : IsProbabilityMeasure (Qfalse2 P n) := Qfalse2_isProb P n have hac : Qtrue2 P n ≪ Qfalse2 P n := absolutelyContinuous_of_singleton_pos _ _ (Qfalse2_singleton_ne_zero P) rw [finite_one_add_chiSqDiv (Qtrue2 P n) (Qfalse2 P n) hac] have hstep : ∀ ω : Fin n → Obs (Fin K × Bool), ((Qtrue2 P n).real {ω}) ^ 2 / (Qfalse2 P n).real {ω} = ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * ∏ i, (obsReal (P.mPert2 lam) (P.gPert2 lam) (ω i) * obsReal (P.mPert2 lam') (P.gPert2 lam') (ω i) / obsReal P.mhat2 P.ghat2 (ω i)) := by intro ω rw [Qtrue2_real_singleton P ω, Qfalse2, productLaw_real_singleton (P.validDGP_hat2 (K := K)) ω, sq, Finset.sum_mul_sum] rw [Finset.sum_div] refine Finset.sum_congr rfl fun lam _ => ?_ rw [Finset.sum_div] refine Finset.sum_congr rfl fun lam' _ => ?_ rw [Finset.prod_div_distrib, Finset.prod_mul_distrib] ring rw [Finset.sum_congr rfl fun ω _ => hstep ω] rw [Finset.sum_comm] refine Finset.sum_congr rfl fun lam _ => ?_ rw [Finset.sum_comm] refine Finset.sum_congr rfl fun lam' _ => ?_ rw [← Finset.mul_sum] congr 1 unfold chiSqOverlapV2 rw [Fintype.sum_pow] -
chiSqDiv_Qtrue2_Qfalse2_le_onetheorem — The χ² indistinguishability bound (second construction).hypothesesProof (Lean source)
theorem chiSqDiv_Qtrue2_Qfalse2_le_one (P : VarConstr2 K) {n : ℕ} [NeZero K] (hΓsum : ∑ j, P.ΓV2 j / (K : ℝ) ≤ 1) (hreg : (n : ℝ) ^ 2 / 2 * ∑ j, (P.ΓV2 j / (K : ℝ)) ^ 2 ≤ log 2) : chiSqDiv (Qtrue2 P n) (Qfalse2 P n) ≤ 1 := by have hK : (K : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr (NeZero.ne K) have hid := P.one_add_chiSqDiv_Qtrue2_Qfalse2 (n := n) have hov : ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * (P.chiSqOverlapV2 lam lam') ^ n = ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * (1 + ∑ j, (P.ΓV2 j / (K : ℝ)) * (signOf (lam j) * signOf (lam' j))) ^ n := by refine Finset.sum_congr rfl fun lam _ => Finset.sum_congr rfl fun lam' _ => ?_ rw [P.chiSqOverlap_eq2 lam lam'] have hbound := ingster_bound_general K n (d := fun j => P.ΓV2 j / (K : ℝ)) (fun j => div_nonneg (P.ΓV2_nonneg j) (Nat.cast_nonneg K)) hΓsum hreg rw [← hov] at hbound rw [← hid] at hbound linarith -
tvDist_Qfalse2_Qtrue2_le_halftheorem — Total-variation indistinguishability (second construction).hypothesesProof (Lean source)
theorem tvDist_Qfalse2_Qtrue2_le_half (P : VarConstr2 K) {n : ℕ} [NeZero K] (hΓsum : ∑ j, P.ΓV2 j / (K : ℝ) ≤ 1) (hreg : (n : ℝ) ^ 2 / 2 * ∑ j, (P.ΓV2 j / (K : ℝ)) ^ 2 ≤ log 2) : tvDist (Qfalse2 P n) (Qtrue2 P n) ≤ 1 / 2 := by haveI : IsProbabilityMeasure (Qtrue2 P n) := Qtrue2_isProb P n haveI : IsProbabilityMeasure (Qfalse2 P n) := Qfalse2_isProb P n have hac : Qtrue2 P n ≪ Qfalse2 P n := absolutelyContinuous_of_singleton_pos _ _ (Qfalse2_singleton_ne_zero P) have hchi := P.chiSqDiv_Qtrue2_Qfalse2_le_one (n := n) hΓsum hreg rw [tvDist_symm] calc tvDist (Qtrue2 P n) (Qfalse2 P n) ≤ (1 / 2) * sqrt (chiSqDiv (Qtrue2 P n) (Qfalse2 P n)) := tvDist_le_half_sqrt_chiSqDiv _ _ hac Integrable.of_finite _ ≤ (1 / 2) * sqrt 1 := by apply mul_le_mul_of_nonneg_left _ (by norm_num); exact Real.sqrt_le_sqrt hchi _ = 1 / 2 := by rw [Real.sqrt_one]; ring
Membership 1 core · 4 supporting This file proves that the second cell-varying perturbation family belongs to the finite structure-agnostic nuisance class when the propensity and outcome-regression budgets hold. ★ inClass2
Propensity-Dominant Class Membership
This file proves that the second cell-varying perturbation family belongs to the finite structure-agnostic nuisance class when the propensity and outcome-regression budgets hold. The estimates cover the regime in which the propensity perturbation is the larger error component.
Class membership. Fix a sign pattern lam and nuisance-error budgets εg, εm. If the squared quantity (m₀ⱼ·κⱼ)² is at most εm at every cell j, the worst-case squared deviation of the perturbed treated-arm outcome regression is at most εg at every cell j, and εg is nonnegative, then the perturbed propensity and outcome-regression pair (mλ, gλ) lies in the structure-agnostic nuisance class ℱ(εg, εm) around the cell-varying center (m̂, ĝ).
Formal statement
Proof (Lean source)
4 supporting declarations (lemmas, instances)
-
l2sq_mPert2_letheorem — The propensity perturbation's squared L² error is exactly the average of (m₀ⱼ·κⱼ)², hence ≤ εm whenever every pair satisfies (m₀ⱼ·κⱼ)² ≤ εm.hypothesesconclusionl2sq (P.mPert2 lam) (P.mhat2 (K := K)) ≤ εmProof (Lean source)
theorem l2sq_mPert2_le [NeZero K] {εm : ℝ} (hm : ∀ j, (P.m₀ j * P.κ j) ^ 2 ≤ εm) (lam : Fin K → Bool) : l2sq (P.mPert2 lam) (P.mhat2 (K := K)) ≤ εm := by set C := Fin K × Bool have hC : (Fintype.card C : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr Fintype.card_ne_zero have hterm : ∀ x : C, (P.mPert2 lam x - P.mhat2 x) ^ 2 ≤ εm := by intro x have hdiff : P.mPert2 lam x - P.mhat2 x = (P.m₀ x.1 * P.κ x.1) * Δ lam x := by rw [P.mPert2_eq lam x]; simp only [mhat2]; ring rw [hdiff, mul_pow, Δ_sq lam x, mul_one] exact hm x.1 rw [l2sq] have hsum : ∑ x : C, (P.mPert2 lam x - P.mhat2 x) ^ 2 ≤ ∑ _x : C, εm := Finset.sum_le_sum (fun x _ => hterm x) rw [Finset.sum_const, Finset.card_univ, nsmul_eq_mul] at hsum calc (Fintype.card C : ℝ)⁻¹ * ∑ x : C, (P.mPert2 lam x - P.mhat2 x) ^ 2 ≤ (Fintype.card C : ℝ)⁻¹ * ((Fintype.card C : ℝ) * εm) := by apply mul_le_mul_of_nonneg_left hsum; positivity _ = εm := by field_simp -
l2sq_gPert2_falsetheorem — The control outcome arm is unchanged, so its L² error is 0. -
gPert2_true_subtheorem — The treated arm's pointwise deviation from ĝ(1,x) = g₁ x.1 is β·(α g₁ x.1 − Δ)/D.hypothesesconclusionP.gPert2 lam true x - P.g₁ x.1 = P.β * (P.α * P.g₁ x.1 - Δ lam x) / P.D2 lam xProof (Lean source)
theorem gPert2_true_sub (lam : Fin K → Bool) (x : Fin K × Bool) : P.gPert2 lam true x - P.g₁ x.1 = P.β * (P.α * P.g₁ x.1 - Δ lam x) / P.D2 lam x := by have hg₁ne : P.g₁ x.1 ≠ 0 := ne_of_gt (P.hg₁0 x.1) have hd := P.D2_pos lam x simp only [gPert2, if_true] rw [eq_div_iff (ne_of_gt hd), sub_mul, div_mul_cancel₀ _ (ne_of_gt hd)] unfold D2 field_simp ring -
l2sq_gPert2_true_letheorem — The treated arm's squared L² error is ≤ εg whenever every pair satisfies β²·(α g₁ⱼ + 1)²/(1 − β/g₁ⱼ − αβ)² ≤ εg.hypothesesNeZero Kεg :ℝhg :∀ j, P.β ^ 2 * (P.α * P.g₁ j + 1) ^ 2 / (1 - P.β / P.g₁ j - P.α * P.β) ^ 2 ≤ εgProof (Lean source)
theorem l2sq_gPert2_true_le [NeZero K] {εg : ℝ} (hg : ∀ j, P.β ^ 2 * (P.α * P.g₁ j + 1) ^ 2 / (1 - P.β / P.g₁ j - P.α * P.β) ^ 2 ≤ εg) (lam : Fin K → Bool) : l2sq (P.gPert2 lam true) (P.ghat2 true) ≤ εg := by set C := Fin K × Bool have hC : (Fintype.card C : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr Fintype.card_ne_zero have hterm : ∀ x : C, (P.gPert2 lam true x - P.ghat2 true x) ^ 2 ≤ εg := by intro x have hghat : P.ghat2 true x = P.g₁ x.1 := by simp [ghat2] have hg10 := P.hg₁0 x.1 have hα := P.hα; have hβ := P.hβ -- D_min = 1 − β/g₁ − αβ is positive (and ≤ D) have hDmin : 0 < 1 - P.β / P.g₁ x.1 - P.α * P.β := by have hgU := P.hgU x.1; have hr := P.ratio_nonneg x.1; nlinarith have hDmin2 : 0 < (1 - P.β / P.g₁ x.1 - P.α * P.β) ^ 2 := by positivity have hD := P.D2_pos lam x have hD2 : 0 < (P.D2 lam x) ^ 2 := by positivity rw [hghat, P.gPert2_true_sub lam x] have hsq : (P.β * (P.α * P.g₁ x.1 - Δ lam x) / P.D2 lam x) ^ 2 = P.β ^ 2 * (P.α * P.g₁ x.1 - Δ lam x) ^ 2 / (P.D2 lam x) ^ 2 := by rw [div_pow, mul_pow] rw [hsq] refine le_trans ?_ (hg x.1) -- numerator: (α g₁ − Δ)² ≤ (α g₁ + 1)²; denominator: D² ≥ D_min² have hnum : P.β ^ 2 * (P.α * P.g₁ x.1 - Δ lam x) ^ 2 ≤ P.β ^ 2 * (P.α * P.g₁ x.1 + 1) ^ 2 := by apply mul_le_mul_of_nonneg_left _ (by positivity) have hαg : 0 ≤ P.α * P.g₁ x.1 := mul_nonneg hα hg10.le rcases Δ_mem lam x with h | h · rw [h]; nlinarith · rw [h]; nlinarith have hden : (1 - P.β / P.g₁ x.1 - P.α * P.β) ^ 2 ≤ (P.D2 lam x) ^ 2 := by unfold D2 have hr := P.ratio_nonneg x.1 rcases Δ_mem lam x with h | h · rw [h]; nlinarith [hDmin] · rw [h]; nlinarith [hDmin] calc P.β ^ 2 * (P.α * P.g₁ x.1 - Δ lam x) ^ 2 / (P.D2 lam x) ^ 2 ≤ P.β ^ 2 * (P.α * P.g₁ x.1 + 1) ^ 2 / (P.D2 lam x) ^ 2 := by exact (div_le_div_iff_of_pos_right hD2).mpr hnum _ ≤ P.β ^ 2 * (P.α * P.g₁ x.1 + 1) ^ 2 / (1 - P.β / P.g₁ x.1 - P.α * P.β) ^ 2 := by apply div_le_div_of_nonneg_left (by positivity) hDmin2 hden rw [l2sq] have hsum : ∑ x : C, (P.gPert2 lam true x - P.ghat2 true x) ^ 2 ≤ ∑ _x : C, εg := Finset.sum_le_sum (fun x _ => hterm x) rw [Finset.sum_const, Finset.card_univ, nsmul_eq_mul] at hsum calc (Fintype.card C : ℝ)⁻¹ * ∑ x : C, (P.gPert2 lam true x - P.ghat2 true x) ^ 2 ≤ (Fintype.card C : ℝ)⁻¹ * ((Fintype.card C : ℝ) * εg) := by apply mul_le_mul_of_nonneg_left hsum; positivity _ = εg := by field_simp