Estimation.ATE.Score.AIPWScoreL2
Proves L² continuity of the AIPW score on the a.e.
Continuity 2 core · 4 supporting Supplies the analytic integrability and norm-transport layer for AIPW score continuity. ★ residual_mul_e_error_isLittleOp_one
Supplies the analytic integrability and norm-transport layer for AIPW score
continuity. It proves square-integrability of the true residual envelope,
transports L² norms along the covariate projection, and proves the truncation
estimate residual_mul_e_error_isLittleOp_one. The final score-level
stochastic-order theorem is in Truncation.
For a potential-outcome system with a standard-Borel sample space and finite probability measure, a measurable covariate space, and a back-door estimation system, the squared residual-sum integrand maps each observed triple to the square of the sum of the absolute residuals from its two true outcome regressions.
For a potential-outcome system and covariate space, a back-door estimation system, an overlap level, strict overlap, the back-door identification assumptions, square-integrability of the factual outcome, square-integrability of both potential outcomes, a sequence of nuisance estimates, membership of every estimate in the overlap-restricted nuisance class, square-integrability of every propensity error, and a vanishing propensity-error rate, the product of the outcome-residual envelope and the propensity error also vanishes in probability.
Formal statement
Proof (Lean source)
4 supporting declarations (lemmas, instances)
-
yMuVal_residual_measlemma — For an average-treatment-effect backdoor estimation system, the sum of the absolute treated and control outcome residuals is measurable under the observed-data law.hypothesesProof (Lean source)
lemma yMuVal_residual_meas (S : BackdoorEstimationSystem P γ) : Measurable (fun z : γ × Bool × ℝ => |projY z - S.μ_val true (projX z)| + |projY z - S.μ_val false (projX z)|) := by have hx : Measurable (fun z : γ × Bool × ℝ => projX z) := by simpa [projX] using (measurable_fst : Measurable (fun z : γ × Bool × ℝ => z.1)) have hy : Measurable (fun z : γ × Bool × ℝ => projY z) := by simpa [projY] using (measurable_snd.snd : Measurable (fun z : γ × Bool × ℝ => z.2.2)) have hμt : Measurable (fun z : γ × Bool × ℝ => S.μ_val true (projX z)) := (S.μ_meas true).comp hx have hμf : Measurable (fun z : γ × Bool × ℝ => S.μ_val false (projX z)) := (S.μ_meas false).comp hx exact (continuous_abs.measurable.comp (hy.sub hμt)).add (continuous_abs.measurable.comp (hy.sub hμf)) -
yMuVal_residual_sq_integrabletheorem — The cross-term integrand is P_Z-integrable, with the bound coming from (a+b)² ≤ 2(a² + b²) and Y² ∈ L¹(P_Z), μ_val(d, X)² ∈ L¹(P_Z).hypothesesγ :sharedType u_1S :hA :S.toPOBackdoorSystem.Assumptionsh_y2 :Integrable (fun ω => (S.toPOBackdoorSystem.factualY ω) ^ 2) P.μh_yd2 :∀ d : Bool, Integrable (fun ω => (S.toPOBackdoorSystem.YofD d ω) ^ 2) P.μconclusionIntegrable (S.YMuVal_residual_sq) S.P_ZProof (Lean source)
theorem yMuVal_residual_sq_integrable (S : BackdoorEstimationSystem P γ) (hA : S.toPOBackdoorSystem.Assumptions) (h_y2 : Integrable (fun ω => (S.toPOBackdoorSystem.factualY ω) ^ 2) P.μ) (h_yd2 : ∀ d : Bool, Integrable (fun ω => (S.toPOBackdoorSystem.YofD d ω) ^ 2) P.μ) : Integrable (S.YMuVal_residual_sq) S.P_Z := by have _ := hA have hY_L2 : MemLp S.toPOBackdoorSystem.factualY 2 P.μ := by exact (memLp_two_iff_integrable_sq S.toPOBackdoorSystem.measurable_factualY.aestronglyMeasurable).2 h_y2 have hμ_L2 : ∀ d : Bool, MemLp (fun ω => S.μ_val d (S.toPOBackdoorSystem.factualX ω)) 2 P.μ := by intro d have hYd_L2 : MemLp (S.toPOBackdoorSystem.YofD d) 2 P.μ := by exact (memLp_two_iff_integrable_sq (S.toPOBackdoorSystem.measurable_YofD d).aestronglyMeasurable).2 (h_yd2 d) have hcond_L2 : MemLp (P.μ[S.toPOBackdoorSystem.YofD d | S.toPOBackdoorSystem.sigmaX]) 2 P.μ := hYd_L2.condExp one_le_two exact hcond_L2.ae_eq (S.μ_compat hA d) let g : γ × Bool × ℝ → ℝ := fun z => |projY z - S.μ_val true (projX z)| + |projY z - S.μ_val false (projX z)| have hg_meas : Measurable g := by have hx : Measurable (fun z : γ × Bool × ℝ => projX z) := by simpa [projX] using (measurable_fst : Measurable (fun z : γ × Bool × ℝ => z.1)) have hy : Measurable (fun z : γ × Bool × ℝ => projY z) := by simpa [projY] using (measurable_snd.snd : Measurable (fun z : γ × Bool × ℝ => z.2.2)) have hμt : Measurable (fun z : γ × Bool × ℝ => S.μ_val true (projX z)) := (S.μ_meas true).comp hx have hμf : Measurable (fun z : γ × Bool × ℝ => S.μ_val false (projX z)) := (S.μ_meas false).comp hx exact (continuous_abs.measurable.comp (hy.sub hμt)).add (continuous_abs.measurable.comp (hy.sub hμf)) have hg_comp_L2 : MemLp (fun ω => g (S.factualZ ω)) 2 P.μ := by have ht : MemLp (fun ω => S.toPOBackdoorSystem.factualY ω - S.μ_val true (S.toPOBackdoorSystem.factualX ω)) 2 P.μ := hY_L2.sub (hμ_L2 true) have hf : MemLp (fun ω => S.toPOBackdoorSystem.factualY ω - S.μ_val false (S.toPOBackdoorSystem.factualX ω)) 2 P.μ := hY_L2.sub (hμ_L2 false) exact ht.norm.add hf.norm have hg_L2 : MemLp g 2 S.P_Z := by rw [BackdoorEstimationSystem.P_Z] exact (memLp_map_measure_iff hg_meas.aestronglyMeasurable S.measurable_factualZ.aemeasurable).2 hg_comp_L2 exact hg_L2.integrable_sq -
yMuVal_residual_memLplemma — For an average-treatment-effect backdoor estimation system, if its causal assumptions hold, the factual outcome has an integrable square, and each potential outcome has an integrable square, then the sum of the absolute treated and control residuals is square-integrable under the observed-data law.hypothesesγ :sharedType u_1S :hA :S.toPOBackdoorSystem.Assumptionsh_y2 :Integrable (fun ω => (S.toPOBackdoorSystem.factualY ω) ^ 2) P.μh_yd2 :∀ d : Bool, Integrable (fun ω => (S.toPOBackdoorSystem.YofD d ω) ^ 2) P.μProof (Lean source)
lemma yMuVal_residual_memLp (S : BackdoorEstimationSystem P γ) (hA : S.toPOBackdoorSystem.Assumptions) (h_y2 : Integrable (fun ω => (S.toPOBackdoorSystem.factualY ω) ^ 2) P.μ) (h_yd2 : ∀ d : Bool, Integrable (fun ω => (S.toPOBackdoorSystem.YofD d ω) ^ 2) P.μ) : MemLp (fun z : γ × Bool × ℝ => |projY z - S.μ_val true (projX z)| + |projY z - S.μ_val false (projX z)|) 2 S.P_Z := by exact (memLp_two_iff_integrable_sq (yMuVal_residual_meas S).aestronglyMeasurable).2 (yMuVal_residual_sq_integrable S hA h_y2 h_yd2) -
eLpNorm_comp_projX_eqlemma — For an average-treatment-effect backdoor estimation system and a covariate function, if the function is almost-everywhere strongly measurable under the covariate law, then its second-order norm after projection from observed data equals its norm under the covariate law.hypothesesProof (Lean source)
lemma eLpNorm_comp_projX_eq (S : BackdoorEstimationSystem P γ) {f : γ → ℝ} (hf : AEStronglyMeasurable f S.P_X) : eLpNorm (fun z : γ × Bool × ℝ => f (projX z)) 2 S.P_Z = eLpNorm f 2 S.P_X := by have hfmap : AEStronglyMeasurable f (S.P_Z.map (fun z : γ × Bool × ℝ => z.1)) := by simpa [BackdoorEstimationSystem.P_Z_map_projX_eq_P_X S] using hf rw [← BackdoorEstimationSystem.P_Z_map_projX_eq_P_X S] simpa [projX, Function.comp_def] using (MeasureTheory.eLpNorm_map_measure (μ := S.P_Z) (f := fun z : γ × Bool × ℝ => z.1) (g := f) (p := 2) hfmap measurable_fst.aemeasurable).symm
Pointwise 2 core · 1 supporting Establishes the pointwise algebra behind AIPW score continuity. ★ aipw_score_diff_pointwise_bound
Establishes the pointwise algebra behind AIPW score continuity. It defines the
overlap envelope K_AIPW and proves aipw_score_diff_pointwise_bound, which
controls the score difference by outcome-regression errors and a
residual-weighted propensity error. Integration and stochastic truncation are
handled by the subsequent files.
For a real number, the AIPW Lipschitz constant is .
Definition (Lean source)
For a potential-outcome system and covariate space, a back-door estimation system, an overlap level, strict overlap, a candidate nuisance specification, and its membership in the overlap-restricted nuisance class, the absolute augmented inverse-probability score error is almost surely bounded by the overlap Lipschitz constant times the two outcome-regression errors plus the outcome-residual envelope times the propensity error.
Formal statement
Proof (Lean source)
1 supporting declaration (lemmas, instances)
-
K_AIPW_one_lelemma — For a strictly positive overlap margin, the associated augmented inverse-probability weighting constant is at least one.Proof (Lean source)
lemma K_AIPW_one_le {ε : ℝ} (hε : 0 < ε) : 1 ≤ K_AIPW ε := by unfold K_AIPW field_simp [hε.ne'] nlinarith [sq_nonneg ε]
Truncation 1 core · 1 supporting Combines the pointwise AIPW bound and the residual truncation estimate into the headline L² stochastic-continuity results. ★ aipw_score_diff_isLittleOp_one
Combines the pointwise AIPW bound and the residual truncation estimate into the
headline L² stochastic-continuity results. It proves
aipw_score_diff_isLittleOp_one and its almost-everywhere overlap variant, the
forms consumed by the ATE double-machine-learning argument.
Fix strict overlap at level ε, the back-door identification assumptions, and finite second moments of the observed and potential outcomes. For a sequence of nuisance estimators η̂ such that every realization lies in the ε-overlap L² nuisance class, with outcome-regression errors in L²(P_X) at every horizon and realization and propensity errors in L²(P_X) at every horizon and realization, if the outcome-regression error converges to zero in L²(P_X) in probability and the propensity error converges to zero in L²(P_X) in probability, then the L²(P_Z) norm of the AIPW score difference between the estimated and true nuisance converges to zero in probability.
Formal statement
Proof (Lean source)
1 supporting declaration (lemmas, instances)
-
aipw_score_diff_isLittleOp_one_of_aetheorem — Fix strict overlap, the back-door assumptions, and finite outcome second moments. If the true nuisance is in the good set, the fitted nuisance and its regression and propensity errors satisfy the good-set conditions almost surely at each horizon, and the two nuisance errors vanish in probability, then the AIPW score difference vanishes in L² in probability.hypothesesγ :sharedType u_1S :ε :ℝhη₀_mem :S.η₀ ∈ H_ε_aeL2 S εh_overlap :S.StrictOverlap εhA :S.toPOBackdoorSystem.Assumptionsh_y2 :Integrable (fun ω => (S.toPOBackdoorSystem.factualY ω) ^ 2) P.μh_yd2 :∀ d : Bool, Integrable (fun ω => (S.toPOBackdoorSystem.YofD d ω) ^ 2) P.μη_hat :ℕ → P.Ω → NuisanceVec γh_in_H :∀ n, ∀ᵐ ω ∂P.μ, η_hat n ω ∈ H_ε_aeL2 S εh_mu_memLp :∀ n, ∀ᵐ ω ∂P.μ, ∀ a, MemLp (fun x => (η_hat n ω).μ_fn a x - S.μ_val a x) 2 S.P_Xh_e_memLp :∀ n, ∀ᵐ ω ∂P.μ, MemLp (fun x => (η_hat n ω).e_fn x - S.e_val x) 2 S.P_Xh_mu_rate :∀ a : Bool,IsLittleOp (fun n ω => (eLpNorm (fun x => (η_hat n ω).μ_fn a x - S.μ_val a x) 2 S.P_X).toReal) (fun _ => (1 : ℝ)) P.μh_e_rate :IsLittleOp (fun n ω => (eLpNorm (fun x => (η_hat n ω).e_fn x - S.e_val x) 2 S.P_X).toReal) (fun _ => (1 : ℝ)) P.μconclusionIsLittleOp (fun n ω => (eLpNorm (fun z => aipwMomentFunctional (η_hat n ω) z S.θ₀ - aipwMomentFunctional S.η₀ z S.θ₀) 2 S.P_Z).toReal) (fun _ => (1 : ℝ)) P.μProof (Lean source)
theorem aipw_score_diff_isLittleOp_one_of_ae (S : BackdoorEstimationSystem P γ) {ε : ℝ} (hη₀_mem : S.η₀ ∈ H_ε_aeL2 S ε) (h_overlap : S.StrictOverlap ε) (hA : S.toPOBackdoorSystem.Assumptions) (h_y2 : Integrable (fun ω => (S.toPOBackdoorSystem.factualY ω) ^ 2) P.μ) (h_yd2 : ∀ d : Bool, Integrable (fun ω => (S.toPOBackdoorSystem.YofD d ω) ^ 2) P.μ) (η_hat : ℕ → P.Ω → NuisanceVec γ) (h_in_H : ∀ n, ∀ᵐ ω ∂P.μ, η_hat n ω ∈ H_ε_aeL2 S ε) (h_mu_memLp : ∀ n, ∀ᵐ ω ∂P.μ, ∀ a, MemLp (fun x => (η_hat n ω).μ_fn a x - S.μ_val a x) 2 S.P_X) (h_e_memLp : ∀ n, ∀ᵐ ω ∂P.μ, MemLp (fun x => (η_hat n ω).e_fn x - S.e_val x) 2 S.P_X) (h_mu_rate : ∀ a : Bool, IsLittleOp (fun n ω => (eLpNorm (fun x => (η_hat n ω).μ_fn a x - S.μ_val a x) 2 S.P_X).toReal) (fun _ => (1 : ℝ)) P.μ) (h_e_rate : IsLittleOp (fun n ω => (eLpNorm (fun x => (η_hat n ω).e_fn x - S.e_val x) 2 S.P_X).toReal) (fun _ => (1 : ℝ)) P.μ) : IsLittleOp (fun n ω => (eLpNorm (fun z => aipwMomentFunctional (η_hat n ω) z S.θ₀ - aipwMomentFunctional S.η₀ z S.θ₀) 2 S.P_Z).toReal) (fun _ => (1 : ℝ)) P.μ := by classical let good : ℕ → P.Ω → Prop := fun n ω => η_hat n ω ∈ H_ε_aeL2 S ε ∧ (∀ a, MemLp (fun x => (η_hat n ω).μ_fn a x - S.μ_val a x) 2 S.P_X) ∧ MemLp (fun x => (η_hat n ω).e_fn x - S.e_val x) 2 S.P_X let η_safe : ℕ → P.Ω → NuisanceVec γ := fun n ω => if good n ω then η_hat n ω else S.η₀ have hgood : ∀ n, ∀ᵐ ω ∂P.μ, good n ω := by intro n filter_upwards [h_in_H n, h_mu_memLp n, h_e_memLp n] with ω hH hμ he exact ⟨hH, hμ, he⟩ have hsafe_eq : ∀ n, ∀ᵐ ω ∂P.μ, η_safe n ω = η_hat n ω := by intro n filter_upwards [hgood n] with ω hω simp [η_safe, hω] have hsafe_H : ∀ n ω, η_safe n ω ∈ H_ε_aeL2 S ε := by intro n ω by_cases hω : good n ω · simpa [η_safe, hω] using hω.1 · simpa [η_safe, hω] using hη₀_mem have hsafe_μ : ∀ n ω a, MemLp (fun x => (η_safe n ω).μ_fn a x - S.μ_val a x) 2 S.P_X := by intro n ω a by_cases hω : good n ω · simpa [η_safe, hω] using hω.2.1 a · simpa [η_safe, hω, BackdoorEstimationSystem.η₀] have hsafe_e : ∀ n ω, MemLp (fun x => (η_safe n ω).e_fn x - S.e_val x) 2 S.P_X := by intro n ω by_cases hω : good n ω · simpa [η_safe, hω] using hω.2.2 · simpa [η_safe, hω, BackdoorEstimationSystem.η₀] have transfer : ∀ {f g : ℕ → P.Ω → ℝ} {r : ℕ → ℝ}, (∀ n, ∀ᵐ ω ∂P.μ, f n ω = g n ω) → IsLittleOp g r P.μ → IsLittleOp f r P.μ := by intro f g r hfg hg apply IsLittleOp.of_eq_on_asymptotic ?_ hg have hzero : (fun n => P.μ {ω | f n ω ≠ g n ω}) = fun _ => 0 := by funext n exact ae_iff.mp (hfg n) rw [hzero] exact tendsto_const_nhds have hsafe_mu_rate : ∀ a : Bool, IsLittleOp (fun n ω => (eLpNorm (fun x => (η_safe n ω).μ_fn a x - S.μ_val a x) 2 S.P_X).toReal) (fun _ => (1 : ℝ)) P.μ := by intro a apply transfer ?_ (h_mu_rate a) intro n filter_upwards [hsafe_eq n] with ω hω simp [hω] have hsafe_e_rate : IsLittleOp (fun n ω => (eLpNorm (fun x => (η_safe n ω).e_fn x - S.e_val x) 2 S.P_X).toReal) (fun _ => (1 : ℝ)) P.μ := by apply transfer ?_ h_e_rate intro n filter_upwards [hsafe_eq n] with ω hω simp [hω] have hsafe_score := aipw_score_diff_isLittleOp_one S h_overlap hA h_y2 h_yd2 η_safe hsafe_H hsafe_μ hsafe_e hsafe_mu_rate hsafe_e_rate apply transfer ?_ hsafe_score intro n filter_upwards [hsafe_eq n] with ω hω simp [hω]