# 有限ドメインの確率論のCoq実装を読む
## 一般的な確率空間の話
**標本空間**と呼ばれる集合 $Ω$,**事象** (*event*) のなす集合族 $\mathcal{B} ⊆ 2^Ω$,**確率測度** $P : \mathcal{B} → [0, 1]$ からなる $(Ω, \mathcal{B}, P)$ で
- $P(Ω) = 1$
- 可算加法性: $∀(A : \mathbf{N} → 2^Ω). (∀i∀j ∈ \mathbf{N}. i ≠ j ⇒ A_i ∩ A_j = ∅) ⇒ P(⋃_{i ∈ \mathbf{N}} A_i) = ∑_{i = 1}^{∞} P(A_i)$
を満たすものを**確率空間**と呼ぶ.
$Ω$ が有限の場合は簡単.例えばサイコロの場合は $Ω := \{1, 2, 3, 4, 5, 6\}$,$\mathcal{B} := 2^Ω$,$P(A) := |A|/6$ で,「出た目が偶数である」ことに対応する事象が $A_{\mathrm{even}} := \{2, 4, 6\}$ で,$P(A_{\mathrm{even}}) = 1/2$.
写像 $X : Ω → \mathbf{R} ∪ \{+∞, -∞\}$ が $∀r ∈ \mathbf{R}. \{ω ∈ Ω | X(ω) > r\} ∈ \mathcal{B}$ を満たすとき,$X$ を**確率変数** (*random variable*) と呼ぶ.$Ω$ が有限の場合は簡単で,例えばサイコロの目の大きさなら単に $X(n) := n$ でよい.
確率変数 $X$ に対して,$\mathrm{E}[X]$ で $X$ の**期待値**を表す.$Ω$ が有限の場合は簡単に定義でき,$\mathrm{E}[X] := ∑_{ω ∈ Ω} P(\{ω\}) \cdot X(ω)$ という具合.例えばサイコロの場合,目の大きさの期待値は $\mathrm{E}[X] = (1 + 2 + 3 + 4 + 5 + 6)/6 = 7/2$.
また,$\mathrm{V}[X]$ で $X$ の**分散** (*variance*) を表す.これも有限の場合は定義が簡単で,$\mathrm{V}[X] := ∑_{ω ∈ Ω} (X(ω) - \mathrm{E}[X])^2$.
確率は,記法として $P[X = a] := P(\{ω ∈ Ω | X(ω) = a\})$ などと拡張される.
## 記法
- ``E `* F``: 直積 $E × F$
- ``E `*T``: $E × T$(T は何かしらの台集合らしい?)
- ``T`* F``: $T × F$
- `Pr d E`: 分布 `d` に於ける事象 `E` の確率
* 分布というものの実体はまだよくわからない.
- `{RV P -> T}`: `T : eqType` 型の値をとる,**ambient distribution** `P` 上を動く確率変数の型
* ambient distributionという用語はよくわからない.何らかの私訳?
- `` `p_X``: `X : {RV P -> R}` なる `P`
- `` `Pr[ X = a ]``: 確率変数 `X` が `a` をとる確率(一般的な記法と同じ)
- `` `Pr_P [ A | B ]``: 事象に対する条件つき確率
- `Z \= X @+ Y`: 「確率変数 `Z` は `X` と `Y` の和である」という命題
- `X \=sum Xs`: 「確率変数 `X` は独立な確率変数列 `Xs` の和である」という命題
- `` `E X``: 確率変数 `X` の期待値(一般的な記法 $\mathrm{E}[X]$ と同じ)
- `` `E_[ X | F ]``: 事象 `F` を前提とする確率変数 `X` の条件つき期待値
- `` `V X``: 確率変数 `X` の分散(一般的な記法 $\mathrm{V}[X]$ と同じ)
- `X _|_ Y | Z`: `Z` の下で `X` と `Y` は条件つき独立(一般的な記法に近い).P(X, Y | Z) = P(X | Z) P(Y | Z)
- `P |= X _|_ Y`: 確率変数 `X` と `Y` は独立である
## 定理
### 期待値の線型性
```coq
Lemma E_sum_2 : X \= X1 @+ X2 -> `E X = `E X1 + `E X2.
```
和の期待値は期待値の和に等しい.
### 独立な確率変数の分散の線型性
```coq
Lemma V_sum_2 : X \= X1 @+ X2 -> P |= X1' _|_ X2' -> `V X = `V X1 + `V X2.
```
### 分散の平均
```coq
Lemma Var_average n (X : {RV (P `^ n) -> R}) Xs (sum_Xs : X \=sum Xs) :
forall sigma2, (forall i, `V (Xs ``_ i) = sigma2) ->
n%:R * `V (X `/ n) = sigma2.
```
- ``P `^ n`` は何か? 分布 `P` の確率変数が `n` 個独立に動いたときの分布?
- ``` ``_``` は何か? 列に対する添字アクセス?
- `e %: T` は型強制っぽい?
$∀σ_2. (∀i. V[\boldsymbol{X}_i] = σ_2) ⇒ n \cdot V[X / n] = σ_2$
分散が全て $σ_2$ であるような確率変数の列に対し,その相加平均の分散を取った確率変数は分散が $σ / n$.要するに “平均を取ると散らばり具合が低減する”.
### 事象集合に対する確率に関する不等式
```coq
Lemma Pr_bigcup (B : finType) (p : pred B) F :
Pr (\bigcup_(i | p i) F i) <= \sum_(i | p i) Pr (F i).
```
$P(⋃_{i ∈ \{n | p(n)\}} F_i) \leq ∑_{i ∈ \{n | p(n)\}} P(F_i)$
わりと自明.
### 「Booleの等式」
```coq
Lemma Boole_eq (I : finType) (F : I -> {set A}) :
(forall i j, i != j -> [disjoint F i & F j]) ->
Pr (\bigcup_(i in I) F i) = \sum_(i in I) Pr (F i).
```
$(∀i∀j. i ≠ j ⇒ F_i ∩ F_j = ∅) ⇒ P(⋃_{i ∈ I} F_i) = ∑_{i ∈ I} P(F_i)$
これもわりと自明.要するにどの2者も排反な事象の集合の確率はそれぞれの確率の和になる.
### 事象集合の分割に関する等式
```coq
Lemma total_prob (I : finType) (E : {set A}) (F : I -> {set A}) :
(forall i j, i != j -> [disjoint F i & F j]) ->
cover (F @: I) = [set: A] ->
Pr E = \sum_(i in I) Pr (E :&: F i).
```
- `{set A}` や `[set: A]` は何か?
* mathcompの記法らしい?: https://math-comp.github.io/htmldoc/mathcomp.ssreflect.finset.html
> [set: T] or setT == the full set (the A containing all x : T).
- `{set A}` は有限型 `A` に対しその要素からなる集合全体につく型.気持ちとしては冪集合的なものらしい.要するにここでは $E ⊆ A$.
- `cover` や `@:` は何か?
* 上記ページに以下の記述あり:
> `f @: A == the image set of the collective predicate A by f.`
像 $f[A]$ らしい.
> `Definition cover P := \bigcup_(B in P) B.`
- `:&:` は何か?
> A :&: B == the intersection of A and B.
$(∀i∀j. i ≠ j ⇒ F_i ∩ F_j = ∅) ⇒ ⋃_{B ∈ F[I]} B = A ⇒ P(E) = ∑_{i ∈ I} P(E ∩ F_i)$
$⋃_{B ∈ F[I]} B$ はつまり $⋃_{i ∈ I} F_i$.前件は要するに $\{F_i\}_{i ∈ I}$ が $A$ を分割した商集合であると言っている.命題自体は,直観的にはわりと自明そう.
### 条件つき確率が満たす性質
```coq
Section bayes_extended.
Variables (I : finType) (E : {set A}) (F : I -> {set A}).
Hypothesis dis : forall i j, i != j -> [disjoint F i & F j].
Hypothesis cov : cover (F @: I) = [set: A].
Lemma total_prob_cond :
Pr d E = \sum_(i in I) `Pr_[E | F i] * Pr d (F i).
(中略)
End bayes_extended.
```
$(∀i∀j. i ≠ j ⇒ F_i ∩ F_j = ∅)$ と $⋃_{i ∈ I} F_i$ を前提し,$P_d(E) = ∑_{i ∈ I} P[E | F_i] \cdot P_d(F_i)$ を示している.
前節とよく似たことを条件つき確率として言ったもの.
### Bayesの定理
```coq
Lemma Bayes (E F : {set A}) : `Pr_[E | F] = `Pr_[F | E] * Pr d E / Pr d F.
```
一般的なBayesの定理.$P(E | F) = \frac{P(F | E) P(E)}{P(F)}$
条件つき確率は $P(E | F) := \frac{P(E ∩ F)}{P(F)}$ で定められ,“事象 $F$ が成立しているときに $E$ も成立している確率” のこと.
したがって上記補題は単に $P(E | F) P(F) = P(E ∩ F) = P(F | E) P(E)$ の両辺を $P(F) ≠ 0$ なる $P(F)$ で割ると出てくる.
### Bayesの定理の拡張
```coq
Section bayes_extended.
Variables (I : finType) (E : {set A}) (F : I -> {set A}).
Hypothesis dis : forall i j, i != j -> [disjoint F i & F j].
Hypothesis cov : cover (F @: I) = [set: A].
(中略)
Lemma Bayes_extended j :
`Pr_[F j | E] = `Pr_[E | F j] * Pr d (F j) / \sum_(i in I) `Pr_[E | F i] * Pr d (F i).
(中略)
End bayes_extended.
```
$P(F_j | E) = \frac{P(E | F_j) P(F_j)}{∑_{i ∈ I} P(E | F_i) P(F_i)}$
ここに端的な説明があった:
- https://bellcurve.jp/statistics/course/6444.html
### `Pr_bigcup_incl_excl`
```coq
Let SumPrCap (n : nat) (S : 'I_n -> {set A}) (k : nat) :=
\sum_(J in {set 'I_n} | #|J| == k) Pr P (\bigcap_(j in J) S j).
(中略)
Theorem Pr_bigcup_incl_excl n (S : 'I_n -> {set A}) :
Pr P (\bigcup_(i < n) S i) = \sum_(1 <= k < n.+1) ((-1)^(k-1) * SumPrCap S k).
```
- `'I_n` はおそらく $\{1, …, n\}$ のこと? → $\{0, …, n - 1\}$ だった.$\mathbf{I}_n$ と書くことにしよう:
* https://math-comp.github.io/htmldoc/mathcomp.ssreflect.fintype.html
> 'I_n, ordinal n == the finite subType of integers i < n, whose
> enumeration is {0, ..., n.-1}. 'I_n coerces to nat,
> so all the integer arithmetic functions can be used
> with 'I_n.
$\mathit{SumPrCap}(S, k)$ は,族 $\{S_i\}_{i ∈ \mathbf{I}_n}$ のうち $k$ 個の共通部分をとってできる事象の確率の総和をとったもの:
$\mathit{SumPrCap}(S, k) := ∑_{J ∈ \{J ⊆ \mathbf{I}_n | \#J = k\}} P(⋂_{j ∈ J} S_j)$
定理は $P(⋃_{i ∈ \mathbf{I}_n} S_i) = ∑_{k = 1}^{n} (-1)^{k - 1} \mathit{SumPrCap}(S, k)$ という主張.少なくとも自明ではなさそう.
$n = 1$ の場合は $P(S_0) = (-1)^0 \mathit{SumPrCap}(S, 1) = P(S_0)$ なので明らか.
$n = 2$ の場合は $P(S_0 ∪ S_1) = \mathit{SumPrCap}(S, 1) - \mathit{SumPrCap}(S, 2) = (P(S_0) + P(S_1)) - P(S_0 ∩ S_1)$ でこれはたしかにそのとおり.
要するに “ヴェン図の外縁部以外の部分の大きさ” の話をしているらしい.
### `reasoning_by_cases`
```coq
Lemma reasoning_by_cases (U : finType) (P : fdist U)
(A B : finType) (X : {RV P -> A}) (Y : {RV P -> B}) E :
`Pr[ X \in E ] = \sum_(b <- fin_img Y) `Pr[ [% X, Y] \in (E `* [set b])].
```
`fin_img` はどこで定義されているのか調べてもわからなかったが,おそらく単に写像のつくる像だろう.つまり $f$ に対して $\mathop{\mathrm{img}} f := \{f(x) | x ∈ \mathop{\mathrm{dom}} f\}$ を返す.
`[% X, Y]` については記法が以下のように定められている.要するに $ω ↦ (X(ω), Y(ω))$ で定義される確率変数のようだ.
```coq
Section pair_of_RVs.
Variables (U : finType) (P : fdist U).
Variables (A : eqType) (X : {RV P -> A}) (B : eqType) (Y : {RV P -> B}).
Definition RV2 : {RV P -> A * B} := fun x => (X x, Y x).
End pair_of_RVs.
Notation "'[%' x , y , .. , z ']'" := (RV2 .. (RV2 x y) .. z).
```
$P[X ∈ E] = ∑_{b ∈ \mathop{\mathrm{img}} Y} P[(X, Y) ∈ E × \{b\}]$
<!-- $P[X \in E] = P(\{\omega \in \Omega | X(\omega) \in E\})$
$\Omega = \{1, \ldots, 6\}, X(n) := n, E_{\mathrm{even}} = \{2, 4, 6\}$ -->
というわけでわりと直観的には自明そうだ.
### Markovの不等式
```coq
Section markov_inequality.
Variables (U : finType) (P : {fdist U}) (X : {RV P -> R}).
Hypothesis X_ge0 : forall u, 0 <= X u.
(中略)
Lemma markov (r : R) : 0 < r -> `Pr[ X >= r ] <= `E X / r.
(中略)
End markov_inequality.
```
$(∀ω ∈ Ω. X(ω) ≥ 0) ⇒ ∀r ∈ \mathbf{R_{+}}. P[X ≥ r] ≤ \mathrm{E}[X] / r$.
ここに簡潔な説明がある:
- https://manabitimes.jp/math/937
> つまりマルコフの不等式 $P(|X| ≥ a) ≤ \dfrac{E[|X|]}{a}$ は,$∣X∣$ の期待値が大きくなければ $∣X∣$ が大きくなる確率はそんなに高くないことを表しています。
* 実は学部生の頃に所属していた研究室の2年上の先輩による記事.
### Chebyshevの不等式
```coq
Section chebyshev.
Variables (U : finType) (P : fdist U) (X : {RV P -> R}).
Lemma chebyshev_inequality epsilon : 0 < epsilon ->
`Pr[ (Rabs `o (X `-cst `E X)) >= epsilon] <= `V X / epsilon ^ 2.
(中略)
End chebyshev.
```
$P[|X - \mathrm{E}[X]| ≥ ε] ≤ \mathrm{V}[X] / ε^2$.こちらも簡潔に言えば “$X$ が平均から逸脱する確率は,$X$ の分散が大きくなければそれほど大きくはならない” という具合.
### 事象の独立性
```coq
Definition inde_events (E F : {set A}) := Pr d (E :&: F) = Pr d E * Pr d F.
```
事象 $E$ と事象 $F$ が**独立**であるとは,$P(E ∩ F) = P(E) P(F)$ が成り立つことを言う.
### 事象の条件つき独立性
```coq
Definition cinde_events (E F G : {set A}) :=
`Pr_d[ E :&: F | G] = `Pr_d[E | G] * `Pr_d[F | G].
```
事象 $E$ と事象 $F$ が $G$ の下で**条件つき独立**であるとは,$P(E ∩ F | G) = P(E | G) P(F | G)$ が成り立つことを言う.
### `weak_law_of_large_numbers`
```coq
Section weak_law_of_large_numbers.
Local Open Scope vec_ext_scope.
Variables (A : finType) (P : {fdist A}) (n : nat).
Variable Xs : 'rV[{RV P -> R}]_n.+1.
Variable miu : R.
Hypothesis E_Xs : forall i, `E (Xs ``_ i) = miu.
Variable sigma2 : R.
Hypothesis V_Xs : forall i, `V (Xs ``_ i) = sigma2.
Variable X : {RV (P `^ n.+1) -> R}.
Variable X_Xs : X \=sum Xs.
Lemma wlln epsilon :
0 < epsilon ->
`Pr[ (Rabs `o ((X `/ n.+1) `-cst miu)) >= epsilon ] <= sigma2 / (n.+1%:R * epsilon ^ 2).
(中略)
End weak_law_of_large_numbers.
```
有限型 $A$,$A$ の分布 $P$,$(n + 1)$ 個の $P$ 上の確率変数の列 $\boldsymbol{X}$ が
- $∀i. \mathrm{E}[\boldsymbol{X}_i] = μ$
- $∀i. \mathrm{V}[\boldsymbol{X}_i] = σ^2$
とどの要素も相等しい平均 $μ$ と分散 $σ^2$ をもつとき,$X(ω) := ∑_{i = 1}^{n + 1} \boldsymbol{X}_i(ω)$ で確率変数 $X$ を定めると,
$0 < ε ⇒ P[|X / (n + 1) - μ| ≥ ε] ≤ σ^2 / ((n + 1) * ε^2)$
が成り立つという主張.要するにChebyshevの不等式を列に拡張したもので,“同一分布の確率変数の平均をとるとより逸脱しにくくなる” ことを言っていると見ればよさそう.