見出し画像

6-8 F分布の特徴付け ~ 標準正規分布・カイ二乗分布・t分布・F分布の結びつきをPythonで検証する

今回の統計トピック

確率変数と$${\chi^2}$$分布・$${t}$$分布・$${F}$$分布の繋がりを確認できる良問にチャレンジします。
今回も実データを使って確率変数と確率分布の関係を徹底的に検証(実験)します!


公式問題集の準備

「公式問題集」の問題を利用します。お手元に公式問題集をご用意ください。
公式問題集が無い場合もご安心ください!
「知る」「実践する」の章で、のんびり統計をお楽しみください!

問題を解く


📘公式問題集のカテゴリ

標本分布の分野
問8 $${F}$$分布の特徴付け(データなし)

試験実施年月
調査中

問題

公式問題集をご参照ください。

解き方

題意
確率変数と$${\chi^2}$$分布・$${t}$$分布・$${F}$$分布の関係、$${t}$$分布のパーセント点表の読み取りの理解を確認する出題です。

【条件】
①互いに独立に標準正規分布に従う確率変数$${Z_1, Z_2, Z_3, Z_4, Z_5, Z_6}$$があります。
②$${T=Z_2^2+Z_3^2+Z_4^2+Z_5^2+Z_6^2}$$とします。
③$${V=\cfrac{Z_1}{\sqrt{T/5}}}$$とします。
④$${W=\cfrac{T/5}{Z_1^2}}$$とします。
⑤確率$${P(|V| \geq 1/\sqrt{\alpha})=0.05}$$とします。
⑥確率変数$${Z_1, T}$$は独立です。

【問い】
・確率変数$${V}$$が従う分布は何ですか?
・確率変数$${W}$$が従う分布は何ですか?
・$${\alpha}$$の値は何ですか?

公式問題集の記述を改変

確率変数と$${\chi^2}$$分布・$${t}$$分布・$${F}$$分布の関係を確認しましょう。

$${\boldsymbol{\chi^2}}$$分布(カイ二乗分布)
標準正規分布に従う確率変数と関連します。

$${n}$$個の確率変数$${Z_1, Z_2, \cdots , Z_n}$$が互いに独立に標準正規分布$${N(0,1)}$$に従うとき、$${W=Z^2_1+Z^2_2+\cdots +Z^2_n}$$の従う分布を自由度$${n}$$の$${\chi^2}$$分布と呼び、$${\chi^2(n)}$$と表します。

「独立に標準正規分布に従う$${n}$$個の確率変数の二乗を足した」確率変数$${W}$$は、自由度$${n}$$の$${\chi^2}$$分布$${\chi^2(n)}$$に従います。


$${\boldsymbol{t}}$$分布(ティー分布)
標準正規分布に従う確率変数と$${\chi^2}$$分布に従う確率変数に関連します。

互いに独立の確率変数$${Z,W}$$があり、$${Z}$$が標準正規分布$${N(0,1)}$$に従い、$${W}$$が自由度$${m}$$の$${\chi^2}$$分布に従うとき、$${t=\cfrac{Z}{\sqrt{W/m}}}$$の従う分布を自由度$${m}$$の$${t}$$分布と呼び、$${t(m)}$$と表します。

公式テキストの記述を改変

「分子が標準正規分布に従う確率変数」「分母が自由度$${m}$$の$${\chi^2}$$分布に従う確率変数を自由度$${m}$$で割った平方根」の確率変数$${t}$$は、自由度$${m}$$の$${t}$$分布$${t(m)}$$に従います。

分母を掘り下げます。
分母の$${W}$$は、標準正規分布に従う確率変数の二乗を$${m}$$個足した確率変数$${W=Z_1^2+ \cdots + Z_m^2}$$です(上の$${\chi^2}$$分布も参照ください)。
自由度=個数=$${m}$$で割っているので、確率変数の二乗の平均$${\bar{Z^2}=(Z_1^2+ \cdots + Z_m^2)/m}$$と言えます。
また、平均した結果の平方根を取っているので、単位が確率変数の二乗(平方)$${\bar{Z^2}}$$の単位から、通常の確率変数$${\bar{Z}}$$の単位になっています。

ざっくり、$${t=\cfrac{Z}{\sqrt{W/m}}}$$は、$${\cfrac{Z}{\bar{Z^{\prime}}}}$$的なイメージです($${Z,W}$$は互いに独立なので、あくまでざっくり)。


$${\boldsymbol{F}}$$分布(エフ分布)
$${\chi^2}$$分布に従う2つの確率変数に関連します。

互いに独立の確率変数$${W_1, W_2}$$があり、$${W_1}$$が$${\chi^2(m_1)}$$に従い、$${W_2}$$が$${\chi^2(m_1)}$$に従うとき、$${F=\cfrac{W_1/m_1}{W_2/m_2}}$$の従う分布を$${F}$$分布と呼び、$${F(m_1, m_2)}$$と表します。

公式テキストの記述を改変

「分子が自由度$${m_1}$$の$${\chi^2}$$分布に従う確率変数を自由度$${m_1}$$で割った値」「分母が自由度$${m_2}$$の$${\chi^2}$$分布に従う確率変数を自由度$${m_2}$$で割った値」の確率変数$${F}$$は、自由度$${(m_1, m_2)}$$の$${F}$$分布$${F(m_1, m_2)}$$に従います。

深掘りします。
$${W_1=Z_{11}^2+Z_{12}^2+\cdots +Z_{1m_1}^2}$$、$${W_2=Z_{21}^2+ Z_{22}^2+\cdots +Z_{2m_2}^2}$$と表すと、$${W_1, W_2}$$は標準正規分布に従う確率変数の二乗を足したものであることがイメージできます。
また、$${W_1/m_1}$$は$${Z_{11}^2+Z_{12}^2+\cdots +Z_{1m_1}^2}$$の平均、$${W_2/m_2}$$は$${Z_{21}^2+Z_{22}^2+\cdots +Z_{2m_2}^2}$$の平均です。

ざっくり、$${F=\cfrac{W_1/m_1}{W_2/m_2}}$$は、$${ \cfrac{\bar{Z^2_{1.}}} { \bar{Z^2_{2.}}} }$$的なイメージです(あくまでざっくり)。

【まとめ】
$${\chi^2}$$分布・$${t}$$分布・$${F}$$のそれぞれに従う確率変数が関係しあっていることと、背後に標準正規分布に従う確率変数$${Z}$$が隠れていることが分かりました。

人脈・コネのイラスト:「いらすとや」さんより

では、問題文の確率変数と各分布の定義をマッチングします。

■$${T=Z_2^2+Z_3^2+Z_4^2+Z_5^2+Z_6^2}$$

$${T}$$は独立に標準正規分布に従う5つの確率変数$${Z_2,\cdots Z_6}$$の二乗を足しています。
これは「自由度$${n}$$の$${\chi^2}$$分布」に従う「$${W=Z_1^2+\cdots + Z_n^2}$$」に合致します。
具体的には、確率変数$${T=Z_2^2+Z_3^2+Z_4^2+Z_5^2+Z_6^2}$$は$${n=}$$5つの確率変数の二乗を足し合わせており、自由度$${n=5}$$の$${\chi^2}$$分布に従います。

■$${V=\cfrac{Z_1}{\sqrt{T/5}}}$$

$${V}$$の分子は標準正規分布に従う$${Z_1}$$、分母は自由度$${5}$$の$${\chi^2}$$分布に従う$${T}$$とその自由度$${m=5}$$です。
これは「自由度$${m}$$の$${t}$$分布」に従う「$${t=\cfrac{Z}{\sqrt{W/m}}}$$」に合致します。
具体的には、確率変数$${V=\cfrac{Z_1}{\sqrt{T/5}}}$$は、自由度$${m=5}$$の$${t}$$分布に従います。

問題(ア)の解答は、自由度$${5}$$の$${t}$$分布 です。

■$${W=\cfrac{T/5}{Z_1^2}}$$

$${W}$$の分子は自由度$${5}$$の$${\chi^2}$$分布に従う確率変数$${T}$$とその自由度$${m_1=5}$$です。
また、$${Z^2_1}$$は自由度$${m_2=1}$$の$${\chi^2}$$分布に従います。
分母を$${Z^2_1/1}$$と表すと、自由度$${1}$$の$${\chi^2}$$分布に従う確率変数$${Z^2_1}$$とその自由度であることが分かります。
これは、「自由度$${(m_1, m_2)}$$の$${F}$$分布」に従う「$${F=\cfrac{W_1/m_1}{W_2/m_2}}$$」に合致します。
具体的には、確率変数$${W=\cfrac{T/5}{Z_1^2/1}}$$は、自由度$${(5,1)}$$の$${F}$$分布に従います。

問題(イ)の解答は、自由度$${(5,1)}$$の$${F}$$分布 です。

■確率$${P(|V|\geq 1/\sqrt{\alpha})}$$

確率変数$${V}$$は自由度$${5}$$の$${t}$$分布$${t(5)}$$に従います。
$${t}$$分布のパーセント点表から上側%点を取得して、$${\alpha}$$を求めます。

必要な情報は自由度と上側確率です。
・「自由度は$${5}$$」です。
・$${|V|}$$は$${V}$$の絶対値であり、$${P(|V|\geq 1/\sqrt{\alpha})=0.05}$$は、確率分布の両側の確率(下側確率+上側確率)が$${0.05}$$であることを意味しています。
・$${t}$$分布は左右対称の分布なので、片側である「上側確率は$${0.025}$$」です。
また、以上から$${1/\sqrt{\alpha}}$$は上側2.5%点であることも分かりました。

$${t}$$分布のパーセント点表を見ましょう。

自由度$${5}$$の上側$${2.5\%}$$点は$${2.571}$$です。
つまり、$${1/\sqrt{\alpha}}$$は$${2.571}$$です。
$${\alpha}$$を計算しましょう。

$$
\begin{align*}
1/\sqrt{\alpha}&=2.571 \\
1&=2.571 \sqrt{\alpha} \\
\sqrt{\alpha}&=1/2.571\\
\alpha&=(1/2.571)^2 \\
\alpha&=0.151 \cdots \\
\end{align*}
$$

問題(ウ)の解答は、$${\alpha=0.15}$$ です。

【振り返り】
①この問題の(ア)・(イ)は、$${\chi^2}$$分布・$${t}$$分布・$${F}$$分布について、確率変数$${W}$$・$${t}$$・$${F}$$の数式、これらの確率変数の繋がり、確率分布間の繋がりの知識が問われる問題でした。
②(ウ)は(ア)の答えが判明していないと解答できない問題でした。
難問でした。

【予告】
振り返りの①のさまざまな関係をもっと深掘りします!
「知る」の章は、問題に沿って、確率変数$${T,V,W}$$が$${\chi^2}$$分布・$${t}$$分布・$${F}$$分布に従うことを、実験して確認いたします。

抽象化された数式に触れるとともに、具体的な値をもつデータを利用して、両面から、さまざまな関係性を理解していきましょう!

ホームラン予告のイラスト:「いらすとや」さんより

解答

⑤ です。

難易度 ややむずかしい

・知識:確率変数と$${\chi^2}$$分布・$${t}$$分布・$${F}$$分布の関係
・計算力:数式組み立て(低)、数式計算(低)
・時間目安:2分

知る


おしながき

公式問題集の問題に接近してみましょう!
今回は2本立てです!

1つ目は、公式問題集で提示された「確率変数$${\boldsymbol{T,V,W}}$$が$${\boldsymbol{\chi^2}}$$分布・$${\boldsymbol{t}}$$分布・$${\boldsymbol{F}}$$分布に従うこと」を実験して確かめます!

2つ目は、公式問題集の確率$${P(W \leq \alpha)=P(1/W \geq 1/\alpha)=P(V^2 \geq 1/\alpha)=P(|V|\leq 1/\sqrt{\alpha})}$$の展開を追います!

1.実験

実験方法

Pythonでたくさんデータを生成してシミュレーションを行います。
具体的には、確率変数$${Z_1, Z_2, Z_3, Z_4, Z_5, Z_6}$$のデータをそれぞれ10万個生成します。
シミュレーションした結果をヒストグラムに表して、そのヒストグラムが特定の確率分布の確率密度関数曲線に近似しているかどうかを確認します。

【実験方法詳細】
①互いに独立に標準正規分布に従う確率変数$${Z_1, Z_2, Z_3, Z_4, Z_5, Z_6}$$の乱数データを生成します。
②$${Z_1, Z_2, Z_3, Z_4, Z_5, Z_6}$$のデータから$${T,V,W}$$データを計算します。
・$${T=Z_2^2+Z_3^2+Z_4^2+Z_5^2+Z_6^2}$$
・$${V=\cfrac{Z_1}{\sqrt{T/5}}}$$
・$${W=\cfrac{T/5}{Z_1^2}}$$
③$${T,V,W}$$データのヒストグラムの形状とそれぞれが従う確率分布の確率密度関数曲線を比較します。
・$${T}$$:$${\chi^2(5)}$$
・$${V}$$:$${t(5)}$$
・$${W}$$:$${F(5,1)}$$

実験開始!

Pythonのコードを追いかけて、実験の臨場感を高めていきましょう!

①インポート

計算の得意な「NumPy」(ナンパイ)と、統計に強い「SciPy.stats」(サイパイ・スタッツ)の出番です。
「SciPy.stats」の次の関数を利用して確率密度関数の曲線を描きます。
⇒ norm:正規分布、chi2:カイ二乗分布、t:t分布、f:F分布
「matplotlib.pyplot」(マットプロットリブ・パイプロット)はグラフ描画のスペシャリスト!

import numpy as np
from scipy.stats import norm, chi2, t, f
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'MS Gothic'


②$${\boldsymbol{Z_1, \cdots, Z_6}}$$ データの生成

平均0、標準偏差1の標準正規分布$${N(0, 1^2)}$$に従う乱数を「norm.rvs()」で生成して、$${Z1, \cdots Z6}$$に設定します。
それぞれ10万個のデータを生成するように、sizeに設定しています。

# 設定 size:データ件数
size=100000
# 初期値
mu, stddev = 0, 1    # 正規分布の平均mu、標準偏差stddev
np.random.seed(11)   # 乱数シード

# 標準正規分布に従う確率変数Zデータの乱数生成
Z1 = norm.rvs(mu, stddev, size)
Z2 = norm.rvs(mu, stddev, size)
Z3 = norm.rvs(mu, stddev, size)
Z4 = norm.rvs(mu, stddev, size)
Z5 = norm.rvs(mu, stddev, size)
Z6 = norm.rvs(mu, stddev, size)


③$${\boldsymbol{Z_1, \cdots, Z_6}}$$データのヒストグラムをプロット

標準正規分布$${N(0, 1^2)}$$に近似していることを確認しましょう。
コード表示はスキップします♪

出力イメージ

青い部分は各データのヒストグラム、赤い線が標準正規分布の曲線です。
青い部分の稜線は赤い線に一致しています。
つまり、$${Z_1, \cdots, Z_6}$$は標準正規分布に近似しています。


④$${\boldsymbol{T,V,W}}$$のデータの生成

公式問題集の計算式に沿って、$${T,V,W}$$の値を計算します。
「**2」で二乗、「np.sqrt()」で平方根を計算しています。

・$${T=Z_2^2+Z_3^2+Z_4^2+Z_5^2+Z_6^2}$$
・$${V=\cfrac{Z_1}{\sqrt{T/5}}}$$
・$${W=\cfrac{T/5}{Z_1^2}}$$

# T,V,Wの算出
T = Z2**2 + Z3**2 + Z4**2 + Z5**2 + Z6**2
V = Z1 / np.sqrt(T/5)
W = (T/5) / (Z1**2)

print('【データ概要】')
print('  データ件数 T:', T.shape[0], 'V:', V.shape[0], 'W:', W.shape[0])
print('  平均       T:', T.mean().round(4), 'V:', V.mean().round(4), 
                   'W:', W.mean().round(4))
print('  分散       T:', T.var(ddof=0).round(4), 'V:', V.var(ddof=0).round(4),
                   'W:', W.var(ddof=0).round(4))
print('  Wの最小値', W.min().round(4), '最大値', W.max().round(4) )
出力イメージ

データ個数はそれぞれ10万個あります。
なおデータ$${W}$$の値はものすごくバラついています。
最小値が0.003、最大値が13億!

それでは、実験の核心に進みます。
$${T,V,W}$$のヒストグラムが、それぞれ$${\chi^2}$$分布、$${t}$$分布・$${F}$$分布の確率密度関数と当てはまるのか、グラフで確かめましょう!


⑤$${\boldsymbol{T}}$$データと$${\boldsymbol{\chi^2}}$$分布のプロット

最初の確認は、確率変数$${T}$$です。
自由度$${5}$$の$${\chi^2}$$分布$${\chi^2(5)}$$に従っているか確認しましょう。
コード表示はスキップします♪

出力イメージ

青色のヒストグラムと赤色の確率密度関数曲線は、ほぼ一致しています。
「確率変数$${T}$$は$${\chi^2(5)}$$に従う」ことが言えそうです!


⑥$${\boldsymbol{V}}$$データと$${\boldsymbol{t}}$$分布のプロット

次の確認は、確率変数$${V}$$です。
自由度$${5}$$の$${t}$$分布$${t(5)}$$に従っているか確認しましょう。

出力イメージ

青色のヒストグラムと赤色の確率密度関数曲線は、ほぼ一致しています。
「確率変数$${V}$$は$${t(5)}$$に従う」ことが言えそうです!


⑦$${\boldsymbol{W}}$$データと$${\boldsymbol{F}}$$分布のプロット

最後の確認は、確率変数$${W}$$です。
自由度$${(5,1)}$$の$${F}$$分布$${F(5,1)}$$に従っているか確認しましょう。

出力イメージ

青色のヒストグラムと赤色の確率密度関数曲線は、ほぼ一致しています。
「確率変数$${W}$$は$${F(5,1)}$$に従う」ことが言えそうです!


【まとめ】
$${T,V,W}$$の確認を終えました。
公式問題集の解答どおり、「確率変数$${\boldsymbol{T,V,W}}$$が$${\boldsymbol{\chi^2}}$$分布・$${\boldsymbol{t}}$$分布・$${\boldsymbol{F}}$$分布に従うこと」を確認できました。

数式の意味するところを実験で確認するのって、楽しいですね!

集合している人たちのイラスト(学生):「いらすとや」さんより


2.確率を追う!

公式問題集の問題文に、次のような記述があります。

$${V^2=1/W}$$が成り立つので、次の確率の等式の関係が成り立つ。
$${P(W \leq \alpha)=P(1/W \geq 1/\alpha)=P(V^2 \geq 1/\alpha)=P(|V|\geq 1/\sqrt{\alpha})}$$

また、問題の解答より、次を得ます。

確率変数$${W}$$は自由度$${(5,1)}$$の$${F}$$分布に従う。
確率変数$${V}$$は自由度$${5}$$の$${t}$$分布に従う。
確率変数$${T}$$は自由度$${5}$$の$${\chi^2}$$分布に従う。
確率変数$${Z_1}$$は標準正規分布に従う。

これらのことをミックスして日本語化すると。次のような感じになります。

①$${t}$$分布と$${F}$$分布の関係
自由度$${m}$$の$${t}$$分布に従う確率変数$${V}$$の二乗$${V^2}$$は、自由度$${(m,1)}$$の$${F}$$分布に従う確率変数$${W}$$の逆数$${1/W}$$と等しい。

②確率変数の変換
この①を利用すると、確率変数$${W}$$の確率$${P(W\leq \alpha)}$$を、確率変数$${V}$$の確率$${P(|V| \geq 1/\sqrt{\alpha})}$$に変換できる。

では、①から確認しましょう!

探検家・考古学者のイラスト:「いらすとや」さんより


①t分布とF分布の関係

$${t}$$分布に従う確率変数$${V=\cfrac{Z_1}{\sqrt{T/5}}}$$があります。
$${V^2}$$は、$${V^2=\cfrac{Z_1^2}{T/5}=\cfrac{Z^2_1/1}{T/5}}$$になります。
分子の$${Z^2_1}$$は自由度$${1}$$の$${\chi^2}$$分布に従います。
分母の$${T}$$は自由度$${5}$$の$${\chi^2}$$分布に従います。

分子・分母がそれぞれ$${\chi^2}$$分布に従う確率変数とその自由度になっています。これは$${F}$$分布の確率変数に合致します。

したがって、$${V^2=\cfrac{Z^2_1/1}{T/5}}$$は自由度$${(1,5)}$$の$${F}$$分布に従います。
確率変数$${V^2=\cfrac{Z^2_1/1}{T/5}}$$は、自由度$${(5, 1)}$$の$${F}$$分布に従う確率変数$${W=\cfrac{T/5}{Z^2_1}}$$の逆数である「自由度$${(1,5)}$$の$${F}$$分布に従う確率変数$${1/W=\cfrac{Z^2_1}{T/5}}$$」と一致するのです!

【重要】$${t}$$分布と$${F}$$分布の関係
自由度$${m}$$の$${t}$$分布に従う確率変数$${t}$$の二乗$${t^2}$$は、自由度$${(m,1)}$$の$${F}$$分布に従う確率変数$${F}$$の逆数$${1/F}$$と等しくなり、自由度$${(1, m)}$$の$${F}$$分布に従います。


②確率変数の変換

次の確率の展開を確認します。

$${P(W \leq \alpha)=P(1/W \geq 1/\alpha)=P(V^2 \geq 1/\alpha)=P(|V|\geq 1/\sqrt{\alpha})}$$

最初の項から順を追って見ていきましょう。

$${P(W \leq \alpha)}$$の$${W,\alpha}$$を$${\alpha W}$$で割ります。
$${P(W \leq \alpha)=P(W/ \alpha W \leq \alpha/ \alpha W)=P(1/\alpha \leq 1/W)=P(1/W \geq 1/ \alpha)}$$

$${P(1/W \geq 1/ \alpha)}$$の$${1/W}$$に$${1/W=V^2}$$を代入します。
$${P(1/W \geq 1/ \alpha)=P(V^2 \geq 1/ \alpha)}$$

$${P(V^2 \geq 1/ \alpha)}$$の$${V^2,\ 1/ \alpha}$$の平方根を取ります。
$${P(V^2 \geq 1/ \alpha)=P(\sqrt{V^2} \geq \sqrt{1/ \alpha})=P(\pm V \geq \sqrt{1}/ \sqrt{\alpha})=P(|V| \geq 1/ \sqrt{\alpha})}$$

$${P(|V| \geq 1/ \sqrt{\alpha})}$$ができました!

$${t}$$分布と$${F}$$分布が交錯するポイントは、とても快適な交差点でした。

ラウンドアバウトのイラスト:「いらすとや」さんより

実践する


一緒に実験してみよう

「知る」の実験を実施してみませんか?
この記事ではPythonの実践をサポートいたします。


電卓・手作業で作成してみよう!

今回はお休みです。
「問題を解く」の確率変数と確率分布の関係をお読みいただいたり、「知る」の実験をお読みくださいませ。


EXCELで作成してみよう!

今回はお休みです。

EXCELサンプルファイルのダウンロード
今回はファイル提供はありません。


Pythonで作成してみよう!

プログラムコードを読んで、データを流したりデータを変えてみたりして、データを追いかけることで、作表ロジックを把握する方法も効果的でしょう。
サンプルコードを揃えておけば、類似する作表作業を自動化して素早く結果を得ることができます。

今回は、「確率変数$${\boldsymbol{T,V,W}}$$が$${\boldsymbol{\chi^2}}$$分布・$${\boldsymbol{t}}$$分布・$${\boldsymbol{F}}$$分布に従うこと」の実験コードを詳細に紹介いたします。

データ数(変数size)を増減させて、自分だけのシミュレーションをお楽しみくださいね。

①インポート

「SciPy.stats」の次の関数を利用して確率密度関数の曲線を描きます。
  norm:正規分布、chi2:カイ二乗分布、t:t分布、f:F分布

import numpy as np
from scipy.stats import norm, chi2, t, f
import matplotlib.pyplot as plt
plt.rcParams['font.family'] = 'MS Gothic'

【日本語表示について】
最後のコードは、Windowsパソコンで、matplotlibのグラフに日本語表示するためのコードです。
Mac等の他のOSのコンピュータを利用する場合は、「'MS Gothic'」の部分をコンピュータで利用可能なフォント名に変更してください。
また、Google Colabの場合、このコードでは日本語表示ができません。
次のコードを実行して、日本語表示用のライブラリを利用してください。

!pip install japanize-matplotlib
import japanize_matplotlib


②$${\boldsymbol{Z_1, \cdots, Z_6}}$$ データの生成

平均0、標準偏差1の標準正規分布$${N(0, 1^2)}$$に従う乱数を「norm.rvs()」で生成して、$${Z1, \cdots Z6}$$に設定します。
【引数】norm.rvs( loc=平均, scale=標準偏差, size=乱数生成数 )

# 設定 size:データ件数
size=100000
# 初期値
mu, stddev = 0, 1    # 正規分布の平均mu、標準偏差stddev
np.random.seed(11)   # 乱数シード

# 標準正規分布に従う確率変数Zデータの乱数生成
Z1 = norm.rvs(mu, stddev, size)
Z2 = norm.rvs(mu, stddev, size)
Z3 = norm.rvs(mu, stddev, size)
Z4 = norm.rvs(mu, stddev, size)
Z5 = norm.rvs(mu, stddev, size)
Z6 = norm.rvs(mu, stddev, size)


③$${\boldsymbol{Z_1, \cdots, Z_6}}$$データのヒストグラムをプロット

for文で6つのグラフを描画しています。

# 描画領域の設定
fig, ax = plt.subplots(2, 3, figsize=(12, 8), tight_layout=True,
                       sharex=True, sharey=True)

# 標準正規分布N(0,1)のx軸とy軸(確率密度関数)の値を取得
x = np.linspace(-5, 5, 1001)
y = norm.pdf(x, mu, stddev)

# Z1~Z6データを2行×3列でプロット
for i, z in enumerate((Z1, Z2, Z3, Z4, Z5, Z6)):
    row, col = divmod(i, 3)
    # ヒストグラムをプロット
    ax[row][col].hist(z, bins=50, density=True, label=f'$Z_{i+1}$',
                      alpha=0.5, ec='navy')
    # 標準正規分布の曲線をプロット
    ax[row][col].plot(x, y, c='red', lw=2, label='$N(0,1)$')
    # 修飾
    ax[row][col].set_title(f'$Z_{i+1}$', fontsize=15)
    ax[row][col].legend()
plt.show()

【注釈】
1.subplotsの利用
plt.subplots( 行数, 列数, figsize=描画サイズ, sharex=True, Sharey=Trueで各グラフでラベルを一致させます)

2.xとyで確率密度関数の曲線を描画
y = norm.pdf(x, mu, stddev)で、xデータの値に対応する正規分布の確率密度関数の値を取得します。mu=0, stddev=1は前のコードで設定済みです。
x = np.linspace(-5, 5, 1001)で、-5~5の値を1001分割した配列を生成しています。
x と y を組み合わせることで、折れ線グラフに擬似的な曲線を描画できます。

3.サブプロット領域の指定
2行3列のサブプロット領域は、ax[行番号][列番号]、つまり、ax[0][0]、ax[0][1]、ax[0][2]、ax[1][0]、ax[1][1]、ax[1][2]のように識別されます。
for文の 連番 i に基づいて、divmod(i, 3)で商と余を求め、商を行番号、余を列番号に設定しています。

4.相対度数によるヒストグラム
hist(density=True)とすることで、相対度数のヒストグラムを表示できます。
相対度数にすると、合計が「1」になります。
確率密度関数も合計が「1」になるので、ヒストグラムと確率密度関数を同時描画する際に、density=True を設定します。

【出力イメージ】


④$${\boldsymbol{T,V,W}}$$のデータの生成

公式問題集の計算式に沿って、$${T,V,W}$$の値を計算します。
「**2」で二乗の計算をしています。
「np.sqrt()」で平方根を計算しています。

・$${T=Z_2^2+Z_3^2+Z_4^2+Z_5^2+Z_6^2}$$
・$${V=\cfrac{Z_1}{\sqrt{T/5}}}$$
・$${W=\cfrac{T/5}{Z_1^2}}$$

# T,V,Wの算出
T = Z2**2 + Z3**2 + Z4**2 + Z5**2 + Z6**2
V = Z1 / np.sqrt(T/5)
W = (T/5) / (Z1**2)

print('【データ概要】')
print('  データ件数 T:', T.shape[0], 'V:', V.shape[0], 'W:', W.shape[0])
print('  平均       T:', T.mean().round(4), 'V:', V.mean().round(4), 
                   'W:', W.mean().round(4))
print('  分散       T:', T.var(ddof=0).round(4), 'V:', V.var(ddof=0).round(4),
                   'W:', W.var(ddof=0).round(4))
print('  Wの最小値', W.min().round(4), '最大値', W.max().round(4) )

【注釈】
Z1~Z6はnumpy配列(ndarray)なので、Z2**2などの演算で「配列の要素に対して演算する」ことができます。
forループで配列の要素を取り出す必要がなく、シンプルなコードを書けます。

【出力イメージ】


⑤$${\boldsymbol{T}}$$データと$${\boldsymbol{\chi^2}}$$分布のプロット

最初の確認は、確率変数$${T}$$です。
自由度$${5}$$の$${\chi^2}$$分布$${\chi^2(5)}$$に従っているか確認しましょう。

  • Tデータに基づいてヒストグラムをプロット

  • chi2.pdfでカイ二乗分布$${\chi^2(5)}$$の確率密度関数の値を取得
    【引数】chi2.pdf( xデータ, df=自由度 )

# Tのプロット 自由度5のカイ二乗分布
# Tのヒストグラムの描画
plt.hist(T, bins=100, density=True, label='T', alpha=0.5, ec='navy')
# カイ二乗分布の曲線のデータ取得と描画
x = np.linspace(0, 30, 1001)
y = chi2.pdf(x, df=5)
plt.plot(x, y, label=f'$\chi^2(5)$', c='red', lw=2)
# その他の描画設定
plt.title('$T$は自由度$5$の$\chi^2$分布に従う')
plt.legend()
plt.show()

【出力イメージ】

青色のヒストグラムと赤色の確率密度関数曲線は、ほぼ一致しています。


⑥$${\boldsymbol{V}}$$データと$${\boldsymbol{t}}$$分布のプロット

次の確認は、確率変数$${V}$$です。
自由度$${5}$$の$${t}$$分布$${t(5)}$$に従っているか確認しましょう。

  • Vデータに基づいてヒストグラムをプロット

  • t.pdfで$${t}$$分布$${t(5)}$$の確率密度関数の値を取得
    【引数】t.pdf( xデータ, df=自由度 )

# Vのプロット 自由度5のt分布
# Vのヒストグラムの描画
plt.hist(V, bins=300, density=True, label='V', alpha=0.5, ec='navy')
# t分布の曲線のデータ取得と描画
x = np.linspace(-5, 5, 1001)
y = t.pdf(x, df=5)
plt.plot(x, y, label='$t(5)$', c='red', lw=2)
# その他の描画設定
plt.xlim(-5, 5)
plt.title('$V$は自由度$5$の$t$分布に従う')
plt.legend()
plt.show()

【出力イメージ】

青色のヒストグラムと赤色の確率密度関数曲線は、ほぼ一致しています。


⑦$${\boldsymbol{W}}$$データと$${\boldsymbol{F}}$$分布のプロット

最後の確認は、確率変数$${W}$$です。
自由度$${(5,1)}$$の$${F}$$分布$${F(5,1)}$$に従っているか確認しましょう。

  • Wデータに基づいてヒストグラムをプロット

  • f.pdfで$${F}$$分布$${F(5,1)}$$の確率密度関数の値を取得
    【引数】f.pdf( xデータ, dfn=分子側の自由度、dfd=分母側の自由度 )

# Wのプロット 自由度(5,1)のF分布
# Wのヒストグラムの描画
bins = np.linspace(0, 20, 75)
plt.hist(W, bins=bins, density=True, label='W', alpha=0.5, ec='navy',
         align='left')
# F分布の曲線のデータ取得と描画
x = np.linspace(0, 20, 1001)
y = f.pdf(x, dfn=5, dfd=1)
plt.plot(x, y, label='$F(5,1)$', c='red', lw=2)
# その他の描画設定
plt.title('$W$は自由度$(5,1)$の$F$分布に従う')
plt.legend()
plt.show()

【出力イメージ】

青色のヒストグラムと赤色の確率密度関数曲線は、ほぼ一致しています。


Pythonサンプルファイルのダウンロード
こちらのリンクからJupyter Notebook形式のサンプルファイルをダウンロードできます。



おわりに

今回で「標本分布の分野」を終了します。
最後の本問には標本分布のスーパースターが勢ぞろいでしたね!
次回から「推定の分野」が始まります。

推定・検定・分散分析のテーマでは、標準正規分布、$${t}$$分布、$${\chi^2}$$分布、$${F}$$分布が私達の味方になって、難問をバサバサと片付けてくれます!(たぶん)

勇者のイラスト(男性):「いらすとや」さんより

最後までお読みいただきまして、ありがとうございました。


のんびり統計シリーズの記事

次の記事

前の記事

目次

いいなと思ったら応援しよう!