Estimation.NPIV.DR

Doubly robust estimation of linear functionals of the NPIV structural function.

Estimator 5 core · 0 supporting Defines estimator-level helpers and local instances for the doubly robust NPIV development. ★ trae_dr_estimator_eq_avg_phi

Defines estimator-level helpers and local instances for the doubly robust NPIV development. The module exposes sample, measure, and inverse-problem-system fields in the form used by the DR rate and limit theorems.

def instMeasurableSpace_𝒲 reviewed
Causalean.Estimation.NPIV.DR

The observation space carries the measurable space stored in the inverse problem system.

Definition (Lean source)
scoped instance instMeasurableSpace_𝒲 {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} (S : InverseProblemSystem Ω μ) : MeasurableSpace S.𝒲 := S.inst𝒲
Causalean.Estimation.NPIV.DR.instMeasurableSpace_𝒲 · Causalean/Estimation/NPIV/DR/Estimator.lean:47 · uses InverseProblemSystem
def instMeasurableSpace_𝒳 reviewed
Causalean.Estimation.NPIV.DR

The covariate space carries the measurable space stored in the inverse problem system.

Definition (Lean source)
scoped instance instMeasurableSpace_𝒳 {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} (S : InverseProblemSystem Ω μ) : MeasurableSpace S.𝒳 := S.inst𝒳
Causalean.Estimation.NPIV.DR.instMeasurableSpace_𝒳 · Causalean/Estimation/NPIV/DR/Estimator.lean:53 · uses InverseProblemSystem
def instMeasurableSpace_𝒵 reviewed
Causalean.Estimation.NPIV.DR

The instrument space carries the measurable space stored in the inverse problem system.

Definition (Lean source)
scoped instance instMeasurableSpace_𝒵 {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} (S : InverseProblemSystem Ω μ) : MeasurableSpace S.𝒵 := S.inst𝒵
Causalean.Estimation.NPIV.DR.instMeasurableSpace_𝒵 · Causalean/Estimation/NPIV/DR/Estimator.lean:59 · uses InverseProblemSystem
def trae_dr_estimator reviewed
Causalean.Estimation.NPIV.DR

One-shot TRAE doubly robust estimator (def:est-trae-dr-estimator):

Definition (Lean source)
noncomputable def trae_dr_estimator {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} (S : InverseProblemSystem Ω μ) {P_W : Measure S.𝒲} (sample : IIDSample Ω S.𝒲 μ P_W) (split : OneShotSplit sample) (h_hat : ℕ → Ω → (S.𝒳 → ℝ)) (q_hat : ℕ → Ω → (S.𝒵 → ℝ)) (n : ℕ) (ω : Ω) : ℝ := ((split.foldB n).card : ℝ)⁻¹ * ∑ i ∈ split.foldB n, S.phiVal (h_hat n ω) (q_hat n ω) (sample.Z i ω)
lemma trae_dr_estimator_eq_avg_phi reviewed
Causalean.Estimation.NPIV.DR

Estimator unfolding. For primal nuisance estimators ĥ_n, indexed by sample size and by outcome, paired with dual nuisance estimators q̂_n, an inverse-problem system, an i.i.d. sample, and a one-shot cross-fitting split, the one-shot TRAE doubly robust estimator evaluated at sample size n and outcome ω equals the average, over the evaluation fold B(n), of the pointwise doubly-robust pseudo-outcome φ_{ĥ_n,q̂_n} computed at each fold member's observation.

Formal statement
Ω :
P_W :
Measure S.𝒲
sample :
IIDSample Ω S.𝒲 μ P_W
split :
h_hat :
ℕ → Ω → (S.𝒳 → ℝ)
q_hat :
ℕ → Ω → (S.𝒵 → ℝ)
n :
ω :
Ω
trae_dr_estimator S sample split h_hat q_hat n ω
= ((split.foldB n).card : ℝ)⁻¹ * ∑ i ∈ split.foldB n, S.phiVal (h_hat n ω) (q_hat n ω) (sample.Z i ω)
Proof (Lean source)
lemma trae_dr_estimator_eq_avg_phi {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} (S : InverseProblemSystem Ω μ) {P_W : Measure S.𝒲} (sample : IIDSample Ω S.𝒲 μ P_W) (split : OneShotSplit sample) (h_hat : ℕ → Ω → (S.𝒳 → ℝ)) (q_hat : ℕ → Ω → (S.𝒵 → ℝ)) (n : ℕ) (ω : Ω) : trae_dr_estimator S sample split h_hat q_hat n ω = ((split.foldB n).card : ℝ)⁻¹ * ∑ i ∈ split.foldB n, S.phiVal (h_hat n ω) (q_hat n ω) (sample.Z i ω) := rfl
Asymptotic­Linear 3 core · 3 supporting States and proves asymptotic linearity for the doubly robust NPIV estimator under bundled oracle-score and remainder conditions. ★ trae_dr_isAsymLinear

States and proves asymptotic linearity for the doubly robust NPIV estimator under bundled oracle-score and remainder conditions. The module identifies the leading score term and controls the nuisance remainder.

def ρ₀ reviewed
Causalean.Estimation.NPIV.DR

Oracle score ρ₀(w) := φ_{h₀, q₀}(w) − θ₀.

Definition (Lean source)
noncomputable def ρ₀ {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} (S : InverseProblemSystem Ω μ) (q₀ : S.𝒵 → ℝ) (w : S.𝒲) : ℝ := S.phiVal S.h₀ q₀ w - S.θ₀
structure TRAEDRRemainderHyps reviewed
Causalean.Estimation.NPIV.DR

The TRAE-DR remainder hypotheses bundle the sufficient conditions under which the doubly-robust TRAE estimator, built from primal nuisance estimators ĥ_n and dual nuisance estimators q̂_n over a cross-fitting split, is asymptotically linear: the fitted primal nuisance is L²-consistent for the truth in probability, likewise for the fitted dual nuisance, both fitted nuisances stay in their respective candidate classes at every sample size and outcome, the √-scaled mixed-bias integral between the two nuisance errors is asymptotically negligible, the centered empirical-process remainder from plugging the fitted nuisances into the oracle score vanishes at the √-rate, and the oracle score has finite variance under the observation law.

Definition (Lean source)
Ω :
q₀ :
S.𝒵 → ℝ
_hq₀ :
S.DualSolution q₀
P_W :
sample :
IIDSample Ω S.𝒲 μ P_W
split :
h_hat :
ℕ → Ω → (S.𝒳 → ℝ)
q_hat :
ℕ → Ω → (S.𝒵 → ℝ)
(i) Primal L² consistency in probability: `‖ĥ_n(X) − h₀(X)‖_{L²(μ)} →ₚ 0`.
primal_l2_consistency :
Tendsto_inProb (fun n ω => (eLpNorm (fun ω' => h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) 2 μ).toReal) (fun _ => 0) μ
(i) Dual L² consistency in probability: `‖q̂_n(Z) − q₀(Z)‖_{L²(μ)} →ₚ 0`.
dual_l2_consistency :
Tendsto_inProb (fun n ω => (eLpNorm (fun ω' => q_hat n ω (S.zOf (S.W ω')) - q₀ (S.zOf (S.W ω'))) 2 μ).toReal) (fun _ => 0) μ
Support condition for the formal mixed-bias identity: the fitted primal and dual nuisance functions lie in the candidate classes for every sample size and outcome.
candidate_mem :
∀ n ω, h_hat n ω ∈ S.Hbar ∧ q_hat n ω ∈ S.Qbar
Unconditional mixed-bias sufficient criterion: scaling the mixed-bias integral by `√|B(n)|` is `o_p(1)` under `μ`. This is the unconditional assumption used here rather than the conditional-on-training-fold hypothesis from the paper statement.
mixed_bias :
IsLittleOp (fun n ω => sqrt ((split.foldB n).card : ℝ) * ∫ ω', (q₀ (S.zOf (S.W ω')) - q_hat n ω (S.zOf (S.W ω'))) * (h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) ∂μ) (fun _ => (1 : ℝ)) μ
Empirical-process / mean-squared-continuity remainder (iii): the centered fold-B sum of `φ̂_n − φ₀` is `o_p(1)` after `√|B(n)|` scaling.
ep_remainder :
IsLittleOp (fun n ω => (sqrt ((split.foldB n).card : ℝ))⁻¹ * ∑ i ∈ split.foldB n, (S.phiVal (h_hat n ω) (q_hat n ω) (sample.Z i ω) - S.phiVal S.h₀ q₀ (sample.Z i ω)) - sqrt ((split.foldB n).card : ℝ) * ∫ ω', (S.phiVal (h_hat n ω) (q_hat n ω) (S.W ω') - S.phiVal S.h₀ q₀ (S.W ω')) ∂μ) (fun _ => (1 : ℝ)) μ
(iv) Finite oracle-score variance: `E[ρ₀² ] < ∞` under `P_W`.
finite_var :
Integrable (fun w => (ρ₀ S q₀ w) ^ 2) P_W
theorem trae_dr_isAsymLinear reviewed
Causalean.Estimation.NPIV.DR

TRAE-DR asymptotic-linearity criterionthm:est-trae-dr-al-criterion. Fix a linear inverse-problem functional system S, an i.i.d. sample, and a one-shot cross-fitting split, and suppose q₀ solves the associated dual moment equation. Given primal nuisance estimators ĥ_n, indexed by sample size and outcome, paired with dual nuisance estimators satisfying the bundled L²-consistency, candidate-membership, mixed-bias, and empirical-process remainder conditions, together with the law bridge identifying the pushforward of μ along the observation map W with the observation law P_W and measurability of the oracle score ρ₀, the TRAE-DR estimator is asymptotically linear at the structural target θ₀, with mean-zero, finite-variance influence function ρ₀ := φ_{h₀,q₀} − θ₀ and vanishing √n-rescaled remainder, indexed along the estimation folds.

Formal statement
Ω :
q₀ :
S.𝒵 → ℝ
hq₀ :
S.DualSolution q₀
P_W :
sample :
IIDSample Ω S.𝒲 μ P_W
split :
h_hat :
ℕ → Ω → (S.𝒳 → ℝ)
q_hat :
ℕ → Ω → (S.𝒵 → ℝ)
_hyps :
TRAEDRRemainderHyps S hq₀ sample split h_hat q_hat
h_law_W :
μ.map S.W = P_W
hρ₀_meas :
Measurable (ρ₀ S q₀)
IsAsymLinear (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ (ρ₀ S q₀) sample split.foldB
Proof (Lean source)
theorem trae_dr_isAsymLinear {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} [IsProbabilityMeasure μ] (S : InverseProblemSystem Ω μ) {q₀ : S.𝒵 → ℝ} (hq₀ : S.DualSolution q₀) {P_W : Measure S.𝒲} [IsProbabilityMeasure P_W] (sample : IIDSample Ω S.𝒲 μ P_W) (split : OneShotSplit sample) (h_hat : ℕ → Ω → (S.𝒳 → ℝ)) (q_hat : ℕ → Ω → (S.𝒵 → ℝ)) (_hyps : TRAEDRRemainderHyps S hq₀ sample split h_hat q_hat) (h_law_W : μ.map S.W = P_W) (hρ₀_meas : Measurable (ρ₀ S q₀)) : IsAsymLinear (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ (ρ₀ S q₀) sample split.foldB := by refine ⟨mean_zero_of_DualSolution S hq₀ h_law_W hρ₀_meas, _hyps.finite_var, ?_⟩ have h_add_one : ∀ {Xn Yn : ℕ → Ω → ℝ}, IsLittleOp Xn (fun _ => (1 : ℝ)) μ → IsLittleOp Yn (fun _ => (1 : ℝ)) μ → IsLittleOp (fun n ω => Xn n ω + Yn n ω) (fun _ => (1 : ℝ)) μ := by intro Xn Yn hX hY ε hε rw [ENNReal.tendsto_nhds_zero] intro δ hδ by_cases hδtop : δ = ⊤ · filter_upwards with n simp [hδtop] have hδpos : 0 < δ.toReal := ENNReal.toReal_pos (ne_of_gt hδ) hδtop let α : ℝ := δ.toReal / 4 have hαpos : 0 < α := by dsimp [α] linarith let A : ℕ → Set Ω := fun n => {ω | (ε / 2) * (1 : ℝ) < |Xn n ω|} let B : ℕ → Set Ω := fun n => {ω | (ε / 2) * (1 : ℝ) < |Yn n ω|} let C : ℕ → Set Ω := fun n => {ω | ε * (1 : ℝ) < |Xn n ω + Yn n ω|} have hXevent_le := (ENNReal.tendsto_nhds_zero.mp (hX (ε / 2) (by linarith))) (ofReal α) (ENNReal.ofReal_pos.mpr hαpos) have hYevent_le := (ENNReal.tendsto_nhds_zero.mp (hY (ε / 2) (by linarith))) (ofReal α) (ENNReal.ofReal_pos.mpr hαpos) have htwo_alpha_lt_delta : ofReal (2 * α) < δ := by rw [ENNReal.ofReal_lt_iff_lt_toReal] · dsimp [α] linarith · dsimp [α] linarith [le_of_lt hδpos] · exact hδtop filter_upwards [hXevent_le, hYevent_le] with n hXA hYB have hsubset : C n ⊆ A n ∪ B n := by intro ω hω by_contra hnot have hnotA : ¬ ε / 2 < |Xn n ω| := by intro hx exact hnot (inl (by simpa [A] using hx)) have hnotB : ¬ ε / 2 < |Yn n ω| := by intro hy exact hnot (inr (by simpa [B] using hy)) have hXle : |Xn n ω| ≤ ε / 2 := le_of_not_gt hnotA have hYle : |Yn n ω| ≤ ε / 2 := le_of_not_gt hnotB have hsum : |Xn n ω + Yn n ω| ≤ ε := by calc |Xn n ω + Yn n ω| ≤ |Xn n ω| + |Yn n ω| := abs_add_le _ _ _ ≤ ε / 2 + ε / 2 := add_le_add hXle hYle _ = ε := by ring exact not_lt_of_ge hsum (by simpa [C] using hω) exact le_of_lt <| calc μ {ω | ε * (fun _ => (1 : ℝ)) n < |Xn n ω + Yn n ω|} = μ (C n) := by simp [C] _ ≤ μ (A n ∪ B n) := measure_mono hsubset _ ≤ μ (A n) + μ (B n) := MeasureTheory.measure_union_le (A n) (B n) _ ≤ ofReal α + ofReal α := add_le_add hXA hYB _ = ofReal (2 * α) := by rw [← ENNReal.ofReal_add] · congr 1 ring · linarith · linarith _ < δ := htwo_alpha_lt_delta let EP : ℕ → Ω → ℝ := fun n ω => (sqrt ((split.foldB n).card : ℝ))⁻¹ * ∑ i ∈ split.foldB n, (S.phiVal (h_hat n ω) (q_hat n ω) (sample.Z i ω) - S.phiVal S.h₀ q₀ (sample.Z i ω)) - sqrt ((split.foldB n).card : ℝ) * ∫ ω', (S.phiVal (h_hat n ω) (q_hat n ω) (S.W ω') - S.phiVal S.h₀ q₀ (S.W ω')) ∂μ let MB : ℕ → Ω → ℝ := fun n ω => sqrt ((split.foldB n).card : ℝ) * ∫ ω', (q₀ (S.zOf (S.W ω')) - q_hat n ω (S.zOf (S.W ω'))) * (h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) ∂μ have hsum : IsLittleOp (fun n ω => EP n ω + MB n ω) (fun _ => (1 : ℝ)) μ := by exact h_add_one _hyps.ep_remainder _hyps.mixed_bias have h_eq : ∀ n ω, sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) - (sqrt ((split.foldB n).card : ℝ))⁻¹ * ∑ i ∈ split.foldB n, ρ₀ S q₀ (sample.Z i ω) = EP n ω + MB n ω := by intro n ω have hrange := _hyps.candidate_mem n ω have hphi_hat_int : Integrable (fun ω' => S.phiVal (h_hat n ω) (q_hat n ω) (S.W ω')) μ := by unfold InverseProblemSystem.phiVal exact ((S.integrable_m_e (h_hat n ω) hrange.1).add (S.integrable_m (q_hat n ω) hrange.2)).sub (S.integrable_qh (h_hat n ω) hrange.1 (q_hat n ω) hrange.2) have hphi_zero_int : Integrable (fun ω' => S.phiVal S.h₀ q₀ (S.W ω')) μ := by unfold InverseProblemSystem.phiVal exact ((S.integrable_m_e S.h₀ S.h₀_mem).add (S.integrable_m q₀ hq₀.mem)).sub (S.integrable_qh S.h₀ S.h₀_mem q₀ hq₀.mem) have h_int_eq : (∫ ω', (S.phiVal (h_hat n ω) (q_hat n ω) (S.W ω') - S.phiVal S.h₀ q₀ (S.W ω')) ∂μ) = ∫ ω', (q₀ (S.zOf (S.W ω')) - q_hat n ω (S.zOf (S.W ω'))) * (h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) ∂μ := by rw [integral_sub hphi_hat_int hphi_zero_int] have hmb := mixed_bias_identity S hq₀ hrange.1 hrange.2 have hzero := Θ_q₀_eq_θ₀ S hq₀ S.h₀_mem unfold InverseProblemSystem.Θ InverseProblemSystem.phi at hmb hzero rw [hzero] simpa [InverseProblemSystem.X, InverseProblemSystem.Z] using hmb by_cases hcard : (split.foldB n).card = 0 · have hempty : split.foldB n = ∅ := Finset.card_eq_zero.mp hcard simp [EP, MB, h_int_eq, trae_dr_estimator, ρ₀, hempty] · have hcard_pos_nat : 0 < (split.foldB n).card := Nat.pos_of_ne_zero hcard have hcard_pos_real : 0 < ((split.foldB n).card : ℝ) := by exact_mod_cast hcard_pos_nat have hsqrt_ne : sqrt ((split.foldB n).card : ℝ) ≠ 0 := by intro hsqrt_zero have hzero_real : ((split.foldB n).card : ℝ) = 0 := by rw [← Real.mul_self_sqrt (le_of_lt hcard_pos_real), hsqrt_zero, zero_mul] exact (ne_of_gt hcard_pos_real) hzero_real have hsqrt_sq : sqrt ((split.foldB n).card : ℝ) * sqrt ((split.foldB n).card : ℝ) = ((split.foldB n).card : ℝ) := Real.mul_self_sqrt (by positivity) have h_sqrt_mul_inv_card : sqrt ((split.foldB n).card : ℝ) * (((split.foldB n).card : ℝ)⁻¹) = (sqrt ((split.foldB n).card : ℝ))⁻¹ := by let r : ℝ := sqrt ((split.foldB n).card : ℝ) let c : ℝ := ((split.foldB n).card : ℝ) have hr : r ≠ 0 := by simpa [r] using hsqrt_ne have hsq : r * r = c := by simp [r, c, hsqrt_sq] change r * c⁻¹ = r⁻¹ rw [← hsq] field_simp [hr] have h_inv_sqrt_mul_card : (sqrt ((split.foldB n).card : ℝ))⁻¹ * ((split.foldB n).card : ℝ) = sqrt ((split.foldB n).card : ℝ) := by let r : ℝ := sqrt ((split.foldB n).card : ℝ) let c : ℝ := ((split.foldB n).card : ℝ) have hr : r ≠ 0 := by simpa [r] using hsqrt_ne have hsq : r * r = c := by simp [r, c, hsqrt_sq] change r⁻¹ * c = r rw [← hsq] field_simp [hr] simp [EP, MB, h_int_eq, trae_dr_estimator, ρ₀, Finset.sum_sub_distrib] rw [mul_sub] rw [← mul_assoc (sqrt ((split.foldB n).card : ℝ)) (((split.foldB n).card : ℝ)⁻¹) (∑ i ∈ split.foldB n, S.phiVal (h_hat n ω) (q_hat n ω) (sample.Z i ω))] rw [h_sqrt_mul_inv_card] rw [mul_sub] rw [← mul_assoc (sqrt ((split.foldB n).card : ℝ))⁻¹ ((split.foldB n).card : ℝ) S.θ₀] rw [h_inv_sqrt_mul_card] ring convert hsum using 1 ext n ω exact h_eq n ω
3 supporting declarations (lemmas, instances)
  • mean_zero_of_DualSolution_mu theorem — Mean-zero of the oracle score under the structural law μ.
    Ω :
    q₀ :
    S.𝒵 → ℝ
    hq₀ :
    S.DualSolution q₀
    ∫ ω, ρ₀ S q₀ (S.W ω) ∂μ = 0
    Proof (Lean source)
    theorem mean_zero_of_DualSolution_mu {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} [IsProbabilityMeasure μ] (S : InverseProblemSystem Ω μ) {q₀ : S.𝒵 → ℝ} (hq₀ : S.DualSolution q₀) : ∫ ω, ρ₀ S q₀ (S.W ω) ∂μ = 0 := by have hphi_int : Integrable (fun ω => S.phiVal S.h₀ q₀ (S.W ω)) μ := by unfold InverseProblemSystem.phiVal exact ((S.integrable_m_e S.h₀ S.h₀_mem).add (S.integrable_m q₀ hq₀.mem)).sub (S.integrable_qh S.h₀ S.h₀_mem q₀ hq₀.mem) have htheta_int : Integrable (fun _ : Ω => S.θ₀) μ := integrable_const _ have hzero := Θ_q₀_eq_θ₀ S hq₀ S.h₀_mem unfold ρ₀ rw [integral_sub hphi_int htheta_int] unfold InverseProblemSystem.Θ InverseProblemSystem.phi at hzero rw [hzero] simp
    Causalean.Estimation.NPIV.DR.mean_zero_of_DualSolution_mu · Causalean/Estimation/NPIV/DR/AsymptoticLinear.lean:73
  • mean_zero_of_DualSolution theorem — Mean-zero of the oracle score under the observation law P_W.
    Ω :
    q₀ :
    S.𝒵 → ℝ
    hq₀ :
    S.DualSolution q₀
    P_W :
    Measure S.𝒲
    h_law_W :
    μ.map S.W = P_W
    hρ₀_meas :
    Measurable (ρ₀ S q₀)
    ∫ w, ρ₀ S q₀ w ∂P_W = 0
    Proof (Lean source)
    theorem mean_zero_of_DualSolution {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} [IsProbabilityMeasure μ] (S : InverseProblemSystem Ω μ) {q₀ : S.𝒵 → ℝ} (hq₀ : S.DualSolution q₀) {P_W : Measure S.𝒲} (h_law_W : μ.map S.W = P_W) (hρ₀_meas : Measurable (ρ₀ S q₀)) : ∫ w, ρ₀ S q₀ w ∂P_W = 0 := by rw [← h_law_W] rw [MeasureTheory.integral_map S.meas_W.aemeasurable hρ₀_meas.aestronglyMeasurable] exact mean_zero_of_DualSolution_mu S hq₀
    Causalean.Estimation.NPIV.DR.mean_zero_of_DualSolution · Causalean/Estimation/NPIV/DR/AsymptoticLinear.lean:97
  • mixed_bias_sufficient theorem — Sufficient condition for the mixed-bias hypothesis using either operator side (the displayed min{·,·} form in thm:est-trae-dr-al-criterion):
    Ω :
    q₀ :
    S.𝒵 → ℝ
    P_W :
    sample :
    IIDSample Ω S.𝒲 μ P_W
    split :
    h_hat :
    ℕ → Ω → (S.𝒳 → ℝ)
    q_hat :
    ℕ → Ω → (S.𝒵 → ℝ)
    bnd :
    ℕ → Ω → ℝ
    _h_dom :
    ∀ n ω,
    |∫ ω', (q₀ (S.zOf (S.W ω')) - q_hat n ω (S.zOf (S.W ω'))) * (h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) ∂μ|
    ≤ bnd n ω
    _h_rate :
    IsLittleOp (fun n ω => sqrt ((split.foldB n).card : ℝ) * bnd n ω) (fun _ => (1 : ℝ)) μ
    IsLittleOp (fun n ω => sqrt ((split.foldB n).card : ℝ) * ∫ ω', (q₀ (S.zOf (S.W ω')) - q_hat n ω (S.zOf (S.W ω'))) * (h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) ∂μ) (fun _ => (1 : ℝ)) μ
    Proof (Lean source)
    theorem mixed_bias_sufficient {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} [IsProbabilityMeasure μ] (S : InverseProblemSystem Ω μ) {q₀ : S.𝒵 → ℝ} {P_W : Measure S.𝒲} [IsProbabilityMeasure P_W] (sample : IIDSample Ω S.𝒲 μ P_W) (split : OneShotSplit sample) (h_hat : ℕ → Ω → (S.𝒳 → ℝ)) (q_hat : ℕ → Ω → (S.𝒵 → ℝ)) (bnd : ℕ → Ω → ℝ) (_h_dom : ∀ n ω, |∫ ω', (q₀ (S.zOf (S.W ω')) - q_hat n ω (S.zOf (S.W ω'))) * (h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) ∂μ| ≤ bnd n ω) (_h_rate : IsLittleOp (fun n ω => sqrt ((split.foldB n).card : ℝ) * bnd n ω) (fun _ => (1 : ℝ)) μ) : IsLittleOp (fun n ω => sqrt ((split.foldB n).card : ℝ) * ∫ ω', (q₀ (S.zOf (S.W ω')) - q_hat n ω (S.zOf (S.W ω'))) * (h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) ∂μ) (fun _ => (1 : ℝ)) μ := by -- Reference to `sample` is intentional: the conclusion is the precise -- form of the `mixed_bias` field above, indexed by `split.foldB`. let _ := sample intro ε hε rw [ENNReal.tendsto_nhds_zero] intro δ hδ have hrate := (ENNReal.tendsto_nhds_zero.mp (_h_rate ε hε)) δ hδ filter_upwards [hrate] with n hn refine (measure_mono ?_).trans hn intro ω hω simp only [Set.mem_setOf_eq, mul_one] at hω ⊢ let bias : ℝ := ∫ ω', (q₀ (S.zOf (S.W ω')) - q_hat n ω (S.zOf (S.W ω'))) * (h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) ∂μ have h_bnd_nonneg : 0 ≤ bnd n ω := le_trans (abs_nonneg bias) (_h_dom n ω) have h_sqrt_nonneg : 0 ≤ sqrt ((split.foldB n).card : ℝ) := Real.sqrt_nonneg _ have h_abs_bias : |sqrt ((split.foldB n).card : ℝ) * bias| = sqrt ((split.foldB n).card : ℝ) * |bias| := by rw [abs_mul, abs_of_nonneg h_sqrt_nonneg] have h_abs_bnd : |sqrt ((split.foldB n).card : ℝ) * bnd n ω| = sqrt ((split.foldB n).card : ℝ) * bnd n ω := by rw [abs_of_nonneg (mul_nonneg h_sqrt_nonneg h_bnd_nonneg)] rw [show (∫ ω', (q₀ (S.zOf (S.W ω')) - q_hat n ω (S.zOf (S.W ω'))) * (h_hat n ω (S.xOf (S.W ω')) - S.h₀ (S.xOf (S.W ω'))) ∂μ) = bias from rfl, h_abs_bias] at hω rw [h_abs_bnd] exact lt_of_lt_of_le hω (mul_le_mul_of_nonneg_left (_h_dom n ω) h_sqrt_nonneg)
    Causalean.Estimation.NPIV.DR.mixed_bias_sufficient · Causalean/Estimation/NPIV/DR/AsymptoticLinear.lean:395
Asymptotic­Normal 3 core · 0 supporting Derives asymptotic normality for the doubly robust NPIV estimator from asymptotic linearity, Gaussian score limits, and studentization/continuous-mapping inputs. ★ trae_dr_asymp_normal★ trae_dr_studentized★ trae_dr_wald_coverage

Derives asymptotic normality for the doubly robust NPIV estimator from asymptotic linearity, Gaussian score limits, and studentization/continuous-mapping inputs.

theorem trae_dr_asymp_normal reviewed
Causalean.Estimation.NPIV.DR

TRAE-DR asymptotic normalitythm:est-trae-dr-asymp-normal. Under the dual-solution hypothesis on q₀, primal nuisance estimators ĥ_n, indexed by sample size and outcome, satisfying — together with the paired dual estimators — the bundled TRAE-DR remainder conditions, and the law bridge identifying the pushforward of μ along the observation map W with the observation law P_W, suppose further that the √n-rescaled estimator sequence is almost-everywhere measurable at every sample size and the normalized influence-function partial sum is almost-everywhere measurable at every sample size. Then the rescaled TRAE-DR estimator converges in distribution, along the estimation-fold sizes, to the centered Gaussian law with variance σ₀² := ∫ ρ₀(w)² dP_W.

Formal statement
Ω :
q₀ :
S.𝒵 → ℝ
hq₀ :
S.DualSolution q₀
P_W :
sample :
IIDSample Ω S.𝒲 μ P_W
split :
h_hat :
ℕ → Ω → (S.𝒳 → ℝ)
q_hat :
ℕ → Ω → (S.𝒵 → ℝ)
_hyps :
TRAEDRRemainderHyps S hq₀ sample split h_hat q_hat
h_law_W :
μ.map S.W = P_W
_h_ρ₀_meas :
Measurable (ρ₀ S q₀)
h_meas_θ :
∀ n,
AEMeasurable (IsAsymLinear.rescaledEstimator (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ split.foldB n) μ
_h_meas_sum :
∀ n, AEMeasurable (IsAsymLinear.normalizedSum sample (ρ₀ S q₀) split.foldB n) μ
Tendsto_dist (IsAsymLinear.rescaledEstimator (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ split.foldB) (gaussianMeasure 0 (∫ w, (ρ₀ S q₀ w) ^ 2 ∂P_W)) μ h_meas_θ
Proof (Lean source)
theorem trae_dr_asymp_normal {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} [IsProbabilityMeasure μ] (S : InverseProblemSystem Ω μ) {q₀ : S.𝒵 → ℝ} (hq₀ : S.DualSolution q₀) {P_W : Measure S.𝒲} [IsProbabilityMeasure P_W] (sample : IIDSample Ω S.𝒲 μ P_W) (split : OneShotSplit sample) (h_hat : ℕ → Ω → (S.𝒳 → ℝ)) (q_hat : ℕ → Ω → (S.𝒵 → ℝ)) (_hyps : TRAEDRRemainderHyps S hq₀ sample split h_hat q_hat) (h_law_W : μ.map S.W = P_W) (_h_ρ₀_meas : Measurable (ρ₀ S q₀)) (h_meas_θ : ∀ n, AEMeasurable (IsAsymLinear.rescaledEstimator (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ split.foldB n) μ) (_h_meas_sum : ∀ n, AEMeasurable (IsAsymLinear.normalizedSum sample (ρ₀ S q₀) split.foldB n) μ) : Tendsto_dist (IsAsymLinear.rescaledEstimator (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ split.foldB) (gaussianMeasure 0 (∫ w, (ρ₀ S q₀ w) ^ 2 ∂P_W)) μ h_meas_θ := by have hAL : IsAsymLinear (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ (ρ₀ S q₀) sample split.foldB := by exact trae_dr_isAsymLinear S hq₀ sample split h_hat q_hat _hyps h_law_W _h_ρ₀_meas exact hAL.tendsto_normal_foldB split _h_ρ₀_meas h_meas_θ _h_meas_sum
theorem trae_dr_studentized reviewed
Causalean.Estimation.NPIV.DR

Studentized TRAE-DR convergence. Fix a dual solution q₀ of the inverse-problem system S together with a first-stage nuisance-estimator sequence ĥ_n, and suppose the sample's W-marginal is identified as P_W. Assume the efficient influence function ρ₀ is measurable and the rescaled estimator sequence, its normalized-sum representation, and the studentized statistic itself are all almost-everywhere measurable at every sample size. If the asymptotic standard deviation σ₀ is strictly positive with σ₀² = ∫ ρ₀(w)² dP_W and a variance-estimator sequence σ̂_n converges to σ₀ in probability, then the studentized statistic √|B(n)| · (θ̂_n − θ₀) / σ̂_n converges in distribution to the standard normal law N(0, 1).

Formal statement
Ω :
q₀ :
S.𝒵 → ℝ
hq₀ :
S.DualSolution q₀
P_W :
sample :
IIDSample Ω S.𝒲 μ P_W
split :
h_hat :
ℕ → Ω → (S.𝒳 → ℝ)
q_hat :
ℕ → Ω → (S.𝒵 → ℝ)
_hyps :
TRAEDRRemainderHyps S hq₀ sample split h_hat q_hat
h_law_W :
μ.map S.W = P_W
σ_hat_n :
ℕ → Ω → ℝ
σ₀ :
_hσ₀_pos :
0 < σ₀
_hσ_eq :
σ₀ ^ 2 = ∫ w, (ρ₀ S q₀ w) ^ 2 ∂P_W
_hσ_consistent :
Tendsto_inProb σ_hat_n (fun _ => σ₀) μ
h_ρ₀_meas :
Measurable (ρ₀ S q₀)
h_meas_θ :
∀ n,
AEMeasurable (IsAsymLinear.rescaledEstimator (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ split.foldB n) μ
h_meas_sum :
∀ n, AEMeasurable (IsAsymLinear.normalizedSum sample (ρ₀ S q₀) split.foldB n) μ
h_studentized_meas :
∀ n,
AEMeasurable (fun ω => sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) / σ_hat_n n ω) μ
Tendsto_dist (fun n ω => sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) / σ_hat_n n ω) (gaussianMeasure 0 1) μ h_studentized_meas
Proof (Lean source)
theorem trae_dr_studentized {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} [IsProbabilityMeasure μ] (S : InverseProblemSystem Ω μ) {q₀ : S.𝒵 → ℝ} (hq₀ : S.DualSolution q₀) {P_W : Measure S.𝒲} [IsProbabilityMeasure P_W] (sample : IIDSample Ω S.𝒲 μ P_W) (split : OneShotSplit sample) (h_hat : ℕ → Ω → (S.𝒳 → ℝ)) (q_hat : ℕ → Ω → (S.𝒵 → ℝ)) (_hyps : TRAEDRRemainderHyps S hq₀ sample split h_hat q_hat) (h_law_W : μ.map S.W = P_W) (σ_hat_n : ℕ → Ω → ℝ) (σ₀ : ℝ) (_hσ₀_pos : 0 < σ₀) (_hσ_eq : σ₀ ^ 2 = ∫ w, (ρ₀ S q₀ w) ^ 2 ∂P_W) (_hσ_consistent : Tendsto_inProb σ_hat_n (fun _ => σ₀) μ) (h_ρ₀_meas : Measurable (ρ₀ S q₀)) (h_meas_θ : ∀ n, AEMeasurable (IsAsymLinear.rescaledEstimator (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ split.foldB n) μ) (h_meas_sum : ∀ n, AEMeasurable (IsAsymLinear.normalizedSum sample (ρ₀ S q₀) split.foldB n) μ) (h_studentized_meas : ∀ n, AEMeasurable (fun ω => sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) / σ_hat_n n ω) μ) : Tendsto_dist (fun n ω => sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) / σ_hat_n n ω) (gaussianMeasure 0 1) μ h_studentized_meas := by let Xn : ℕ → Ω → ℝ := IsAsymLinear.rescaledEstimator (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ split.foldB have hAN : Tendsto_dist Xn (gaussianMeasure 0 (σ₀ ^ 2)) μ h_meas_θ := by have h := trae_dr_asymp_normal S hq₀ sample split h_hat q_hat _hyps h_law_W h_ρ₀_meas h_meas_θ h_meas_sum simpa [Xn, _hσ_eq] using h -- The studentized statistic is `Xn / σ̂ₙ`; apply the generic studentized CLT -- (`Tendsto_dist.div_tendsto_inProb_gaussian` in `Causalean/Stat/Studentize.lean`). have hdiv : ∀ n, AEMeasurable (fun ω => Xn n ω / σ_hat_n n ω) μ := by intro n simpa [Xn, IsAsymLinear.rescaledEstimator] using h_studentized_meas n have hres := Tendsto_dist.div_tendsto_inProb_gaussian _hσ₀_pos h_meas_θ hAN _hσ_consistent hdiv simpa [Xn, IsAsymLinear.rescaledEstimator] using hres
theorem trae_dr_wald_coverage reviewed
Causalean.Estimation.NPIV.DR

Wald asymptotic coveragethm:est-trae-dr-asymp-normal. Under the same setup as trae_dr_studentizeda dual solution q₀ of the inverse-problem system S, a first-stage nuisance-estimator sequence ĥ_n, the sample's W-marginal identified as P_W, measurability of ρ₀, of the rescaled estimator, of its normalized-sum representation, and of the studentized statistic, and a variance-estimator sequence σ̂_n that is consistent in probability for a strictly positive σ₀ satisfying σ₀² = ∫ ρ₀(w)² dP_W — fix any strictly positive real number z. Then provided the coverage probability of the Wald interval θ̂_n ± z · σ̂_n / √|B(n)| and the probability that the studentized statistic lands in [-z, z] become asymptotically equal, the Wald-interval coverage probability converges to the standard-normal mass 2 Φ(z) − 1 on [-z, z].

Formal statement
Ω :
q₀ :
S.𝒵 → ℝ
hq₀ :
S.DualSolution q₀
P_W :
sample :
IIDSample Ω S.𝒲 μ P_W
split :
h_hat :
ℕ → Ω → (S.𝒳 → ℝ)
q_hat :
ℕ → Ω → (S.𝒵 → ℝ)
_hyps :
TRAEDRRemainderHyps S hq₀ sample split h_hat q_hat
h_law_W :
μ.map S.W = P_W
σ_hat_n :
ℕ → Ω → ℝ
σ₀ :
_hσ₀_pos :
0 < σ₀
_hσ_eq :
σ₀ ^ 2 = ∫ w, (ρ₀ S q₀ w) ^ 2 ∂P_W
_hσ_consistent :
Tendsto_inProb σ_hat_n (fun _ => σ₀) μ
h_ρ₀_meas :
Measurable (ρ₀ S q₀)
h_meas_θ :
∀ n,
AEMeasurable (IsAsymLinear.rescaledEstimator (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ split.foldB n) μ
h_meas_sum :
∀ n, AEMeasurable (IsAsymLinear.normalizedSum sample (ρ₀ S q₀) split.foldB n) μ
h_studentized_meas :
∀ n,
AEMeasurable (fun ω => sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) / σ_hat_n n ω) μ
z :
_hz_pos :
0 < z
Tendsto (fun n => (μ {ω | |trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀| ≤ z * σ_hat_n n ω / sqrt ((split.foldB n).card : ℝ)}).toReal - (μ {ω | sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) / σ_hat_n n ω ∈ Icc (-z) z}).toReal) atTop (𝓝 0) → Tendsto (fun n => (μ {ω | |trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀| ≤ z * σ_hat_n n ω / sqrt ((split.foldB n).card : ℝ)}).toReal) atTop (𝓝 ((gaussianMeasure 0 1) (Icc (-z) z)).toReal)
Proof (Lean source)
theorem trae_dr_wald_coverage {Ω : Type*} [MeasurableSpace Ω] {μ : Measure Ω} [IsProbabilityMeasure μ] (S : InverseProblemSystem Ω μ) {q₀ : S.𝒵 → ℝ} (hq₀ : S.DualSolution q₀) {P_W : Measure S.𝒲} [IsProbabilityMeasure P_W] (sample : IIDSample Ω S.𝒲 μ P_W) (split : OneShotSplit sample) (h_hat : ℕ → Ω → (S.𝒳 → ℝ)) (q_hat : ℕ → Ω → (S.𝒵 → ℝ)) (_hyps : TRAEDRRemainderHyps S hq₀ sample split h_hat q_hat) (h_law_W : μ.map S.W = P_W) (σ_hat_n : ℕ → Ω → ℝ) (σ₀ : ℝ) (_hσ₀_pos : 0 < σ₀) (_hσ_eq : σ₀ ^ 2 = ∫ w, (ρ₀ S q₀ w) ^ 2 ∂P_W) (_hσ_consistent : Tendsto_inProb σ_hat_n (fun _ => σ₀) μ) (h_ρ₀_meas : Measurable (ρ₀ S q₀)) (h_meas_θ : ∀ n, AEMeasurable (IsAsymLinear.rescaledEstimator (trae_dr_estimator S sample split h_hat q_hat) S.θ₀ split.foldB n) μ) (h_meas_sum : ∀ n, AEMeasurable (IsAsymLinear.normalizedSum sample (ρ₀ S q₀) split.foldB n) μ) (h_studentized_meas : ∀ n, AEMeasurable (fun ω => sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) / σ_hat_n n ω) μ) (z : ℝ) (_hz_pos : 0 < z) : Tendsto (fun n => (μ {ω | |trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀| ≤ z * σ_hat_n n ω / sqrt ((split.foldB n).card : ℝ)}).toReal - (μ {ω | sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) / σ_hat_n n ω ∈ Icc (-z) z}).toReal) atTop (𝓝 0) → Tendsto (fun n => (μ {ω | |trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀| ≤ z * σ_hat_n n ω / sqrt ((split.foldB n).card : ℝ)}).toReal) atTop (𝓝 ((gaussianMeasure 0 1) (Icc (-z) z)).toReal) := by intro h_wald_studentized let studentized : ℕ → Ω → ℝ := fun n ω => sqrt ((split.foldB n).card : ℝ) * (trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀) / σ_hat_n n ω let coverProb : ℕ → ℝ := fun n => (μ {ω | |trae_dr_estimator S sample split h_hat q_hat n ω - S.θ₀| ≤ z * σ_hat_n n ω / sqrt ((split.foldB n).card : ℝ)}).toReal let studProb : ℕ → ℝ := fun n => (μ {ω | studentized n ω ∈ Icc (-z) z}).toReal change Tendsto (fun n => coverProb n - studProb n) atTop (𝓝 0) at h_wald_studentized have hStud : Tendsto_dist studentized (gaussianMeasure 0 1) μ h_studentized_meas := by simpa [studentized] using trae_dr_studentized S hq₀ sample split h_hat q_hat _hyps h_law_W σ_hat_n σ₀ _hσ₀_pos _hσ_eq _hσ_consistent h_ρ₀_meas h_meas_θ h_meas_sum h_studentized_meas -- The portmanteau argument is now the generic `Tendsto_dist.wald_coverage` -- (in `Causalean/Stat/Studentize.lean`); the studentized limit `hStud` and the -- event-equivalence bridge `h_wald_studentized` are the only inputs. have hcover := Tendsto_dist.wald_coverage h_studentized_meas hStud _hz_pos coverProb h_wald_studentized simpa [coverProb] using hcover