Skip to content

Commit fb1bba2

Browse files
tail expectation formula for non-negative RV
1 parent 3f71083 commit fb1bba2

File tree

2 files changed

+89
-1
lines changed

2 files changed

+89
-1
lines changed

CHANGELOG_UNRELEASED.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
- in `probability.v`:
1414
+ definition `ccdf`
15-
+ lemmas `cdf_fin_num`, `lebesgue_stieltjes_cdf_id`, `cdf_ccdf_1`, `ccdf_fin_num`, `ccdf_nonincreasing`, `cvg_ccdfy0`, `cvg_ccdfNy1`, `ccdf_right_continuous`
15+
+ lemmas `cdf_def`, `cdf_fin_num`, `lebesgue_stieltjes_cdf_id`, `ccdf_def`, `cdf_ccdf_1`, `ccdf_fin_num`, `ccdf_nonincreasing`, `cvg_ccdfy0`, `cvg_ccdfNy1`, `ccdf_right_continuous`, `expectation_nonneg_tail`
1616
+ corollaries `ccdf_cdf_1`, `ccdf_1_cdf`, `cdf_1_ccdf`
1717

1818
- in `num_normedtype.v`:

theories/probability.v

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -169,6 +169,9 @@ Context d {T : measurableType d} {R : realType} (P : probability T R).
169169
Variable X : {RV P >-> R}.
170170
Local Open Scope ereal_scope.
171171

172+
Lemma cdf_def r : cdf X r = P [set x | (X x <= r)%R].
173+
Proof. by[]. Qed.
174+
172175
Lemma cdf_ge0 r : 0 <= cdf X r. Proof. by []. Qed.
173176

174177
Lemma cdf_le1 r : cdf X r <= 1. Proof. exact: probability_le1. Qed.
@@ -353,6 +356,12 @@ Context d {T : measurableType d} {R : realType} (P : probability T R).
353356
Variable X : {RV P >-> R}.
354357
Local Open Scope ereal_scope.
355358

359+
Lemma ccdf_def r : ccdf X r = P [set x | (r < X x)%R].
360+
Proof.
361+
rewrite /ccdf/distribution/pushforward/preimage/=.
362+
by under eq_set do rewrite in_itv/= andbT.
363+
Qed.
364+
356365
Lemma cdf_ccdf_1 r : cdf X r + ccdf X r = 1.
357366
Proof.
358367
rewrite /cdf/ccdf -measureU//= -eq_opE; last exact: disjoint_rays.
@@ -483,6 +492,85 @@ End expectation_lemmas.
483492
#[deprecated(since="mathcomp-analysis 1.8.0", note="renamed to `expectationZl`")]
484493
Notation expectationM := expectationZl (only parsing).
485494

495+
Section tail_expectation_formula.
496+
Local Open Scope ereal_scope.
497+
Context d (T : measurableType d) (R : realType) (P : probability T R).
498+
499+
Let mu : {measure set _ -> \bar R} := @lebesgue_measure R.
500+
501+
Lemma expectation_nonneg_tail (X : {RV P >-> R}) : (forall x, 0 <= X x)%R ->
502+
'E_P[X] = \int[mu]_(r in `[0%R, +oo[) ccdf X r.
503+
Proof.
504+
pose GR := measurableTypeR R.
505+
pose distrX := distribution P X.
506+
pose D : set R := `[0%R, +oo[%classic.
507+
move=> X_ge0.
508+
transitivity (\int[P]_x ((EFin \_ D) \o X) x).
509+
rewrite expectation_def /comp; apply: eq_integral => x _.
510+
by rewrite /D patchE ifT// set_itvE inE /=.
511+
transitivity (\int[distrX]_r (EFin \_ D) r).
512+
rewrite ge0_integral_distribution -?measurable_restrictT /D //.
513+
by apply: erestrict_ge0 => r /=; rewrite in_itv/= andbT lee_fin.
514+
transitivity (\int[distrX]_r (\int[mu]_(s in D) (\1_`]-oo, r[ s)%:E)).
515+
apply: eq_integral => r _.
516+
rewrite integral_indic /D//= setIC -(set_itv_splitI `[0%R, r[).
517+
rewrite lebesgue_measure_itv/= lte_fin patchE.
518+
have [r_pos | r_neg | r0] := ltgtP.
519+
- by rewrite ifT/= -?EFinD ?subr0// inE/= in_itv/= ltW.
520+
- rewrite ifF//; apply/negP.
521+
by rewrite inE/= in_itv/= andbT; apply/negP; rewrite -ltNge.
522+
- by rewrite ifT -r0 // inE /= bound_itvE.
523+
transitivity (\int[distrX]_r (\int[mu]_s (\1_`[0, r[ s)%:E)).
524+
apply: eq_integral => r _; rewrite /D integral_mkcond.
525+
apply: eq_integral => s _ /=.
526+
have [s_ge0 | s_lt0] := (leP 0%R s).
527+
- have [s_ltr | s_ger] := (ltP s r).
528+
+ rewrite indicE mem_set/=; last by rewrite in_itv/= s_ge0 s_ltr.
529+
by rewrite patchE/= ifT ?indicE mem_set//= in_itv/= andbT.
530+
+ rewrite indicE memNset/=; last by
531+
rewrite in_itv/= => /andP [] _ /(le_lt_trans s_ger); rewrite ltxx.
532+
rewrite patchE/= ifT//; last by rewrite mem_set//= in_itv/= andbT.
533+
rewrite indicE memNset//= in_itv/=.
534+
by move=> /(le_lt_trans s_ger); rewrite ltxx.
535+
- rewrite indicE memNset/=; last by
536+
rewrite in_itv/= => /andP [] /(lt_le_trans s_lt0); rewrite ltxx.
537+
rewrite patchE/= ifF// memNset//= in_itv/= andbT.
538+
by move=> /(lt_le_trans s_lt0); rewrite ltxx.
539+
transitivity (\int[mu]_s (\int[distrX]_r (\1_`[0, r[ s)%:E)).
540+
rewrite (fubini_tonelli (fun p : R * GR => (\1_`[0, p.1[ p.2)%:E))//=.
541+
apply: measurableT_comp =>//; apply: measurable_indic =>/=.
542+
pose fsnd := (fun p : R * GR => (0 <= p.2)%R).
543+
pose f21 := (fun p : R * GR => (p.2 < p.1)%R).
544+
have ->: (fun p : R * GR => is_true (p.2 \in `[0%R, p.1[)) =
545+
fsnd @^-1` [set true] `&` f21 @^-1` [set true].
546+
by apply/seteqP; split => p; rewrite in_itv/= => /andP.
547+
apply: measurableI.
548+
- have : measurable_fun setT fsnd by exact: measurable_fun_ler.
549+
by move=> /(_ measurableT [set true]); rewrite setTI; exact.
550+
- have : measurable_fun setT f21 by exact: measurable_fun_ltr.
551+
by move=> /(_ measurableT [set true]); rewrite setTI; exact.
552+
transitivity (\int[mu]_(s in D) (\int[distrX]_r (\1_`[0, r[ s)%:E)).
553+
rewrite [in RHS]integral_mkcond/=.
554+
apply: eq_integral => s _; rewrite patchE /D.
555+
have [s_ge0 | s_lt0] := (leP 0%R s);
556+
first by rewrite ifT// in_setE/= in_itv andbT.
557+
rewrite ifF; last by
558+
rewrite memNset//= in_itv/= ?andbT => /(lt_le_trans s_lt0); rewrite ltxx.
559+
by apply: integral0_eq => r _; rewrite indicE/= memNset//= in_itv/= =>
560+
/andP[] /(lt_le_trans s_lt0); rewrite ltxx.
561+
apply: eq_integral => s; rewrite /D inE/= in_itv/= andbT => s_ge0.
562+
rewrite integral_indic //=.
563+
rewrite /distribution/pushforward/preimage setIT/= ccdf_def.
564+
by under eq_set do rewrite in_itv/= s_ge0.
565+
pose fgts := fun r : R => (s < r)%R.
566+
have : measurable_fun setT fgts by exact: measurable_fun_ltr.
567+
suff ->: (fun r : R => is_true (s \in `[0%R, r[)) = fgts @^-1` [set true].
568+
by move=> /(_ measurableT [set true]); rewrite setTI; exact.
569+
by apply: eq_set => r; rewrite in_itv/= s_ge0.
570+
Qed.
571+
572+
End tail_expectation_formula.
573+
486574
HB.lock Definition covariance {d} {T : measurableType d} {R : realType}
487575
(P : probability T R) (X Y : T -> R) :=
488576
'E_P[(X \- cst (fine 'E_P[X])) * (Y \- cst (fine 'E_P[Y]))]%E.

0 commit comments

Comments
 (0)