Estimation.MinimaxATE.VaryingCenterCase1
First varying-center MinimaxATE lower-bound construction: cell-varying mixture laws, class membership, χ² overlap, ATE gap, and risk lower bound.
Construction 7 core · 3 supporting This file defines the cell-varying-center Rademacher construction for the structure-agnostic ATE lower bound. ★ validDGP_hatV★ validDGP_pertV
Cell-Varying Construction
This file defines the cell-varying-center Rademacher construction for the structure-agnostic ATE lower bound. The nuisance center may vary by paired cell while remaining constant within each pair, preserving the exact cancellation used by the gap and overlap calculations.
The structure VarConstr stores the bump magnitudes α, β, the pair-indexed nuisance center
m₀, g₀, g₁, and the inequalities that keep all perturbed nuisances in [0, 1]. Its namespace
defines the center functions mhatV and ghatV, the sign-dependent perturbations mPertV and
gPertV, the denominator positivity lemma denomV_pos, and the validity proofs
validDGP_hatV and validDGP_pertV.
Cell-varying-center construction data for a Rademacher perturbation whose nuisance center may vary by paired cell (Jin–Syrgkanis 2024, Assumption 2, restricted to centers constant within a pair). It packages two bump-magnitude scalars, one on the treated outcome arm and one on the propensity, 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₁, the propensity bump is smaller than the treated-arm center, keeping the perturbation denominator positive, the treated-arm bump does not exceed the treated center, keeping the perturbed outcome regression nonnegative, and worst-case bounds forcing the perturbed outcome regression to stay at most one and the perturbed propensity to stay at most one.
Definition (Lean source)
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)·Δ).
The perturbed outcome regression: control arm = g₀ x.1, treated arm gλ(1,x) = (g₁ x.1 + α·Δ)/(1 − (β/g₁ x.1)·Δ).
The null cell-varying-center data-generating process, with propensity mhatV and outcome regressions ghatV, is a valid finite observed-data model, i.e. all its component probabilities lie in [0,1].
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)
3 supporting declarations (lemmas, instances)
-
denomV_postheorem — The denominator 1 − (β/g₁ j)·Δ is positive.
ChiSqOverlap 3 core · 2 supporting This file computes the single-observation chi-squared overlap for the first cell-varying perturbation family in the structure-agnostic average treatment effect lower bound. ★ chiSqOverlap_eqV
Cell-Varying Chi-Squared Second-Moment Overlap
This file computes the single-observation chi-squared overlap for the first cell-varying perturbation family in the structure-agnostic average treatment effect lower bound. The result isolates the per-pair overlap coefficient that feeds the non-uniform Ingster inequality. This overlap is a χ² second-moment quantity for the lower-bound construction, not the causal positivity/overlap assumption.
The declaration ΓV is the nonnegative per-pair coefficient proved by ΓV_nonneg. The quantity
chiSqOverlapV lam lam' is the finite second moment of two perturbed observation laws relative to
the null. The algebraic lemmas obsReal_pertV_eq and chiSqOverlap_eqV compute that overlap as
1 + sum_j (ΓV j / K) * signOf (lam j) * signOf (lam' j), which is the form consumed by
ingster_bound_general.
The per-pair χ²-overlap coefficient.
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 per-pair coefficient ΓV j / K times the sign agreement between lam and lam' at pair j.
Formal statement
Proof (Lean source)
2 supporting declarations (lemmas, instances)
-
ΓV_nonnegtheorem — Γⱼ ≥ 0.Proof (Lean source)
theorem ΓV_nonneg (j : Fin K) : 0 ≤ P.ΓV 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 ΓV have t1 : 0 ≤ P.m₀ j * P.α ^ 2 / P.g₁ j := by positivity have t2 : 0 ≤ P.m₀ j * (P.α + P.β / P.g₁ j) ^ 2 / (1 - P.g₁ j) := by apply div_nonneg (by positivity); linarith have t3 : 0 ≤ P.m₀ j ^ 2 * P.β ^ 2 / (P.g₁ j ^ 2 * (1 - P.m₀ j)) := by apply div_nonneg (by positivity) have : 0 < 1 - P.m₀ j := by linarith positivity linarith -
obsReal_pertV_eqtheorem — Denominator-free value of the perturbed observed mass at the four (d, y).hypothesesconclusionobsReal (P.mPertV lam) (P.gPertV lam) (x, d, y)= (card (Fin K × Bool) : ℝ)⁻¹ * (match d, y with | true, true => P.m₀ x.1 * (P.g₁ x.1 + P.α * Δ lam x) | true, false => P.m₀ x.1 * ((1 - P.g₁ x.1) - (P.α + P.β / P.g₁ x.1) * Δ lam x) | false, true => (1 - P.m₀ x.1 + P.m₀ x.1 * (P.β / P.g₁ x.1) * Δ lam x) * P.g₀ x.1 | false, false => (1 - P.m₀ x.1 + P.m₀ x.1 * (P.β / P.g₁ x.1) * Δ lam x) * (1 - P.g₀ x.1))Proof (Lean source)
theorem obsReal_pertV_eq (lam : Fin K → Bool) (x : Fin K × Bool) (d y : Bool) : obsReal (P.mPertV lam) (P.gPertV lam) (x, d, y) = (card (Fin K × Bool) : ℝ)⁻¹ * (match d, y with | true, true => P.m₀ x.1 * (P.g₁ x.1 + P.α * Δ lam x) | true, false => P.m₀ x.1 * ((1 - P.g₁ x.1) - (P.α + P.β / P.g₁ x.1) * Δ lam x) | false, true => (1 - P.m₀ x.1 + P.m₀ x.1 * (P.β / P.g₁ x.1) * Δ lam x) * P.g₀ x.1 | false, false => (1 - P.m₀ x.1 + P.m₀ x.1 * (P.β / P.g₁ x.1) * Δ lam x) * (1 - P.g₀ x.1)) := by have hd : (1 - (P.β / P.g₁ x.1) * Δ lam x) ≠ 0 := (P.denomV_pos lam x).ne' have hg₁ne : P.g₁ x.1 ≠ 0 := ne_of_gt (P.hg₁0 x.1) have hden : P.g₁ x.1 - P.β * Δ lam x ≠ 0 := by rcases Δ_mem lam x with h | h <;> rw [h] <;> · have := P.hβg₁ x.1; have := P.hβ; intro hc; nlinarith unfold obsReal mPertV gPertV cases d <;> cases y <;> simp only [Bool.false_eq_true, if_false, if_true] <;> rw [mul_assoc] <;> refine congrArg _ ?_ <;> field_simp <;> ring
Gap 2 core · 4 supporting This file computes the exact average-treatment-effect gap for the cell-varying-center Rademacher construction. ★ ate_gPertV★ ate_gapV
Cell-Varying ATE Gap
This file computes the exact average-treatment-effect gap for the cell-varying-center Rademacher construction. Because each paired cell shares the same nuisance center, the two positions in a pair cancel the sign dependence and yield a nonnegative separation common to all sign vectors.
The main public lemmas are gPertV_true_eq, which rewrites the treated perturbed arm with a
cleared denominator; ate_ghatV, the ATE of the cell-varying center; ate_gPertV, the exact ATE
of each perturbed sign vector; ate_gapV, the closed form for ate (gPertV lam) - ate ghatV; and
ate_gap_nonneg, the nonnegativity of that common gap.
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₁ⱼ(g₁ⱼ²+αβ)/(g₁ⱼ²−β²) − 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₁ⱼ² − β²).
Formal statement
Proof (Lean source)
4 supporting declarations (lemmas, instances)
-
gPertV_true_eqtheorem — Cleared treated arm. gλ(1,x) = (g₁ x.1² + α·g₁ x.1·Δ)/(g₁ x.1 − β·Δ).hypothesesconclusionP.gPertV lam true x= (P.g₁ x.1 ^ 2 + P.α * P.g₁ x.1 * Δ lam x) / (P.g₁ x.1 - P.β * Δ lam x)Proof (Lean source)
theorem gPertV_true_eq (lam : Fin K → Bool) (x : Fin K × Bool) : P.gPertV lam true x = (P.g₁ x.1 ^ 2 + P.α * P.g₁ x.1 * Δ lam x) / (P.g₁ x.1 - P.β * Δ lam x) := by have hg₁ne : P.g₁ x.1 ≠ 0 := ne_of_gt (P.hg₁0 x.1) have hden0 := P.denomV_pos lam x have hden : P.g₁ x.1 - P.β * Δ lam x ≠ 0 := by rcases Δ_mem lam x with h | h <;> rw [h] <;> · have := P.hβg₁ x.1; have := P.hβ; intro hc; nlinarith simp only [gPertV, if_true] rw [div_eq_div_iff hden0.ne' hden] field_simp -
ate_ghatVtheorem — The null estimate ĝ has ATE (1/2K) Σⱼ 2(g₁ⱼ − g₀ⱼ).Proof (Lean source)
theorem ate_ghatV : ate (P.ghatV (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.ghatV true x - P.ghatV false x = P.g₁ x.1 - P.g₀ x.1 := by intro x; simp [ghatV] 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_gap_nonnegtheorem — The ATE gap is nonnegative.Proof (Lean source)
theorem ate_gap_nonneg [NeZero K] (lam : Fin K → Bool) : 0 ≤ ate (P.gPertV lam) - ate (P.ghatV (K := K)) := by rw [P.ate_gapV lam] have hcard : (0 : ℝ) ≤ (card (Fin K × Bool) : ℝ)⁻¹ := by positivity have hβ := P.hβ; have hα := P.hα have hsum : 0 ≤ ∑ j : Fin K, P.g₁ j / (P.g₁ j ^ 2 - P.β ^ 2) := by refine sum_nonneg fun j _ => ?_ exact div_nonneg (P.hg₁0 j).le (P.g1sq_sub_betasq_pos j).le have h2 : (0 : ℝ) ≤ 2 * P.β * (P.α + P.β) := by positivity positivity
Ingster 1 core · 0 supporting This file proves the Ingster chi-squared average bound with coordinate-specific nonnegative weights. ★ ingster_bound_general
Non-Uniform Ingster Bound
This file proves the Ingster chi-squared average bound with coordinate-specific nonnegative weights. The result supports the cell-varying lower-bound constructions, where each covariate pair contributes its own overlap coefficient.
The public theorem ingster_bound_general bounds the doubly averaged Rademacher expression
(1 + sum_j d j * signOf (lam j) * signOf (lam' j))^n by 2, assuming the weights are
nonnegative, have total mass at most 1, and satisfy the regularity budget
(n^2 / 2) * sum_j (d j)^2 <= log 2. This is the non-uniform chi-squared step used after
chiSqOverlap_eqV rewrites the cell-varying overlap.
For nonnegative per-coordinate weights d j summing to at most 1 satisfying the regularity budget (n²/2)·Σⱼ (d j)² ≤ log 2, the uniform double average, over pairs of Rademacher sign vectors lam, lam' : Fin K → Bool, of (1 + Σⱼ d j·signOf(lam j)·signOf(lam' j))^n is at most 2.
Formal statement
Proof (Lean source)
LowerBound 4 core · 11 supporting This file assembles the cell-varying-center construction into the structure-agnostic ATE minimax lower bound. ★ minimax_lower_bound_var
Cell-Varying Lower Bound
This file assembles the cell-varying-center construction into the structure-agnostic ATE minimax lower bound. It combines per-pair class membership, ATE-gap, and chi-squared-overlap arguments with a non-uniform Ingster bound to handle nuisance centers that vary across paired cells.
It defines the null and alternative sample laws QfalseV, QpertV, and QtrueV, proves their
probability-measure and point-mass facts, computes the mixture second moment in
one_add_chiSqDiv_QtrueV_QfalseV, and derives the chi-squared and total-variation
indistinguishability bounds chiSqDiv_QtrueV_QfalseV_le_one and
tvDist_QfalseV_QtrueV_le_half. The headline theorem minimax_lower_bound_var packages these
ingredients into a TwoPointWitness, proving a 1 / 4 minimax miss lower bound at half the
cell-varying ATE gap.
The null n-sample law P̂^⊗n.
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 (cell-varying center). Around a nuisance center P that varies across pairs (constant within each pair), suppose every pair's propensity-bump budget (m₀ⱼ·(β/g₁ⱼ))² ≤ εm holds and every pair's treated-arm budget g₁ⱼ²(α+β)²/(g₁ⱼ−β)² ≤ εg holds for nonnegative error tolerances εg, εm, and the per-pair overlap coefficients satisfy the total-mass bound Σⱼ Γⱼ/K ≤ 1 and the sample-size regularity budget (n²/2)·Σⱼ (Γⱼ/K)² ≤ log 2. Then for any measurable estimator of the average treatment effect, the worst-case-over-class probability that it misses the true ATE by half the cell-varying gap ate gλ − ate ĝ is at least 1/4.
Formal statement
Proof (Lean source)
11 supporting declarations (lemmas, instances)
-
inClass_nullVtheorem — The null estimate is itself in the class (zero nuisance error).hypothesesconclusionInClass (P.mhatV (K := K)) P.ghatV εg εm P.mhatV P.ghatV where validProof (Lean source)
theorem inClass_nullV (P : VarConstr K) {εg εm : ℝ} (hεg : 0 ≤ εg) (hεm : 0 ≤ εm) : InClass (P.mhatV (K := K)) P.ghatV εg εm P.mhatV P.ghatV where valid := P.validDGP_hatV err_g d := by rw [l2sq_self]; exact hεg err_m := by rw [l2sq_self]; exact hεm -
QfalseV_isProbtheorem — The null sample law is a probability measure.Proof (Lean source)
theorem QfalseV_isProb (P : VarConstr K) (n : ℕ) [NeZero K] : IsProbabilityMeasure (QfalseV P n) := by unfold QfalseV; infer_instance -
QpertV_isProbtheorem — Each perturbed sample law is a probability measure.hypothesesconclusionIsProbabilityMeasure (QpertV P n lam)Proof (Lean source)
theorem QpertV_isProb (P : VarConstr K) (n : ℕ) [NeZero K] (lam : Fin K → Bool) : IsProbabilityMeasure (QpertV P n lam) := by unfold QpertV; infer_instance -
QtrueV_isProbtheorem — The Rademacher mixture of perturbed sample laws is a probability measure.Proof (Lean source)
theorem QtrueV_isProb (P : VarConstr K) (n : ℕ) [NeZero K] : IsProbabilityMeasure (QtrueV P n) := by haveI : ∀ lam : Fin K → Bool, IsProbabilityMeasure (QpertV P n lam) := fun lam => QpertV_isProb P n lam unfold QtrueV exact mixture_isProbabilityMeasure _ (signWeight_sum K) _ -
realV_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.mhatV P.ghatV εg εm n est sProof (Lean source)
theorem realV_le_minimaxMiss (P : VarConstr K) {n : ℕ} [NeZero K] {εg εm : ℝ} {m : Fin K × Bool → ℝ} {g : Bool → Fin K × Bool → ℝ} (hin : InClass (P.mhatV (K := K)) P.ghatV ε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.mhatV P.ghatV εg εm n est s := by simpa [nMiss] using nMiss_le_minimaxMiss (⟨(m, g), hin⟩ : InClassDGP (P.mhatV (K := K)) P.ghatV εg εm) (est := est) (s := s) -
QfalseV_singleton_ne_zerotheorem — The null n-sample law charges every point.hypothesesconclusionQfalseV P n {ω} ≠ 0Proof (Lean source)
theorem QfalseV_singleton_ne_zero (P : VarConstr K) {n : ℕ} [NeZero K] (ω : Fin n → Obs (Fin K × Bool)) : QfalseV P n {ω} ≠ 0 := by have hpos : 0 < (QfalseV P n).real {ω} := by rw [QfalseV, 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, mhatV, ghatV] 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 -
QtrueV_real_singletontheorem — The alternative law's .real point mass: a uniform mixture over sign vectors.hypothesesProof (Lean source)
theorem QtrueV_real_singleton (P : VarConstr K) {n : ℕ} [NeZero K] (ω : Fin n → Obs (Fin K × Bool)) : (QtrueV P n).real {ω} = ∑ lam : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ∏ i, obsReal (P.mPertV lam) (P.gPertV lam) (ω i) := by haveI : ∀ lam : Fin K → Bool, IsProbabilityMeasure (QpertV P n lam) := fun lam => QpertV_isProb P n lam rw [QtrueV, 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 [QpertV] exact productLaw_real_singleton (P.validDGP_pertV lam) ω -
one_add_chiSqDiv_QtrueV_QfalseVtheorem — Mixture second-moment identity (cell-varying center).hypothesesProof (Lean source)
theorem one_add_chiSqDiv_QtrueV_QfalseV (P : VarConstr K) {n : ℕ} [NeZero K] : 1 + chiSqDiv (QtrueV P n) (QfalseV P n) = ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * (P.chiSqOverlapV lam lam') ^ n := by haveI : IsProbabilityMeasure (QtrueV P n) := QtrueV_isProb P n haveI : IsProbabilityMeasure (QfalseV P n) := QfalseV_isProb P n have hac : QtrueV P n ≪ QfalseV P n := absolutelyContinuous_of_singleton_pos _ _ (QfalseV_singleton_ne_zero P) rw [finite_one_add_chiSqDiv (QtrueV P n) (QfalseV P n) hac] have hstep : ∀ ω : Fin n → Obs (Fin K × Bool), ((QtrueV P n).real {ω}) ^ 2 / (QfalseV P n).real {ω} = ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * ∏ i, (obsReal (P.mPertV lam) (P.gPertV lam) (ω i) * obsReal (P.mPertV lam') (P.gPertV lam') (ω i) / obsReal P.mhatV P.ghatV (ω i)) := by intro ω rw [QtrueV_real_singleton P ω, QfalseV, productLaw_real_singleton (P.validDGP_hatV (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 chiSqOverlapV rw [Fintype.sum_pow] -
chiSqDiv_QtrueV_QfalseV_le_onetheorem — The χ² indistinguishability bound (cell-varying center).hypothesesProof (Lean source)
theorem chiSqDiv_QtrueV_QfalseV_le_one (P : VarConstr K) {n : ℕ} [NeZero K] (hΓsum : ∑ j, P.ΓV j / (K : ℝ) ≤ 1) (hreg : (n : ℝ) ^ 2 / 2 * ∑ j, (P.ΓV j / (K : ℝ)) ^ 2 ≤ log 2) : chiSqDiv (QtrueV P n) (QfalseV P n) ≤ 1 := by have hK : (K : ℝ) ≠ 0 := Nat.cast_ne_zero.mpr (NeZero.ne K) have hid := P.one_add_chiSqDiv_QtrueV_QfalseV (n := n) have hov : ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * (P.chiSqOverlapV lam lam') ^ n = ∑ lam : Fin K → Bool, ∑ lam' : Fin K → Bool, ((2 : ℝ) ^ K)⁻¹ * ((2 : ℝ) ^ K)⁻¹ * (1 + ∑ j, (P.ΓV 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_eqV lam lam'] have hbound := ingster_bound_general K n (d := fun j => P.ΓV j / (K : ℝ)) (fun j => div_nonneg (P.ΓV_nonneg j) (Nat.cast_nonneg K)) hΓsum hreg rw [← hov] at hbound rw [← hid] at hbound linarith -
tvDist_QfalseV_QtrueV_le_halftheorem — Total-variation indistinguishability (cell-varying center).hypothesesProof (Lean source)
theorem tvDist_QfalseV_QtrueV_le_half (P : VarConstr K) {n : ℕ} [NeZero K] (hΓsum : ∑ j, P.ΓV j / (K : ℝ) ≤ 1) (hreg : (n : ℝ) ^ 2 / 2 * ∑ j, (P.ΓV j / (K : ℝ)) ^ 2 ≤ log 2) : tvDist (QfalseV P n) (QtrueV P n) ≤ 1 / 2 := by haveI : IsProbabilityMeasure (QtrueV P n) := QtrueV_isProb P n haveI : IsProbabilityMeasure (QfalseV P n) := QfalseV_isProb P n have hac : QtrueV P n ≪ QfalseV P n := absolutelyContinuous_of_singleton_pos _ _ (QfalseV_singleton_ne_zero P) have hchi := P.chiSqDiv_QtrueV_QfalseV_le_one (n := n) hΓsum hreg rw [tvDist_symm] calc tvDist (QtrueV P n) (QfalseV P n) ≤ (1 / 2) * sqrt (chiSqDiv (QtrueV P n) (QfalseV 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 cell-varying perturbation family for the structure-agnostic average treatment effect lower bound belongs to the finite nuisance class whenever the per-cell propensity and outcome-regression erro ★ inClassV
Cell-Varying Class Membership
This file proves that the cell-varying perturbation family for the structure-agnostic average treatment effect lower bound belongs to the finite nuisance class whenever the per-cell propensity and outcome-regression error budgets hold. It supplies the membership estimates used to assemble the first cell-varying minimax lower bound.
The lemmas l2sq_mPertV_le, l2sq_gPertV_false, gPertV_true_sub, and
l2sq_gPertV_true_le bound the propensity and outcome-arm L²(P_X) errors. The capstone
inClassV combines those estimates with validDGP_pertV to show every perturbed sign vector lies
in InClass around the cell-varying center.
Class membership. Suppose every pair's propensity-bump budget (m₀ⱼ·(β/g₁ⱼ))² ≤ εm holds and every pair's treated-arm budget g₁ⱼ²(α+β)²/(g₁ⱼ−β)² ≤ εg holds for a nonnegative outcome-error tolerance εg. Then the perturbed data-generating process (mλ, gλ) indexed by a Rademacher sign vector lam 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_mPertV_letheorem — The propensity perturbation's squared L² error is ≤ εm whenever every pair's bump magnitude (m₀ⱼ·(β/g₁ⱼ))² is ≤ εm.hypothesesconclusionl2sq (P.mPertV lam) (P.mhatV (K := K)) ≤ εmProof (Lean source)
theorem l2sq_mPertV_le [NeZero K] {εm : ℝ} (hm : ∀ j, (P.m₀ j * (P.β / P.g₁ j)) ^ 2 ≤ εm) (lam : Fin K → Bool) : l2sq (P.mPertV lam) (P.mhatV (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.mPertV lam x - P.mhatV x) ^ 2 ≤ εm := by intro x have hdiff : P.mPertV lam x - P.mhatV x = -(P.m₀ x.1 * (P.β / P.g₁ x.1)) * Δ lam x := by simp only [mPertV, mhatV]; ring rw [hdiff, mul_pow, neg_sq, Δ_sq lam x, mul_one] exact hm x.1 rw [l2sq] have hsum : ∑ x : C, (P.mPertV lam x - P.mhatV 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.mPertV lam x - P.mhatV x) ^ 2 ≤ (Fintype.card C : ℝ)⁻¹ * ((Fintype.card C : ℝ) * εm) := by apply mul_le_mul_of_nonneg_left hsum; positivity _ = εm := by field_simp -
l2sq_gPertV_falsetheorem — The control outcome arm is unchanged, so its L² error is 0. -
gPertV_true_subtheorem — The treated arm's pointwise deviation from ĝ(1,x) = g₁ x.1 is g₁ x.1·(α+β)·Δ/(g₁ x.1 − β·Δ).hypothesesconclusionP.gPertV lam true x - P.g₁ x.1= P.g₁ x.1 * (P.α + P.β) * Δ lam x / (P.g₁ x.1 - P.β * Δ lam x)Proof (Lean source)
theorem gPertV_true_sub (lam : Fin K → Bool) (x : Fin K × Bool) : P.gPertV lam true x - P.g₁ x.1 = P.g₁ x.1 * (P.α + P.β) * Δ lam x / (P.g₁ x.1 - P.β * Δ lam x) := by have hden : P.g₁ x.1 - P.β * Δ lam x ≠ 0 := by rcases Δ_mem lam x with h | h <;> rw [h] <;> · have := P.hβg₁ x.1; have := P.hβ; intro hc; nlinarith rw [gPertV_true_eq, eq_div_iff hden, sub_mul, div_mul_cancel₀ _ hden] ring -
l2sq_gPertV_true_letheorem — The treated arm's squared L² error is ≤ εg whenever every pair's bound g₁ⱼ²(α+β)²/(g₁ⱼ − β)² is ≤ εg.hypothesesProof (Lean source)
theorem l2sq_gPertV_true_le [NeZero K] {εg : ℝ} (hg : ∀ j, P.g₁ j ^ 2 * (P.α + P.β) ^ 2 / (P.g₁ j - P.β) ^ 2 ≤ εg) (lam : Fin K → Bool) : l2sq (P.gPertV lam true) (P.ghatV 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.gPertV lam true x - P.ghatV true x) ^ 2 ≤ εg := by intro x have hghat : P.ghatV true x = P.g₁ x.1 := by simp [ghatV] have hden : (0 : ℝ) < P.g₁ x.1 - P.β := by have := P.hβg₁ x.1; linarith have hden2 : (0 : ℝ) < (P.g₁ x.1 - P.β) ^ 2 := by positivity have hdenΔ : (0 : ℝ) < (P.g₁ x.1 - P.β * Δ lam x) ^ 2 := by have hdne : P.g₁ x.1 - P.β * Δ lam x ≠ 0 := by rcases Δ_mem lam x with h | h <;> rw [h] <;> · have := P.hβg₁ x.1; have := P.hβ; intro hc; nlinarith positivity rw [hghat, P.gPertV_true_sub lam x] have hsq : (P.g₁ x.1 * (P.α + P.β) * Δ lam x / (P.g₁ x.1 - P.β * Δ lam x)) ^ 2 = P.g₁ x.1 ^ 2 * (P.α + P.β) ^ 2 / (P.g₁ x.1 - P.β * Δ lam x) ^ 2 := by rw [div_pow, mul_pow, mul_pow, Δ_sq, mul_one] rw [hsq] have hcmp : (P.g₁ x.1 - P.β) ^ 2 ≤ (P.g₁ x.1 - P.β * Δ lam x) ^ 2 := by have hβ := P.hβ have hβg₁ := P.hβg₁ x.1 have hg₁0 := P.hg₁0 x.1 rcases Δ_mem lam x with h | h · rw [h]; nlinarith · rw [h]; nlinarith refine le_trans ?_ (hg x.1) apply div_le_div_of_nonneg_left (by positivity) hden2 hcmp rw [l2sq] have hsum : ∑ x : C, (P.gPertV lam true x - P.ghatV 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.gPertV lam true x - P.ghatV true x) ^ 2 ≤ (Fintype.card C : ℝ)⁻¹ * ((Fintype.card C : ℝ) * εg) := by apply mul_le_mul_of_nonneg_left hsum; positivity _ = εg := by field_simp