Skip to content

Commit 78d68d4

Browse files
Tail expectation formula for a non-negative random variable (#1731)
* tail expectation formula for non-negative RV --------- Co-authored-by: Reynald Affeldt <[email protected]>
1 parent f167d6d commit 78d68d4

File tree

2 files changed

+78
-15
lines changed

2 files changed

+78
-15
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 `lebesgue_stieltjes_cdf_id`, `cdf_ccdf_1`, `ccdf_nonincreasing`, `cvg_ccdfy0`, `cvg_ccdfNy1`, `ccdf_right_continuous`, `ge0_expectation_ccdf`
1616
+ corollaries `ccdf_cdf_1`, `ccdf_1_cdf`, `cdf_1_ccdf`
1717

1818
- in `num_normedtype.v`:

theories/probability.v

Lines changed: 77 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -173,11 +173,6 @@ Lemma cdf_ge0 r : 0 <= cdf X r. Proof. by []. Qed.
173173

174174
Lemma cdf_le1 r : cdf X r <= 1. Proof. exact: probability_le1. Qed.
175175

176-
Lemma cdf_fin_num r : cdf X r \is a fin_num.
177-
Proof.
178-
by rewrite ge0_fin_numE ?cdf_ge0//; exact/(le_lt_trans (cdf_le1 r))/ltry.
179-
Qed.
180-
181176
Lemma cdf_nondecreasing : nondecreasing_fun (cdf X).
182177
Proof. by move=> r s rs; rewrite le_measure ?inE//; exact: subitvPr. Qed.
183178

@@ -305,13 +300,13 @@ Let fcdf r := fine (cdf (idTR : {RV P >-> R}) r).
305300

306301
Let fcdf_nd : nondecreasing fcdf.
307302
Proof.
308-
by move=> *; apply: fine_le; [exact: cdf_fin_num.. | exact: cdf_nondecreasing].
303+
by move=> *; rewrite fine_le ?fin_num_measure// cdf_nondecreasing.
309304
Qed.
310305

311306
Let fcdf_rc : right_continuous fcdf.
312307
Proof.
313308
move=> a; apply: fine_cvg.
314-
by rewrite fineK; [exact: cdf_right_continuous | exact: cdf_fin_num].
309+
by rewrite fineK ?fin_num_measure//; exact: cdf_right_continuous.
315310
Qed.
316311

317312
#[local] HB.instance Definition _ :=
@@ -335,7 +330,7 @@ rewrite /lebesgue_stieltjes_measure /measure_extension/=.
335330
rewrite measurable_mu_extE/=; last exact: is_ocitv.
336331
have [ab | ba] := leP a b; last first.
337332
by rewrite set_itv_ge ?wlength0 ?measure0// bnd_simp -leNgt ltW.
338-
rewrite wlength_itv_bnd// EFinB !fineK ?cdf_fin_num//.
333+
rewrite wlength_itv_bnd// EFinB !fineK ?fin_num_measure//.
339334
rewrite /cdf /distribution /pushforward !preimage_id.
340335
have : `]a, b]%classic = `]-oo, b] `\` `]-oo, a] => [|->].
341336
by rewrite -[RHS]setCK setCD setCitvl setUC -[LHS]setCK setCitv.
@@ -355,21 +350,18 @@ Local Open Scope ereal_scope.
355350

356351
Lemma cdf_ccdf_1 r : cdf X r + ccdf X r = 1.
357352
Proof.
358-
rewrite /cdf/ccdf -measureU//= -eq_opE; last exact: disjoint_rays.
353+
rewrite /cdf /ccdf -measureU//= -eq_opE; last exact: disjoint_rays.
359354
by rewrite itv_setU_setT probability_setT.
360355
Qed.
361356

362357
Corollary ccdf_cdf_1 r : ccdf X r + cdf X r = 1.
363358
Proof. by rewrite -(cdf_ccdf_1 r) addeC. Qed.
364359

365360
Corollary ccdf_1_cdf r : ccdf X r = 1 - cdf X r.
366-
Proof. by rewrite -(ccdf_cdf_1 r) addeK ?cdf_fin_num. Qed.
367-
368-
Lemma ccdf_fin_num r : ccdf X r \is a fin_num.
369-
Proof. by rewrite ccdf_1_cdf fin_numB cdf_fin_num -fine1. Qed.
361+
Proof. by rewrite -(ccdf_cdf_1 r) addeK ?fin_num_measure. Qed.
370362

371363
Corollary cdf_1_ccdf r : cdf X r = 1 - ccdf X r.
372-
Proof. by rewrite -(cdf_ccdf_1 r) addeK ?ccdf_fin_num. Qed.
364+
Proof. by rewrite -(cdf_ccdf_1 r) addeK ?fin_num_measure. Qed.
373365

374366
Lemma ccdf_nonincreasing : nonincreasing_fun (ccdf X).
375367
Proof. by move=> r s rs; rewrite le_measure ?inE//; exact: subitvPl. Qed.
@@ -483,6 +475,77 @@ End expectation_lemmas.
483475
#[deprecated(since="mathcomp-analysis 1.8.0", note="renamed to `expectationZl`")]
484476
Notation expectationM := expectationZl (only parsing).
485477

478+
Section tail_expectation_formula.
479+
Local Open Scope ereal_scope.
480+
Context d (T : measurableType d) (R : realType) (P : probability T R).
481+
482+
Let mu : {measure set _ -> \bar R} := @lebesgue_measure R.
483+
484+
Lemma ge0_expectation_ccdf (X : {RV P >-> R}) : (forall x, 0 <= X x)%R ->
485+
'E_P[X] = \int[mu]_(r in `[0%R, +oo[) ccdf X r.
486+
Proof.
487+
pose GR := measurableTypeR R.
488+
pose distrX := distribution P X.
489+
pose D : set R := `[0%R, +oo[%classic.
490+
move=> X_ge0.
491+
transitivity (\int[P]_x ((EFin \_ D) \o X) x).
492+
rewrite expectation_def; apply: eq_integral => x _ /=.
493+
by rewrite /D patchE ifT// set_itvE inE /=.
494+
transitivity (\int[distrX]_r (EFin \_ D) r).
495+
rewrite ge0_integral_distribution// -?measurable_restrictT /D// => r.
496+
by apply: erestrict_ge0 => s /=; rewrite in_itv/= andbT lee_fin.
497+
transitivity (\int[distrX]_r (\int[mu]_(s in D) (\1_`]-oo, r[ s)%:E)).
498+
apply: eq_integral => r _.
499+
rewrite integral_indic /D//= setIC -(set_itv_splitI `[0%R, r[).
500+
rewrite lebesgue_measure_itv/= lte_fin patchE.
501+
have [r_pos | r_neg | <-] := ltgtP.
502+
- by rewrite mem_set ?EFinN ?sube0//= in_itv/= ltW.
503+
- by rewrite memNset//= in_itv/= leNgt r_neg.
504+
- by rewrite mem_set//= in_itv/= lexx.
505+
transitivity (\int[distrX]_r (\int[mu]_s (\1_`[0, r[ s)%:E)).
506+
apply: eq_integral => r _; rewrite /D integral_mkcond.
507+
apply: eq_integral => /= s _.
508+
have [s_ge0 | s_lt0] := leP 0%R s.
509+
- have [s_ltr | s_ger] := ltP s r.
510+
+ rewrite indicE mem_set/=; last by rewrite in_itv/= s_ge0 s_ltr.
511+
by rewrite patchE/= ifT ?indicE mem_set//= in_itv/= andbT.
512+
+ rewrite indicE memNset/=; last by rewrite in_itv/= s_ge0 ltNge s_ger.
513+
rewrite patchE ifT//; last by rewrite mem_set//= in_itv/= andbT.
514+
by rewrite indicE memNset//= in_itv/= ltNge s_ger.
515+
- rewrite indicE memNset/=; last by rewrite in_itv/= leNgt s_lt0.
516+
by rewrite patchE/= ifF// memNset//= in_itv/= andbT leNgt s_lt0.
517+
transitivity (\int[mu]_s (\int[distrX]_r (\1_`[0, r[ s)%:E)).
518+
rewrite (fubini_tonelli (fun p : R * GR => (\1_`[0, p.1[ p.2)%:E))//=.
519+
apply/measurable_EFinP/measurable_indic => /=.
520+
pose fsnd (p : R * GR) := (0 <= p.2)%R.
521+
pose f21 (p : R * GR) := (p.2 < p.1)%R.
522+
rewrite [X in measurable X](_ : _ =
523+
fsnd @^-1` [set true] `&` f21 @^-1` [set true]); last first.
524+
by apply/seteqP; split => p; rewrite in_itv/= => /andP.
525+
apply: measurableI.
526+
- have : measurable_fun setT fsnd by exact: measurable_fun_ler.
527+
by move=> /(_ measurableT [set true]); rewrite setTI; exact.
528+
- have : measurable_fun setT f21 by exact: measurable_fun_ltr.
529+
by move=> /(_ measurableT [set true]); rewrite setTI; exact.
530+
transitivity (\int[mu]_(s in D) (\int[distrX]_r (\1_`[0, r[ s)%:E)).
531+
rewrite [in RHS]integral_mkcond/=.
532+
apply: eq_integral => s _; rewrite patchE /D.
533+
have [s0|s0] := leP 0%R s; first by rewrite mem_set//= in_itv/= s0.
534+
rewrite memNset//= ?in_itv/= ?leNgt ?s0//.
535+
by apply: integral0_eq => r _; rewrite indicE/= memNset//= in_itv/= leNgt s0.
536+
apply: eq_integral => s; rewrite /D inE/= in_itv/= andbT => s_ge0.
537+
rewrite integral_indic//=.
538+
rewrite /ccdf setIT set_itvoy; congr distribution.
539+
by apply/funext => r/=; rewrite in_itv/= s_ge0.
540+
pose fgts (r : R) := (s < r)%R.
541+
have : measurable_fun setT fgts by exact: measurable_fun_ltr.
542+
rewrite [X in measurable X](_ : _ = fgts @^-1` [set true]).
543+
by move=> /(_ measurableT [set true]); rewrite setTI; exact.
544+
by apply: eq_set => r; rewrite in_itv/= s_ge0.
545+
Qed.
546+
547+
End tail_expectation_formula.
548+
486549
HB.lock Definition covariance {d} {T : measurableType d} {R : realType}
487550
(P : probability T R) (X Y : T -> R) :=
488551
'E_P[(X \- cst (fine 'E_P[X])) * (Y \- cst (fine 'E_P[Y]))]%E.

0 commit comments

Comments
 (0)