【統計検定準1級】正規分布
はじめに
この記事では、統計検定準1級取得に向けて学習したことをまとめていきます。
工学系の数学ではなく数理あるあるの、論述ゴリゴリな解答になっていると思いますのであらかじめご了承ください。
注意:さらに計算過程は数学文化の『省略の美』を無視してエレファントに書いています。
【リンク紹介】
・統計検定準1級のまとめ記事一覧
・これまで書いたシリーズ記事一覧
学習書籍について
この記事では「統計学実践ワークブック」を中心に、学んだことをまとめていきます。記事を読んで本格的に勉強してみたいなと思った方は、是非ご購入を検討なさってください。
参考書籍について
統計実践ワークブックは、大量の知識項目と問題が収められている反面、計算過程や知識背景が大きく省略されているため、知識体系をきちんと学ぶ参考書として東京大学から出版されている名著「統計学入門」を使っています。
※ワークブックとしては素晴らしい質だと思いますが、どうしてもその内容量とページ数の都合上、問題のない範囲で削除されているということです。人によっては1冊で問題ない方もおられると思いますが、私には無理でした。
正規分布
確率変数
であるとき、この確率密度関数
グラフの描画
コードはこちら
参考資料→Pythonで理解する統計解析の基礎
※参考にはしていますが表記は大分変更しています。
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib # グラフ上での日本語表示
from scipy import stats, integrate
from scipy.optimize import minimize_scalar # 関数の最小値を求める
# 表示桁数を小数点以下第3位に設定
%precision 3
# [Jupyter notebook only]
# グラフ表示を非インタラクティブモード(jupyter notebook内に表示)に設定
# インタラクティブモードだと別ウィンドウで表示される
%matplotlib inline
"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:N(mu, sigma)
機 能:正規分布
引 数:期待値mu, 標準偏差sigma
戻り値:連続型確率変数と確率密度関数(X, f)
"""""""""""""""""""""""""""""""""""""""""""""""""""
def N(mu, sigma):
# 連続型確率変数
X = [-np.inf, np.inf]
# 確率密度関数
def f(x):
return (1 / np.sqrt(2 * np.pi * sigma**2)) * np.exp(-(x - mu)**2 / (2 * sigma**2))
return X, f
mu = 2 # 期待値
sigma = 0.5 # 標準偏差
Xf = N(mu, sigma)
check_prob(Xf)
plot_prob(Xf, 0, 4)
基本関数
import numpy as np
import matplotlib.pyplot as plt
import japanize_matplotlib # グラフ上での日本語表示
from scipy import stats, integrate
from scipy.optimize import minimize_scalar # 関数の最小値を求める
# 表示桁数を小数点以下第3位に設定
%precision 3
# [Jupyter notebook only]
# グラフ表示を非インタラクティブモード(jupyter notebook内に表示)に設定
# インタラクティブモードだと別ウィンドウで表示される
%matplotlib inline
# グラフの線の種類
linestyles = ['-', '--', ':']
"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:E(Xf, g = lambda x: x)
機 能:連続型確率変数(確率変数の関数)の期待値を返す
引 数:連続型確率変数と確率関数X(タプル)
連続型確率変数Xの関数g(初期値:恒等関数)
戻り値:期待値
"""""""""""""""""""""""""""""""""""""""""""""""""""
def E(Xf, g = lambda x: x):
X = Xf[0] # 連続型確率変数
f = Xf[1] # 確率密度関数
def integrand(x):
return g(x) * f(x)
expection = integrate.quad(func = integrand, # 被積分関数
a = -np.inf, # 積分区間
b = np.inf # 積分区間
)[0]
return expection
"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:V(Xf, g = lambda x: x)
機 能:連続型確率変数(確率変数の関数)の分散を返す
引 数:連続型確率変数と確率関数X(タプル)
連続型確率変数Xの関数g(初期値:恒等関数)
戻り値:分散
"""""""""""""""""""""""""""""""""""""""""""""""""""
def V(Xf, g = lambda x: x):
X = Xf[0] # 連続型確率変数
f = Xf[1] # 確率密度関数
expection = E(Xf, g)
def integrand(x):
return (g(x) - expection) ** 2 * f(x)
variance = integrate.quad(func = integrand, # 被積分関数
a = -np.inf, # 積分区間
b = np.inf # 積分区間
)[0]
return variance
"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:check_prob(Xf)
機 能:連続型確率変数が確率の性質を満たしているかを確認する
引 数:連続型確率変数と確率密度関数(タプル)
戻り値:なし
"""""""""""""""""""""""""""""""""""""""""""""""""""
def check_prob(Xf):
X = Xf[0] # 連続型確率変数
f = Xf[1] # 確率密度関数
f_min = minimize_scalar(f).fun
assert f_min >= 0, '確率密度関数が負の値をとります'
prob_sum = np.round(integrate.quad(f, -np.inf, np.inf)[0], 6)
assert prob_sum == 1, f'確率の和が{prob_sum}になりました'
print(f'期待値は{E(Xf):.3f}')
print(f'分散は{V(Xf):.3f}')
"""""""""""""""""""""""""""""""""""""""""""""""""""
関数名:plot_prob(Xf, x_min, x_max)
機 能:確率密度関数と期待値を図示する
引 数:連続型確率変数と確率密度関数X(タプル)
定義域の最低値
定義域の最大値
戻り値:なし
"""""""""""""""""""""""""""""""""""""""""""""""""""
def plot_prob(Xf, x_min, x_max):
X = Xf[0] # 連続型確率変数
f = Xf[1] # 確率密度関数
# 累積分布関数
def F(x):
return integrate.quad(f, -np.inf, x)[0]
xs = np.linspace(x_min, x_max, 100)
fig = plt.figure(figsize = (10, 6))
ax = fig.add_subplot(1, 1, 1)
# 確率密度関数のグラフ
ax.plot(xs, [f(x) for x in xs], label = '確率密度関数f(x)', color = '#006C4F')
# 累積分布関数のグラフ
ax.plot(xs, [F(x) for x in xs], label = '累積分布関数F(x)', ls = '--', color = '#ee7800')
# グラフ設定
# ax.set_xticks(np.append(X, E(Xf))) # x目盛値
# ax.set_ytickx() # y目盛値
# ax.set_xlim() # x軸の範囲
# ax.set_ylim() # y軸の範囲
# ax.xlabel() # x軸ラベル
# ax.ylabel() # y軸ラベル
ax.legend() # 凡例
# 描画
plt.show()
正規分布の再生性
-
はX_1 + X_2 + \cdots + X_n に従う。N(\mu_1 + \mu_2 + \cdots + \mu_n, {\sigma_1}^2 + {\sigma_s}^2 + \cdots + {\sigma_n}^2) -
はc_1 X_1 + c_2 X_2 + \cdots + c_n X_n に従う。N(c_1 \mu_1 + c_2 \mu_2 + \cdots c_n \mu_n, {c_1}^2 {\sigma_1}^2 + {c_2}^2 {\sigma_2}^2 + \cdots + {c_n}^2 {\sigma_n}^2)
ただし、 は定数とする。c_1, c_2, \cdots, c_n
特に
-
はX_1 + X_2 + \cdots + X_n に従う。N(n \mu, n \sigma^2) -
とするとき、\overline{X} = \cfrac{X_1 + X_2 + \cdots + X_n}{n} は\overline{X} に従う。N(\mu, \frac{\sigma^2}{n})
正規分布の線形変換
(※証明は今後掲載予定・・・(。´・ω・)?)
正規分布の期待値
正規分布の分散
正規分布のモーメント母関数
標準正規分布
正規分布
とおく(この変換を標準化(standardixation)という)。このとき
となり、この確率密度関数
標準正規分布の確率密度関数
以後、標準正規分布の確率密度関数
標準正規分布の累積分布関数
標準正規分布の累積分布関数
標準正規分布表
標準正規分布は、その便利さから確率変数
とするとき、
※行は
手作りしました 笑 |
例題
(「統計学実践ワークブック」より)
問6.1
あるテストの受験者は全部で1000人であり、受験者全体でのテストの得点の分布は正規分布
[1] A君およびB君の偏差値はいくらか。
[2] A君の得点とB君の得点の間に入る受験者の人数はおおよそ何人か。
[3] このテストの全受験者の得点の箱ひげ図を描いた場合、四分位範囲(箱の長さ)はいくらか。
[4] このテストで65点以上の受験者のみを集めた場合、彼・彼女らの得点の平均値はおよそいくらか。
解答
[1] A君およびB君の偏差値はいくらか。
テストの得点を
ここで、一次変換
とおけば、
ところで偏差値とは、正規分布
ゆえに偏差値
であるから、求めるA君の偏差値は、A君の得点が
またB君は
[2] A君の得点とB君の得点の間に入る受験者の人数はおおよそ何人か。
テストの得点を標準化して解いていく(∵標準正規分布表を用いて計算したいから)。
まず、A君の得点を標準化した値を
である。同様にB君の得点を標準化した値を
である。ゆえに、標準正規分布において
となる。したがって求める受験者の人数は
[3] このテストの全受験者の得点の箱ひげ図を描いた場合、四分位範囲(箱の長さ)はいくらか。
四分位範囲は定義より
である。ただし、
を満たすものとする。よって、
である。標準正規分布表より
である。ここで、
同様に
である。よって、
以上より、求める四分位範囲は
[4] このテストで65点以上の受験者のみを集めた場合、彼・彼女らの得点の平均値はおよそいくらか。
であるから、
である。つまり
であるので、
以上より、
参考資料
- 日本統計学会(編集).日本統計学会認定 統計検定準1級対応 統計学実践ワークブック.学術図書出版社.2020
- 東京大学教養学部統計学教室.統計学入門(基礎統計学Ⅰ).東京大学出版会.1991
- 小寺 平治.新統計入門.裳華房.1996
- 稲垣 宣生, 山根 芳知, 吉田 光雄.統計学入門.裳華房.1992
- 長瀬道弘・芦野隆一.微分積分概説.サイエンス社.2007
- 加藤文元.チャート式シリーズ 大学教養 微分積分.数研出版.2024
ご協力のほどよろしくお願いします。
Discussion