DB/R/統計/データサイエンス/投資話についてつらつらと

世のため自分のためのアウトプット

R 統計学(statistics) 解説記事

【統計学とRの備忘録】分散の公式【式変形と演算】

投稿日:

分散の公式について、その証明と具体例をご紹介します。
(分散の導出及び、分散の式変形に関する公式です)

~目次~

1. [基本]分散の導出公式

2. 全てのデータをa倍した場合の分散

3. 全てのデータにxを足した(データの平均をx移動させた)場合の分散

4. 独立した二つのデータを足した場合の分散

5. 分散のもう一つの導出方法

1. [基本]分散の導出公式

確認のため、分散の公式を記載します。

公式

\displaystyle \LARGE V(\bf{X})=\frac{(x_1-x_m)^2 + (x_2-x_m)^2 + ... + (x_n-x_n)^2}{n}=\dfrac{1}{n}\sum_{i=1}^n (x_i-x_m)^2
#不偏分散の場合
\displaystyle \LARGE V(\bf{X})=\frac{(x_1-x_m)^2 + (x_2-x_m)^2 + ... + (x_n-x_n)^2}{n-1}=\dfrac{1}{n-1}\sum_{i=1}^n (x_i-x_m)^2

具体例を用いた確認

Rを用いて、実際に計算してみます。

> X <- c(1,2,3,4,5)
> V_X <- ( (X[1] - mean(X))^2 + (X[2] - mean(X))^2 + (X[3] - mean(X))^2 +(X[4] - mean(X))^2 +(X[5] - mean(X))^2) / 5
> V_X
[1] 2

Rにはvarという関数がありますので、こちらを使用して求めてみます。

> var(X)
[1] 2.5

varは、不偏分散を導出しているため、\dfrac{n-1}{n}をかけます。(今回要素数n=5)

> var(X)*4 / 5
[1] 2

公式を用いた計算結果と同じになることが確認できました。

2. 全てのデータをa倍した場合の分散

全てのデータをa倍した場合の分散は、a^2倍されます。

公式

\LARGE V(a\bf{X})=a^2V(\bf{X})

V(\bf{X})\bf{X}の分散、\bf{X}は対象のデータ配列、aは定数

証明

標本データ\bf{X}を以下とします。

\bf{X}=(x_1, x_2, ... x_n)

\bf{X}の分散V(\bf{X})\bf{X}の平均をx_mとすると以下になります。

V(\bf{X})=\dfrac{(x_1-x_m)^2 + (x_2-x_m)^2 + ... + (x_n-x_n)^2}{n}

同様に、\bf{X}に定数aをかけた\bf{aX}を以下とします。

\bf{aX}=(ax_1, ax_2, ... ax_n)

\bf{aX}の分散V(\bf{aX})は以下になります。

V(\bf{aX})
=\dfrac{(ax_1-ax_m)^2 + (ax_2-ax_m)^2 + ... + (ax_n-ax_n)^2}{n}
=\dfrac{a^2(x_1-x_m)^2 + a^2(x_2-x_m)^2 + ... + a^2(x_n-x_n)^2}{n}
=a^2\dfrac{(x_1-x_m)^2 + (x_2-x_m)^2 + ... + (x_n-x_n)^2}{n}
=a^2V(\bf{X})

以上です。

具体例を用いた確認

先ほどと同様に\bf{X}とその分散V(\bf{X})を以下とします。

> X
[1] 1 2 3 4 5
> a
[1] 2
> var(X)
[1] 2.5

定数aを2とすると、その分散が2^2*\bf{X}となることが確認できました。

> var(a*X)
[1] 10
> a^2 * var(X)
[1] 10

3. 全てのデータにaを足した(データの平均をx移動させた)場合の分散

全てのデータに定数を足した場合でも、分散には影響がありません。(平均値の変動は分散には影響しない)

公式

\LARGE V(\bf{X}+\bf{a}) = V(\bf{X})

V(\bf{X})\bf{X}の分散、\bf{X}は対象のデータ配列、\bf{a}は定数aの配列

スポンサーリンク

証明

標本データ\bf{X}と定数ベクトル\bf{a}を以下とします。

\bf{X}=(x_1, x_2, ... x_n)
\bf{a}=(a, a, ... a)

V(\bf{X}+\bf{a})\bf{X}+\bf{a}の平均はx_m+aとなることから以下となります。

V(\bf{X}+\bf{a})
=\dfrac{((x_1+a)-(x_m+a))^2 + ((x_2+a)-(x_m+a))^2 ... + ((x_n+a)-(x_m+a))^2}{n}
=\dfrac{(x_1-x_m)^2 + (x_2-x_m)^2 ... + (x_n-x_m)^2}{n}
=V(\bf{X})

具体例を用いた確認

a=2の時、\bf{X}+\bf{a}は以下となります。

> X + a
[1] 3 4 5 6 7

\bf{X}\bf{X}+\bf{a}の分散をそれぞれ求めると、同じとなることが分かります。

> var(X)
[1] 2.5
> var(X+a)
[1] 2.5

4. 独立した二つのデータを足した場合の分散

二つの独立したデータの分散の和は、それぞれの分散の和と等しくなります。

公式

\LARGE V(\bf{X}+\bf{Y}) = V(\bf{X}) + V(\bf{Y})

V(\bf{X})\bf{X}の分散、\bf{X}\bf{Y}は対象のデータ配列

導出方法

二つの独立した標本データ\bf{X}\bf{Y}を以下とします。

\bf{X}=(x_1, x_2, ... x_n)
\bf{Y}=(y_1, y_2, ... y_n)

\bf{X}の平均をx_m\bf{Y}の平均をy_mとすると、V(\bf{X}+\bf{Y})は以下になります。

V(\bf{X}+\bf{Y})
=\dfrac{(x_1+y_1-(x_m+y_m))^2 + (x_2+y_2-(x_m+y_m))^2 ... + (x_n+y_n-(x_m+y_m))^2}{n}

ここで、(x_n+y_n-(x_m+y_m))^2を以下のように展開します。

(x_n+y_n-(x_m+y_m))^2
=x_n^2-2x_nx_m+x_m^2 + y_n^2-2y_ny_m+y_m^2
+2x_ny_n-2x_ny_m+2x_my_n-2x_my_m
=(x_n-x_m)^2 + (y_n-y_m)^2 + 2(x_n-x_m)(y_n-y_m)

ここで上式の第1項はV(\bf{X})、第2項はV(\bf{Y})となります。
また、第3項は\sum_{i=1}^n{x_i}=x_m*nより、0となります。

以上から、以下が導出されました。

V(\bf{X}+\bf{Y}) = V(\bf{X}) + V(\bf{Y}

具体例を用いた確認

Rを使用して、具体例で確認します。
\bf{X}\bf{Y}を以下で作成します。
rnorm(n, mean, sd)は、は平均"mean"で標準偏差が"sd"の乱数を"n"個作成します。
以下では、平均0で標準偏差が1(分散は1)の乱数を1000個と、平均0で標準偏差が3(分散は9)の乱数を1000個作成します。

> X <- rnorm(1000,0,1) > Y <- rnorm(1000,0,3)

乱数ができているかを、確認します。最初の5個だけみてみます。

> head(X)
[1] -1.8922349 -1.0520299 0.4780840 -0.6979630 -0.5113521 -0.6088880
> head(Y)
[1] -3.8676957 5.8847385 -1.2284424 -0.8252495 2.2898359 -3.2330217

できましたので、それらの合計の分散と、個々の分散の合計を求めます。

> var(X+Y)
[1] 10.52636
> var(X) + var(Y)
[1] 10.59839

このように、それらの合計の分散と個々の分散の合計は、ともに約10となることが確認できました。

ちなみに、"独立でない"とは片方のデータがもう片方のデータと関係性があるという意味になります。
独立でない乱数同士を足すと以下のように公式を満たさないことがわかります。

> X <- rnorm(1000,0,1)
>Y <- X*3+2
> var(X+Y)
[1] 15.6313
> var(X) + var(Y)
[1] 9.769559

5. 分散のもう一つの導出方法

1.で紹介した方法以外にも、データの個々の二乗の平均からデータ全体の平均の二乗を引いても導出できます。

使用機会は多いので、こちらも使えるようにしておきましょう。

公式

\displaystyle \LARGE V(\bf{X}) = \dfrac{1}{n}\sum_{i=1}^n x_i^2 - x_m^2

スポンサーリンク

導出方法

上記の公式は、1.でご紹介した基本の公式から導出します。

V(\bf{X})
=\displaystyle \dfrac{1}{n}\sum_{i=1}^n(x_i-x_m)^2
=\displaystyle \dfrac{1}{n}(\sum_{i=1}^nx_i^2 - 2\sum_{i=1}^nx_ix_m + \sum_{i=1}^nx_m^2)

ここで、\sumの中にある定数は外に出します。
=\displaystyle \dfrac{1}{n}(\sum_{i=1}^nx_i^2 - 2x_m\sum_{i=1}^nx_i + nx_m^2)

また、データの総和と平均を要素数でかけたものは等しいことから、\sum_{i=1}^nx_i=nx_mと変換します
=\displaystyle \dfrac{1}{n}(\sum_{i=1}^nx_i^2 - 2nx_m^2 + nx_m^2)
=\displaystyle \dfrac{1}{n}\sum_{i=1}^nx_i^2 - \dfrac{1}{n}(2nx_m^2 - nx_m^2)
=\displaystyle \dfrac{1}{n}\sum_{i=1}^nx_i^2 - x_m^2

以上です。

具体例を用いた確認

分散を求めるXを以下とします。

> X <- c(1,2,3,4,5)

今回の公式の方法で分散を求めると、以下となります。
ここで、\dfrac{1}{n}\sum_{i=1}^n x_i^2\bf{X}^2の平均として計算しています。

> X^2
[1] 1 4 9 16 25
> mean(X^2) - mean(X)^2
[1] 2
※mean(X)は配列Xの平均を出力します

一方で、1.でご紹介した公式で求めた分散は以下となります。

> var_X <- ((X[1] - mean(X))^2 + (X[2] - mean(X))^2 + (X[3] - mean(X))^2 +(X[4] - mean(X))^2 +(X[5] - mean(X))^2)/length(X)
> var_X
[1] 2
※length(X)はXの要素数(n)を出力します。今回は5となります。

なお、Rには分散を求めるvarがあるため、そちらでも確認します。
(varは不偏分散のため、\dfrac{n-1}{n}をかけて分散に変換しています。)

> var(X) * (length(X) -1) / length(X)
[1] 2

いずれの方法でも、2となることが確認できました。

-R, 統計学(statistics), 解説記事

Copyright© 世のため自分のためのアウトプット , 2020 All Rights Reserved Powered by STINGER.