機械学習で「よく使うけど意味はわからん！」となりがちな共分散を分かりやすく解説

# 共分散とデータ分析
データ分析について勉強していると、**共分散**や**分散共分散行列**という言葉が良く出てきます。
一般的には以下のように**変数同士の相関と関連したイメージ**を持たれている方が多いかと思います
<img width=720 src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/1828204c-c8b7-1a5b-8f9e-264a5b90d8c7.png">


共分散は主成分分析や相関分析、ベイズ推定などの分野で必須とも言える知識ですが、
有名書籍ではさらっと流されている例も多く、

特に以下の**多次元正規分布の分散共分散行列**$\boldsymbol{\Sigma}$をいきなり与えられて、

```math
N(\boldsymbol{x} \mid \boldsymbol{\mu}, \boldsymbol{\Sigma})=\frac{1}{(2\pi)^\frac{D}{2}}\frac{1}{|\boldsymbol{\Sigma}|^\frac{1}{2}} \exp \Bigl(-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^T \boldsymbol{\Sigma}^{-1} (\boldsymbol{x}-\boldsymbol{\mu}) \Bigr)
```

<br>

**「途中式省略しすぎて分からん！」**
<img width="320" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/9c15d5fd-c0fa-d41f-0539-bdcb5d367a23.png">

と面食らってしまった方も多いかと思います。
私も面食らったまま「分からなくても実装出来ればいいや」の精神で放置していました。

というわけで使用頻度の割に**ナゾの概念感が強い**「**共分散**」ですが、故あってじっくり調べることとなったので、世の中の「わからん！」となっている方の**疑問を少しでも解決できるよう、記事にまとめたい**と思います。

# ※注意
私は数学の専門家ではないので、数学的な厳密性は保証できません（ルベーグ積分等の高度な内容にも触れません）。間違いがあればご指摘頂けるとありがたいです。

また、前述の経緯から**途中式をなるべく省略しないこと**を心掛けて記事を書きました。
そのためかなり長いですが、その分**式変形で詰まることなく理解が進む**かと思うので、ぜひ最後まで一読頂ければと思います。

# 前提知識
共分散は**2変数の確率分布において定義される値**となります。

よって**前提知識として以下が必要**となるため、詳しく解説します。

**[・確率分布](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E7%A2%BA%E7%8E%87%E5%88%86%E5%B8%83)**
**[・期待値](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E6%9C%9F%E5%BE%85%E5%80%A4)**
**[・分散](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E5%88%86%E6%95%A3)**
**[・多変数の確率分布と同時確率、周辺確率、条件付き確率](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E5%A4%9A%E5%A4%89%E6%95%B0%E3%81%AE%E7%A2%BA%E7%8E%87%E5%88%86%E5%B8%83)**
**[・多変数の期待値](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E5%A4%9A%E5%A4%89%E6%95%B0%E7%A2%BA%E7%8E%87%E5%88%86%E5%B8%83%E3%81%AE%E6%9C%9F%E5%BE%85%E5%80%A4)**
**[・確率変数の独立](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E7%A2%BA%E7%8E%87%E5%A4%89%E6%95%B0%E3%81%AE%E7%8B%AC%E7%AB%8B)**

既にご存知の内容も多いかもしれませんが、いずれも**統計学における重要な理論**のため、復習も兼ねてご一読頂ければと思います。

## 確率分布
**確率分布**とは、[JI Z 8101-1 : 1999](http://kikakurui.com/z8/Z8101-1-1999-01.html)によると

**「確率変数がある値となる確率，又はある集合に属する確率を与える関数」**

と定義されています。
上記の「関数」は、変数が連続か離散的かで以下のように呼び方が

**変数が連続の場合: 確率密度関数**
**変数が離散的な場合: 確率質量関数**

例えば、変数Xが下図のような確率密度関数p(x)に従う場合、変数xは3付近となる確率が最も高く、そこから離れる値ほど現れる確率が低くなります。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/694a7699-fd52-9078-52cd-4ea987d9aeba.png">
※厳密には確率密度関数p(x)は「変数がxとなる確率」ではなく、「変数が微小範囲x〜x+Δxの間に入る確率 ÷ Δx」であることにご注意ください。「存在確率そのもの」ではなく、存在確率の「密度」です。

また、上記の変数Xのように確率的に発生する変数を**確率変数**と呼びます。

確率変数は一般的に`X`のように**大文字**で表され、確率変数1つ1つの値を`x`のように**小文字**で表します。
`p(x)`のように関数の内部に入れる際は一般的に小文字が使用され、`E(X)`や`V(X)`のように平均や分散を表す際は大文字が使用されます。
（大雑把に理解することが目的であれば、小文字と大文字の違いはそこまで気にしなくとも良いです）

**世の中の多くの現象**はばらつきを持って**確率的に変化する**ため、**確率変数や確率分布はその表現に有用**な理論と言えます。

### 1変数の確率分布
1変数において確率分布は、前述の変数Xのグラフのように**単純な1変数関数**で表すことができます。
例えば使用頻度の高い確率分布である**正規分布**は以下の式で表されます。

```math
p(x)=\frac{1}{\sqrt{2\pi\sigma^2}}\exp\Bigl(-\frac{1}{2\sigma^2}(x-\mu)^2\Bigr)
```
ここで重要な事実として、原理上は確率分布に従う変数であっても、現実世界では有限のデータ（サンプル)しか観測できないため、確率分布の形状を知るためには**限られたサンプルから推定**する必要があります。
<img width="480" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/3e51f973-b7c4-0dec-0b8a-1b089d0c5c9d.png">
共分散も限られたサンプルから求めることができますが（[後述](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E5%AE%9F%E3%83%87%E3%83%BC%E3%82%BF%E3%81%A7%E3%81%AE%E5%85%B1%E5%88%86%E6%95%A3%E3%81%AE%E6%B1%82%E3%82%81%E6%96%B9)）、求めた値は推定値であり、（頻度論における）真の値からは誤差が生じることにご注意ください。特にサンプルが少ないときは誤差が大きくなります

### 確率分布の全定義域での積分
確率分布は「確率を表現する」という特性上、全てのパターンの確率を足し合わせると1になる必要があります。
連続変数の確率分布では、下記のように全定義域（通常は-∞〜+∞）で**積分すると1になる**ことを表します。

```math
\int_{-\infty}^{\infty} p(x)dx=1
```

確率変数が離散変数の場合、下記のように**総和が1**となります。

```math
\sum_x p(x)=1
```
**以降**本記事では、**確率変数が連続変数の場合を中心に**議論を進めます。

## 期待値
期待値`E[f(x)]`とは、ある関数`f(x)`を**確率分布`p(x)`で重み付けした平均**となります。

期待値の定義式は書籍により微妙に異なりますが、
以下の[PRML](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E5%8F%82%E8%80%83%E6%96%87%E7%8C%AE)での定義式が今後の説明がしやすいので、こちらを採用します。
※本記事では連続確率分布を仮定して通常の積分（リーマン積分）で表記します

**- 1変数における期待値の定義**

```math
E[f(x)]=\int_{-\infty}^{\infty} p(x)f(x)dx
```
特に以下の**確率変数自身の期待値**`E[X]`（平均値）が、よく使用されます

**- 確率変数の期待値（平均値）**

```math
E[X]=\int_{-\infty}^{\infty} xp(x)dx
```
上記は確率変数が連続変数の場合の期待値ですが、離散変数の場合以下のように積分が総和に変わります

**- 1変数における期待値の定義（離散変数）**

```math
E[f(x)]=\sum_x p(x)f(x)
```

### 期待値の加法性
期待値には以下の加法性が成り立ちます

```math
E[f(x)+g(x)]=E[f(x)]+E[g(x)]
```
これは以下の式で簡単に証明できます

```math
E[f(x)+g(x)]=\int_{-\infty}^{\infty} p(x)(f(x)+g(x))dx\\
\int_{-\infty}^{\infty} \bigl(p(x)f(x)+p(x)g(x)\bigr)dx\\
\int_{-\infty}^{\infty} p(x)f(x)dx + \int_{-\infty}^{\infty} p(x)g(x)dx\\
=E[f(x)]+E[g(x)]
```

### 定数と期待値
定数`c`の期待値をとると、確率分布`p(x)`の積分が1となる性質から、定数`c`そのものが返されます

```math
E[c]=\int_{-\infty}^{\infty} cp(x)dx\\
=c\int_{-\infty}^{\infty} p(x)dx\\
=c \cdot 1\\
=c
```

また、定数倍した関数の期待値`E[cf(x)]`は、元の期待値Eの定数倍`cE[f(x)]`となります

```math
E[cf(x)]=\int_{-\infty}^{\infty} cf(x)p(x)dx\\
=c\int_{-\infty}^{\infty} f(x)p(x)dx\\
=cE[f(x)]
```

## 分散
分散`V[f(x)]`とは、ある関数`f(x)`が、期待値`E[f(x)]`の周りでどの程度ばらつくかを表す尺度で、以下の式で定義されます。

**- 1変数における分散の定義（連続変数）**

```math
V[f(x)]=E \Bigl[\bigl(f(x)-E[f(x)]\bigr)^2 \Bigr]
```

この式は、以下のように式変形して簡略化すると計算しやすくなります

```math
V[f(x)]=E \Bigl[\bigl(f(x)-E[f(x)]\bigr)^2 \Bigr]\\
=E \Bigl[f(x)^2-2E[f(x)]f(x)+E[f(x)]^2 \Bigr]\\
=E [f(x)^2]-2E\bigl[E[f(x)]f(x)\bigr]+E[f(x)]^2 \cdots期待値の加法性より \\
=E [f(x)^2]-2E[f(x)]E[f(x)]+E[f(x)]^2 \cdots 第二項のE[f(x)]は定数なので外出しできる \\
=E [f(x)^2]-2E[f(x)]^2+E[f(x)]^2 \\
=E [f(x)^2]-E[f(x)]^2
```
### 分散の直感的な理解
一般的によく使用されるのは、確率変数自身の分散

```math
V[X]=E \Bigl[\bigl(X-E[X]\bigr)^2 \Bigr]
```
です。
この式の**直感的な理解**を考えてみます。

上記を文字に起こすと、
「平均からの二乗誤差$(X-E[X])^2$の期待値」
となるので、

**「平均からのずれ」(偏差)の二乗平均をとったもの**

と解釈すると、理解しやすいかと思います。

### 分散の積分表現
確率変数自身の分散は、期待値の定義に従って積分を用いると以下のように表されます。

```math
V[X]=E \Bigl[\bigl(X-E[X]\bigr)^2 \Bigr]\\
=\int_{-\infty}^{\infty} \bigl(x-E[X]\bigr)^2p(x)dx
```
※平均値`E[X]`は積分内では定数として扱えます

### 定数倍の分散
定数倍した関数の分散`V[cf(x)]`は、元の分散の定数の**2乗**倍$c^2V[f(x)]$となります

```math
V[cf(x)]=E \Bigl[\bigl(cf(x)-E[cf(x)]\bigr)^2 \Bigr]\\
=E \Bigl[\bigl(cf(x)-cE[f(x)]\bigr)^2 \Bigr]\\
=E \Bigl[c^2\bigl(f(x)-E[f(x)]\bigr)^2 \Bigr]\\
=c^2E \Bigl[\bigl(f(x)-E[f(x)]\bigr)^2 \Bigr]\\
=c^2V[f(x)]
```

## 多変数の確率分布
確率変数が多変数の時、確率分布は多変数関数で表されます。
例えば確率変数`X1`,`X2`の2次元で構成される正規分布の関数は、以下のような山型の3Dグラフで表す事ができます。
<img width="400" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/b4373333-12e3-9bc5-a944-21541477d4e7.png">

上記3Dグラフは、
「変数`X1`(横軸)と変数`X2`(縦軸)が同時にある値をとる確率が、関数`p(x1,x2)`の値(グラフの高さ)となる」
と解釈できます。
このような**複数の変数が同時にある値をとる確率**を**同時確率**と呼び、多変数の確率分布は基本的にこの同時確率で表されます。

多変数においては、n個の確率変数`(X1, X2... , Xn)`の値をベクトル**x**で表し、以下のように**x**の関数で確率分布p(**x**)を表します。

```math
p(x_1, x_2,\cdots,x_n)=p(\boldsymbol{x})
```
例えば多変数の正規分布（[冒頭で紹介](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E5%85%B1%E5%88%86%E6%95%A3%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90)したもの）は、以下の関数で表されます

```math
p(\boldsymbol{x})=\frac{1}{(2\pi)^\frac{D}{2}}\frac{1}{|\boldsymbol{\Sigma}|^\frac{1}{2}} \exp \Bigl(-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^T \boldsymbol{\Sigma}^{-1} (\boldsymbol{x}-\boldsymbol{\mu}) \Bigr)
```
**Σ**と**μ**というパラメータが現れますが、[詳細はこちらの記事で紹介](https://qiita.com/c60evaporator/items/d53053358105b0117f2c)します。

<br>

多変数確率分布でも1変数と同様、**積分すると1になる**必要があります。
※積分範囲は全変数の定義域

```math
\int_{-\infty}^{\infty} p(\boldsymbol{x})d\boldsymbol{x}=1
```
例えば2つの確率変数`x1`と`x2`からなる場合、以下の式が成り立つ必要があります。

```math
\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} p(x_1, x_2)dx_1 dx_2 =1
```

### 周辺確率
ある変数を積分することで消去し、より少ない変数で表せるようにした確率分布を**周辺確率**と呼びます。
<img width="720" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/60ab4a12-f66a-a0b6-1cc4-3b59b1b7c234.png">
上の例では、`x1`について周辺化して`x2`のみで表せるようにした確率分布$p(x_2)$を求めており、以下の式で表せます。

```math
p(x_2)=\int_{-\infty}^{\infty} p(x_1, x_2)dx_1
```
上記の関数では`x1`**が消去され、**`x2`**のみで表せる**（**変数が減る**）ことが分かります。

#### ・確率の加法定理
上記のように**周辺確率が同時確率の積分で表せる**ことを、**確率の加法定理**とも呼びます。

#### ・周辺確率の積分

周辺確率も「確率の和=1」の原則に則り、**残った変数の定義域で積分すると1**となります

```math
\int_{-\infty}^{\infty} p(x_2)dx_2=1
```

### 条件付き確率
ある変数を固定、あるいは変数同士に条件を加えることで、より少ない変数で表せるようにした確率分布を**条件付き確率**と呼びます。
<img width="720" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/b528359c-03a8-fd58-32bd-d91b6284c762.png">
上の例では、`x2`を固定して`x1`のみで表せるようにした確率分布$p(x_1 \mid x_2)$を求めており、以下の式で表されます。

```math
p(x_1 \mid x_2)=\frac{p(x_1, x_2)}{p(x_2)}
```

例えば、$x_2=a$という条件を加えた場合、以下のように定式化できます。

```math
p(x_1 \mid x_2=a)=\frac{p(x_1, a)}{p(x_2=a)}
```
※分母の$p(x_2=a)$は、`x1`で周辺化した周辺確率（上の図の断面積）の`x2=a`における値を表しており、条件付き確率の積分が1となる（確率分布の条件を満たす）ための規格化定数として使用されています。 

また上記の関数では**x2が消去され、x1のみで表せる**（**変数が減る**）ことが分かります。

上の例では変数の値を定数で固定していますが、例えば
$x_1^2+x_2^2=1$
のように変数同士に制約条件を加え、この制約条件で変数変換して片方の変数を消去することも可能です。

<br>

条件付き確率は「変数を減らす」という意味では周辺確率と似ていますが、以下の違いがあることにご注意ください

|名称|変数を消去する方法|消去される変数|
|---|---|---|
|周辺確率|積分|積分に使用した変数|
|条件付き確率|変数を固定、または変数同士に制約条件を追加|固定した変数|

#### ・条件付き確率の積分
条件付き確率も「確率の和=1」の原則に則り、**残った変数の定義域で積分すると1**となります

```math
\int_{-\infty}^{\infty} p(x_1 \mid x_2)dx_1=1
```

証明は以下のようになります

```math
\int_{-\infty}^{\infty} p(x_1 \mid x_2)dx_1=\int_{-\infty}^{\infty} \frac{p(x_1, x_2)}{p(x_2)}dx_1
```
$p(x_2)はx_1$に依存せず積分の外に出せるので

```math
=\frac{1}{p(x_2)}\int_{-\infty}^{\infty}p(x_1, x_2)dx_1\\
=\frac{p(x_2)}{p(x_2)}\\
=1
```
上式を見ると、分母の$p(x_2)$が積分=1となるための規格化定数の役割を果たすことが分かるかと思います。

### 確率の乗法定理
[条件付き確率の式](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E6%9D%A1%E4%BB%B6%E4%BB%98%E3%81%8D%E7%A2%BA%E7%8E%87)

```math
p(x_1 \mid x_2)=\frac{p(x_1, x_2)}{p(x_2)}
```
を変形すると、**同時確率は条件付き確率と周辺確率の積となる**ことが分かります。

```math
p(x_1, x_2)=p(x_1 \mid x_2)p(x_2)
```
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/db43205d-195f-4f15-2b36-0aa9c54e9b3b.png">
この関係を**確率の乗法定理**と呼びます


## 多変数確率分布の期待値
多変数確率分布の期待値は、どの変数について期待値をとるのか（積分に使用する変数）に注意する必要があります。

具体的には、「**期待値**」と「**条件付き期待値**」の違いを把握する事が重要です。
（周辺化した関数の期待値を求めることもできますが、ここでは割愛します）

**[後述の共分散の解説](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E5%85%B1%E5%88%86%E6%95%A3)では基本的に**「**期待値**」の方を使用しますが、本項では違いを明確化するため両者を解説します。

### 期待値
単に「期待値」と呼ぶと、**全変数に対して求めた期待値**を表すことが多いです。
期待値E[f(**x**)]は、全ての確率変数の定義域に対して、関数f(**x**)とp(**x**)の積を積分した値となります。

```math
E[f(\boldsymbol{x})]=\int_{-\infty}^{\infty} p(\boldsymbol{x})f(\boldsymbol{x})d\boldsymbol{x}
```

特に各確率変数の期待値$E[X_n]$（平均値）が、よく使用されます

```math
E[X_n]=\int_{-\infty}^{\infty} x_np(\boldsymbol{x})d\boldsymbol{x}
```

例えば2つの確率変数`X1`と`X2`からなる確率分布`p(x1,x2)`に対し、関数`f(x1,x2)`の期待値`E[f(x1,x2)]`を求めたい場合、以下の積分値を求めます。

```math
E[f(x_1, x_2)]=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} p(x_1, x_2)f(x_1, x_2)dx_1 dx_2
```
このケースで各確率変数の期待値`E[X1]`および`E[X2]`（平均値）は、以下のように求められます。

```math
E[X_1]=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x_1p(x_1, x_2)dx_1 dx_2\\
E[X_2]=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x_2p(x_1, x_2)dx_1 dx_2
```
期待値`E[X1]`および`E[X2]`は、下図のように**確率分布**（同時確率）$p(x_1,x_2)$**の重心**の`x1`座標、`x2`座標とみなすと理解しやすいかと思います。
<img width="420" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/c1269aaf-1f6a-6ccc-b09d-a3f3c1da981e.png">


#### ・複数変数の期待値の加法性
[先ほど複数の関数における期待値の加法性](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E6%9C%9F%E5%BE%85%E5%80%A4%E3%81%AE%E5%8A%A0%E6%B3%95%E6%80%A7)を解説しましたが、**複数の確率変数についても加法性は成立**します

```math
E[X_1+X_2]=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} p(x_1, x_2)(x_1+x_2)dx_1 dx_2\\
=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x_1p(x_1, x_2)dx_1 dx_2 + \int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x_2p(x_1, x_2)dx_1 dx_2\\
=E[X_1]+E[X_2]
```


### 条件付き期待値
**条件付き期待値**とは、ある変数を固定、あるいは条件を加えた際の**条件付き確率**$p(x_1 \mid x_2)$を求め、
その条件付き確率と関数`f(x)`から求めた期待値を指します。

<img width="720" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/71f76e4f-6041-27cf-c515-858cd2c11790.png">

例えば上図のように、`x2`に条件を加えた際の、関数`f(x1)`に対する条件付き期待値$E[f(x_1) \mid x_2]$を求めたい場合、以下の積分値を求めます。

```math
E[f(x_1) \mid x_2]=\int_{-\infty}^{\infty} p(x_1 \mid x_2)f(x_1)dx_1
```
上記の関数では**期待値をとった**`x1`**が消去され、**`x2`**のみで表せる**（**変数が減る**）ことが分かります。

特に以下の**確率変数自身の条件付き期待値**$E[x_1 \mid x_2]$が、よく使用されます

```math
E[x_1 \mid x_2]=\int_{-\infty}^{\infty} p(x_1 \mid x_2)x_1dx_1
```

<br>

条件付き期待値は期待値をとった変数が消去され、最初に条件として固定した変数が残ります。
以下のように**条件付き確率とは消去される変数が逆**となることにご注意ください

|名称|変数を消去する方法|消去される変数|
|---|---|---|
|条件付き確率|変数を固定、または変数同士に制約条件を追加|固定した変数|
|条件付き期待値|固定した変数以外に対して期待値をとる|固定した変数**以外**|



## 確率変数の独立
[JIS Z 8101-1](http://kikakurui.com/z8/Z8101-1-1999-01.html)では、
「確率変数`X`と`Y`が**独立**である」
とは、同時確率`F(x,y)`とxの周辺確率`G(x)`、yの周辺確率`H (y)`に以下の関係が成り立つこと

```math
F (x, y)＝G (x) ･H (y)
```
と定義されています。

これを今までの本記事での表記(≒PRMLでの表記)に統一すると、以下のように書き直せます。

・「**変数X1とX2が独立であること**」**の必要十分条件**

```math
p(x_1,x_2)=p(x_1)p(x_2)
```

```math
{\left\{\begin{array}{ll}
p(x_1,x_2):X_1とX_2の同時確率\\
p(x_1):X_1の周辺確率\\
p(x_2):X_2の周辺確率\\
\end{array}\right.
}
```

### 「独立」の感覚的な理解
「確率変数`X1`と`X2`が**独立**である」とは、どのような状態を指すのでしょうか？

感覚的には、「`X2`がどのような値でも、`X1`の値に影響を与えない」（逆も然り）
と解釈できそうですが、
確率分布では「**X2がどのような値でも、X1の確率分布形状が変わらない**」とみなすと分かりやすいかと思います。

ここで「`X2`がある値の時の`X1`の確率分布」は、前述した条件付き確率$p(x_1 \mid x_2)$そのものです。
![図14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/2cfea65c-cf07-538f-cdbf-b8ee0761149e.png)
これが`X2`の値によらない、すなわち`X1`のみの関数で表されることは、以下のように立式できます。

・「**変数X1とX2が独立であること**」**の感覚的な理解**

```math
条件付き確率p(x_1 \mid x_2)がx_1のみの関数で表される\\
かつ\\
条件付き確率p(x_2 \mid x_1)がx_2のみの関数で表される
```
これが、先ほどの**JISの定義**と**必要十分条件**になっていることを確認しましょう。

#### - 証明
上式の「`x1`のみの関数」を`g(x1)`、「`x2`のみの関数」を`h(x2)`とすると、以下のように書き直せます。

```math
p(x_1 \mid x_2)=g(x_1)\\
かつ\\
p(x_2 \mid x_1)=h(x_2)
```

確率の乗法定理を適用すると

```math
\frac{p(x_1,x_2)}{p(x_2)}=g(x_1)\\
かつ\\
\frac{p(x_2,x_1)}{p(x_1)}=h(x_2)
```
式を変形して

```math
p(x_1,x_2)=g(x_1)p(x_2) \cdots ①\\
かつ\\
p(x_2,x_1)=h(x_2)p(x_1) \cdots ②
```

式①に着目して両辺をx2で積分すると

```math
\int_{-\infty}^{\infty}p(x_1,x_2)dx_2 = \int_{-\infty}^{\infty}p(x_2)g(x_1)dx_2
```
左辺は周辺確率`p(x1)`の定義そのもので、右辺の`g(x1)`は`x2`によらないため積分の外に出せるため、以下のように式変形できます

```math
p(x_1) = g(x_1)\int_{-\infty}^{\infty}p(x_2)dx_2
```

右辺の積分は周辺確率の`x2`による積分のため、1となることから

```math
p(x_1) = g(x_1)
```
上式を式①に代入して

```math
p(x_1,x_2)=g(x_1)p(x_2)\\
=p(x_1)p(x_2)
```
JISの定義が導き出せました。

注意点として、積分を適用した時点で十分条件となってしまうので、必要条件（JISの定義からスタートして「感覚的な理解」を示す）も証明する必要があります。
確率の乗法定理にJISの定義式を代入して

```math
p(x_1 \mid x_2)=\frac{p(x_1,x_2)}{p(x_2)}\\
=\frac{p(x_1)p(x_2)}{p(x_2)}\\
=p(x_1) \cdots x_1のみの式で表せる
```
$p(x_2 \mid x_1)=p(x_2)$も同様に成り立ち、x2のみの式で表せるので、

```math
条件付き確率p(x_1 \mid x_2)がx_1のみの関数で表される\\
かつ\\
条件付き確率p(x_2 \mid x_1)がx_2のみの関数で表される
```
が成り立つことが示せました。

### 独立と条件付き確率
上で示したように、変数x1とx2が**独立であれば、条件付き確率は周辺確率と等しく**なります。

```math
p(x_2 \mid x_1)=p(x_2)\\
p(x_1 \mid x_2)=p(x_1)
```

### 独立と積の期待値
変数x1とx2が**独立の場合**に成り立つ重要な性質として、**「積の期待値」が「期待値の積」となる**ことです。

**・独立変数の積の期待値**

```math
E[X_1 X_2]=E[X_1]E[X_2]
```

#### - 証明

積$X_1X_2$の期待値は、以下のように表されます。

```math
E[X_1X_2]=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x_1x_2 p(x_1, x_2)dx_1 dx_2\\
```
[前述のように](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E7%A2%BA%E7%8E%87%E5%A4%89%E6%95%B0%E3%81%AE%E7%8B%AC%E7%AB%8B)x1とx2が独立の場合、$p(x_1,x_2)=p(x_1)p(x_2)$が成り立つので、代入して

```math
=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x_1x_2 p(x_1)p(x_2)dx_1 dx_2\\
```
x2およびp(x2)はx1に依存しない（x2のみで表される）ので、定数とみなしてx1に対する積分の外側に出せます。

```math
=\int_{-\infty}^{\infty} x_2p(x_2) \Bigl(\int_{-\infty}^{\infty} x_1 p(x_1)dx_1 \Bigr) dx_2 \cdots③
```
ここで内側の積分を考えます。積分の中に$1=\int_{-\infty}^{\infty} p(x_2)dx_2$を代入して

```math
\int_{-\infty}^{\infty} x_1 p(x_1)dx_1=\int_{-\infty}^{\infty} \Bigl(\int_{-\infty}^{\infty} p(x_2)dx_2\Bigr) x_1p(x_1)dx_1
```
x1およびp(x1)はx2に依存しないので、内側の積分の中に入れて

```math
=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x_1 p(x_1)p(x_2)dx_1dx_2\\
=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} x_1 p(x_1,x_2)dx_1dx_2\\
=E[X_1]
```
これを③に代入すると

```math
E[X_1 X_2]=\int_{-\infty}^{\infty} x_2p(x_2)E[X_1]dx_2
```
$E[X_1]$は定数なので積分の外に出すと

```math
E[X_1 X_2]=E[X_1]\int_{-\infty}^{\infty} x_2p(x_2)dx_2
```
先ほどと同様に$\int_{-\infty}^{\infty} x_2p(x_2)dx_2=E[X_2]$が成り立つので

```math
E[X_1 X_2]=E[X_1]E[X_2]
```
「積の期待値」が「期待値の積」で表せることが示されました。



# 共分散
前置きが長くなりましたが、**共分散の解説**に入ります。
以下の順番で解説します。

・共分散の定義
・2次元正規分布と共分散
・多次元正規分布と共分散
・共分散と相関係数
・共分散の性質

## 共分散の定義
まずは共分散の定義を解説します。
分散の定義を多変数に拡張し、和の分散を考えることで、共分散を導き出す事ができます。

### 多変数確率分布における分散
多変数の分散は、1変数の分散の式の期待値を、多変数の期待値で置き換えたものとなります。

```math
V[f(\boldsymbol{x})]=E \Bigl[\bigl(f(\boldsymbol{x})-E[f(\boldsymbol{x})]\bigr)^2 \Bigr]
```

例えば、各確率変数の分散$V[X_n]$（狭義の分散）は、以下のように求めます

```math
V[X_n]=E \Bigl[\bigl(X_n-E[X_n]\bigr)^2 \Bigr]
```

### 和の分散
2つの確率変数の和の分散を考えます。
（式変形には[期待値の加法性](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E8%A4%87%E6%95%B0%E5%A4%89%E6%95%B0%E3%81%AE%E6%9C%9F%E5%BE%85%E5%80%A4%E3%81%AE%E5%8A%A0%E6%B3%95%E6%80%A7)を使用します）

```math
V[X_1+X_2]=E\Bigl[\bigl(X_1+X_2-E[X_1+X_2]\bigr)^2 \Bigr]\\
=E\Bigl[\bigl(X_1+X_2-E[X_1]-E[X_2]\bigr)^2 \Bigr]\\
=E\Bigl[\bigl((X_1-E[X_1])+(X_2-E[X_2])\bigr)^2 \Bigr]\\
=E\Bigl[(X_1-E[X_1])^2+(X_2-E[X_2])^2 + 2(X_1-E[X_1])(X_2-E[X_2]) \Bigr]\\
=E\bigl[(X_1-E[X_1])^2 \bigr] + E\bigl[(X_2-E[X_2])^2 \bigr] + E\bigl[2(X_1-E[X_1])(X_2-E[X_2]) \bigr]\\
=V[X_1]+V[X_2] + 2E\bigl[(X_1-E[X_1])(X_2-E[X_2]) \bigr]
```
上記の式を見ると、以下の3つの成分に分けられる事がわかります。

```math
\left\{\begin{array}{ll}
V[X_1] \cdots X_1のみに依存する成分 \\
V[X_2] \cdots X_2のみに依存する成分 \\
E\bigl[(X_1-E[X_1])(X_2-E[X_2]) \bigr] \cdots X_1とX_2両方に依存する成分\\
\end{array}\right.
```
※最後の成分は2で割っていることにご注意ください

このうち3つ目の「`X1`と`X2`両方に依存する成分」を**共分散**と呼び、$Cov[X_1,X_2]$と表記します。

### 共分散の定義
以上まとめると、**共分散**$Cov[X_1,X_2]$は期待値Eを使って**以下のように定義**できます。

```math
Cov[X_1,X_2]=E\bigl[(X_1-E[X_1])(X_2-E[X_2]) \bigr]
```
この式だけだと共分散の存在意義がイマイチ分からないと思うので、直感的なイメージや具体的な活用例を交えて解説を進めます。


## 共分散の直感的なイメージ
共分散の式を見ると、$(X_1-E[X_1])(X_2-E[X_2])$の期待値、すなわち全定義域での確率密度とのたたみ込み積分

```math
Cov[X_1,X_2]=E\bigl[(X_1-E[X_1])(X_2-E[X_2]) \bigr]\\
=\int_{-\infty}^{\infty} \int_{-\infty}^{\infty} p(x_1, x_2)(x_1-E[X_1])(x_2-E[X_2])dx_1 dx_2
```
で表されることが分かります。

上式の$(x_1-E[X_1])(x_2-E[X_2])$の部分に着目すると、下図のように重心（各変数の期待値）`(E[X1], E[X2])`を基準に左下から右上方向が正、右下から左上方向が負となることが分かります。
![共分散の正負.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/610167/cae655ca-1b7f-df69-f57c-b9ddba379874.png)
上記を踏まえると、確率密度$p(x_1, x_2)$とのたたみ込みである共分散は

**・左下から右上方向の確率密度が高いと正**
**・右下から左上方向の確率密度が高いと負**

となり、**確率分布の斜め方向の偏在、すなわち2変数の相関と関連した指標**となることが分かります。

これは[冒頭の散布図におけるイメージ](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E5%85%B1%E5%88%86%E6%95%A3%E3%81%A8%E3%83%87%E3%83%BC%E3%82%BF%E5%88%86%E6%9E%90)とも一致するかと思います。

### 共分散と相関係数
共分散は2変数の相関を表しますが、変数のスケールが規格化されていないため、**相関の強さだけでなく、変数のスケールも値の大きさに影響を与え**てしまいます。
よって異なる確率分布（またはデータセット）での結果を比較することはできません。

そこで各変数の分散の幾何平均$\sqrt{V[X_1]V[X_2]}$で割って規格化することで**変数のスケールの影響を排除（変数を標準化してから共分散を求めることに相当）し、純粋な相関の強さを評価できる**ようにした指標を**相関係数**と呼びます。
これにより**異なるデータセットでの結果を比較できる**ようになります。

```math
相関係数\rho[X_1,X_2]=\frac{Cov[X_1,X_2]}{\sqrt{V[X_1]V[X_2]}}
```

相関係数の詳細については、以下の記事で解説しております

https://qiita.com/c60evaporator/items/6510a6440eb396862dac

## 共分散の基本性質
共分散が満たす重要な性質を解説します
### 共分散の対称性
共分散は、**添字を反転させても値が等しく**なります

```math
Cov[X_1,X_2]=E\bigl[(X_1-E[X_1])(X_2-E[X_2]) \bigr]\\
=E\bigl[(X_2-E[X_2])(X_1-E[X_1]) \bigr]\\
=Cov[X_2,X_1]
```

### 共分散の計算法
共分散を計算しやすいよう、以下のような式変形がよく行われます

```math
Cov[X_1,X_2]=E\bigl[(X_1-E[X_1])(X_2-E[X_2]) \bigr]\\
=E\bigl[X_1X_2-X_1E[X_2]-X_2E[X_1]+E[X_1]E[X_2] \bigr]\\
=E[X_1X_2]-E[X_1E[X_2]]-E[X_2E[X_1]]+E[E[X_1]E[X_2]]\\
```
`E[X1]`や`E[X2]`は定数なので、以下の公式を適用すると
・定数cの期待値`E[c]=c`
・定数c倍の期待値`E[cX]=cE[X]`

```math
=E[X_1X_2]-E[X_2]E[X_1]-E[X_1]E[X_2]+E[X_1]E[X_2]\\
=E[X_1X_2]-E[X_1]E[X_2]
```

### 共分散と独立変数
変数**X1とX2が独立のとき**、共分散$Cov[X_1,X_2]=0$となります。

#### - 証明

```math
Cov[X_1,X_2]=E\bigl[(X_1-E[X_1])(X_2-E[X_2]) \bigr]\\
```
[前節の式変形](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#%E5%85%B1%E5%88%86%E6%95%A3%E3%81%AE%E8%A8%88%E7%AE%97%E6%B3%95)より

```math
=E[X_1X_2]-E[X_1]E[X_2]
```
X1とX2が独立のとき、積の期待値$E[X_1X_2]=E[X_1]E[X_2]$が成り立つので、

```math
=E[X_1][X_2]-E[X_1]E[X_2]\\
=0
```
なお、**逆に**共分散$Cov[X_1,X_2]=0$のとき、変数`X1`と`X2`が**独立とは限らない**（[参考](http://web.econ.keio.ac.jp/staff/ito/pdf05/FM05prob.pdf)）ことにご注意ください

### 定数倍の共分散
変数を定数倍した際の共分散には、以下の関係が成り立ちます

```math
Cov[aX_1,bX_2]=E\bigl[(aX_1-E[aX_1])(bX_2-E[bX_2]) \bigr]\\
=E\bigl[(aX_1-aE[X_1])(bX_2-bE[X_2]) \bigr]\\
=E\bigl[ab(X_1-E[X_1])(X_2-E[X_2]) \bigr]\\
=abE\bigl[(X_1-E[X_1])(X_2-E[X_2]) \bigr]\\
abCov[X_1,X_2]
```

### 共分散と分散の加法性
**共分散がゼロ**の時、**分散の加法性**

```math
V[X_1+X_2]=V[X_1]+V[X_2]
```
が成り立ちます。

#### - 証明
和の分散は、以下のように個々の分散と共分散の和で表されます。

```math
V[X_1+X_2]=V[X_1]+V[X_2]+2Cov[X_1,X_2]
```
共分散がゼロの時、最後の項$2Cov[X_1,X_2]=0$となるので、

```math
V[X_1+X_2]=V[X_1]+V[X_2]
```
逆に共分散がゼロでないとき、分散の加法性は成り立ちません。

#### 分散の加法性の実用上の意義
よく、工業における誤差の評価などで、「**和の標準偏差は個々の標準偏差の√二乗和となる**」すなわち

```math
\sigma[X_1+X_2]=\sqrt{\sigma[X_1]^2+\sigma[X_2]^2}
```
という公式が使用されます。
この式、実は分散の加法性を変形しただけです。

```math
\sigma[X_1+X_2]=\sqrt{V[X_1+X_2]}\\
=\sqrt{V[X_1]+V[X_2]}\\
=\sqrt{\sigma[X_1]^2+\sigma[X_2]^2}
```
よって**和をとる変数同士が独立でないと成り立ちません**（和の標準偏差が√二乗和よりも大きくなる）

公式を適用する前に、相関係数や散布図等で変数同士が独立となっているかを確認しましょう


## 多次元正規分布と共分散
**共分散が実用上で威力を発揮**するのが、**多次元正規分布の表現**です。

多次元正規分布は多くの機械学習アルゴリズム（[ナイーブベイズ分類器](https://qiita.com/aflc/items/13fe52243c35d3b678b0)、[マハラノビスタグチ法](https://www.toshiba-dme.co.jp/dme/coretec/hin/hin_mt.htm)、[混合ガウスモデル](https://datachemeng.com/gaussianmixturemodel/)等）で活用される確率分布であり、特に**教師なし学習**においては**最重要理論の一つ**と言える存在です。

多次元正規分布と共分散の関係については、**以下の別記事でまとめました**。

https://qiita.com/c60evaporator/items/d53053358105b0117f2c

かなり長いですが、その分**共分散に関する知識が深まる**と思うので、ぜひご一読頂ければと思います。


# 実データでの共分散の求め方
[前述のように](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#1%E5%A4%89%E6%95%B0%E3%81%AE%E7%A2%BA%E7%8E%87%E5%88%86%E5%B8%83)、**現実世界では**有限のデータ（サンプル=標本データ)しか観測できないため、確率分布の形状を知るためには**限られたサンプルから推定**する必要があります。

**正規分布において**は、平均ベクトル**μ**と分散共分散行列**Σ**、すなわち**各変数の平均、分散、共分散を推定**する必要があります。

## 2次元データでの算出例
2次元正規分布（確率変数$X_1, X_2$からなる）を例に、これらの値を求めてみます。

サンプル数をnとし、各サンプルの(x1,x2)の値を$(x_{11},x_{21}),(x_{12},x_{22}),\cdots(x_{1n},x_{2n})$とします。

### 平均
サンプルから求めた平均を「標本平均」と呼びます。
以下のように、全サンプルの総和をサンプル数で割ります（母平均の定義と同じ）

```math
\bar{x_1}=\sum_{i=1}^{n}\frac{x_{1i}}{n}\\
\bar{x_2}=\sum_{i=1}^{n}\frac{x_{2i}}{n}
```

### 分散
サンプルから求める分散には「標本分散」と「不偏標本分散」の2種類があります。

#### ・標本分散
サンプルから母分散の定義と同じ以下の式で求めた分散を、「標本分散」と呼びます。

```math
S_1=\sum_{i=1}^{n}\frac{(x_{1i}-\mu_1)^2}{n}\\
S_2=\sum_{i=1}^{n}\frac{(x_{2i}-\mu_2)^2}{n}
```
※標本分散は大文字のSで表されることが多いです。

標本分散の問題として、$期待値E(s_1)が真の母分散σ_1と比べて\frac{n-1}{n}$倍となってしまうことが挙げられます。
（証明は以下のサイトをご参照ください）

https://bellcurve.jp/statistics/course/14987.html

#### ・不偏標本分散
上記の問題を解決し、期待値が母分散と等しくなるように分母をn-1で置き換えた標本分散を、「不偏標本分散」と呼びます

```math
s_1=\sum_{i=1}^{n}\frac{(x_{1i}-\mu_1)^2}{n-1}\\
s_2=\sum_{i=1}^{n}\frac{(x_{2i}-\mu_2)^2}{n-1}
```
※不偏標本分散は小文字のsで表されることが多いです。

#### 標本分散と不偏標本分散どちらを使用するか
どちらを使用しても間違いではないのですが、「母分散を偏りなく推定する（期待値が母分散と等しくなる=不偏推定量である）」という観点で、不偏標本分散が使用されることが多いです。

### 共分散
共分散をサンプルから求める際にも、n-1で割った「不偏標本共分散」と、nで割った(不偏でない)「標本共分散」の違いに注意が必要です。

ここでも、期待値が母集団の共分散と等しくなるよう、不偏推定量である「不偏標本共分散」を使用します。

```math
c_{12}=c_{21}=\sum_{i=1}^{n}\frac{(x_{1i}-\mu_1)(x_{2i}-\mu_2)}{n-1}
```

### サンプルから求めた2次元正規分布
上記の推定量を使用して、平均ベクトル**μ**および分散共分散行列**Σ**は、以下のように求まります。

```math
\boldsymbol{\mu}=
\left(\begin{array}{c}
\bar{x_1} \\
\bar{x_2} \\
\end{array}\right)
```

```math
\boldsymbol{\Sigma}=
\begin{pmatrix}
s_1 & c_{12} \\
c_{12} & s_2
\end{pmatrix}
```
2次元正規分布の確率密度関数p(x)は、**μ**および**Σ**を使用して以下のように求まります。

```math
p(\boldsymbol{x})=\frac{1}{2\pi}\frac{1}{|\boldsymbol{\Sigma}|^\frac{1}{2}}\exp\bigl(-\frac{1}{2}(\boldsymbol{x}-\boldsymbol{\mu})^T\boldsymbol{\Sigma}^{-1}(\boldsymbol{x}-\boldsymbol{\mu})\bigr)
```

[前述のように](https://qiita.com/c60evaporator/items/93295d3890c9e20e521d#1%E5%A4%89%E6%95%B0%E3%81%AE%E7%A2%BA%E7%8E%87%E5%88%86%E5%B8%83)、上記パラメータはあくまでサンプルから「推定」された値であり、（頻度論における）真の値からは誤差が生じることにご注意ください（特にサンプルが少ないときは誤差が大きくなります）

※ なお、以下の英語版Wikipediaでは分散共分散行列を最尤推定およびベイズ推定で求める例が紹介されています。興味がある方はご参照ください

https://en.wikipedia.org/wiki/Multivariate_normal_distribution#Statistical_inference

### サンプルにまつわる推定・検定
サンプルから求められた共分散（標本共分散）が、**真の値**（母共分散）**に対してどの程度信頼性があるか**を求める手法が、**推定・検定**です。
ただし、共分散自体の検定・推定はほとんど行われることはありません。

むしろ使い勝手の観点から共分散を規格化した「**相関係数**」に関して検定・推定が行われる事が多く、その中でも「**無相関の検定**」や「**フィッシャーのz変換**」は非常にポピュラーな手法です。

これらについては現在記事にまとめておりますので、しばしお待ちいただければと思います。

## 共分散まとめ
以上共分散について重要事項をまとめると、以下のようになります

**・x1とx2の共分散は**$Cov[x_1,x_2]=E\bigl[(x_1-E[x_1])(x_2-E[x_2]) \bigr]$**と定義される**

**・共分散**$Cov[x_1,x_2]$**は、和の分散のうち「x1とx2両方に依存する成分」を表す**

**・共分散は、左下から右上方向の確率密度が高いと正、右下から左上方向の確率密度が高いと負となる、2変数の相関と関連した指標**

**・サンプルから求まる共分散の不偏推定量は、**$\sum_{i=1}^{n}\frac{(x_{1i}-\mu_1)(x_{2i}-\mu_2)}{n-1}$（分母がn-1であることに注意）

**・共分散は、実用上において多次元正規分布の表現や主成分分析、教示なし学習等の機械学習手法に活用できる**



# 参考文献
**・統計学入門　東京大学出版会**

http://www.utp.or.jp/book/b300857.html

**・パターン認識と機械学習　上　丸善出版**

https://www.maruzen-publishing.co.jp/item/?book_no=294524

**※以下の資料も参考にさせて頂きました**

https://mcm-www.jwu.ac.jp/~konno/pdf/statga81.pdf