【医療統計入門】Pythonで学ぶ標本平均・不偏分散・標準誤差②

前回の記事の続きです。

www.medicalmed.press

今回は「標本平均・不偏分散・標準誤差」について記事にしていきます。

標本統計量の性質を理解する!

標本平均を何度も計算してくれる関数を作ります。

def calc_sample_mean(size, n_trial):
sample_mean_array = np.zeros(n_trial)
for i in range(0, n_trial):
sample = choice(man_data, size=size, replace=True)
sample_mean_array[i] = sp.mean(sample)
return(sample_mean_array)

サンプルサイズを変えた時の標本平均の分布

サンプルサイズを10〜30まで変化させた場合を考えます。

np.random.seed(1)
size_10 = calc_sample_mean(size=10, n_trial=10000)
size_20 = calc_sample_mean(size=20, n_trial=10000)
size_30 = calc_sample_mean(size=30, n_trial=10000)
plt.figure(figsize=(8,8))
plt.xlabel("size")
sns.violinplot(data=[size_10,size_20,size_30])
ヴァイオリンプロットで可視化する

f:id:Medicmed:20180622043949p:plain

サンプルサイズが大きくなると、標本平均のバラツキが小さくなっていることが分かります。
箱ひげ図verでもグラフにしてみます。

plt.figure(figsize=(8,8))
plt.xlabel("size")
sns.boxplot(data=[size_10,size_20,size_30])
箱ひげ図Ver

f:id:Medicmed:20180622044245p:plain

箱とヒゲがそれぞれ短くなっているのが一応わかりますが、ヴァイオリンプロットの方がより視覚的で分かりやすいです。

標本平均の標準偏差と母集団標準偏差

標本平均の標準偏差は母標準偏差よりも小さいことをシミュレーションします。

size_array = np.arange(start=2, stop=102, step=2)
sample_mean_std_array = np.zeros(len(size_array))
np.random.seed(1)
for i in range(0, len(size_array)) :
sample_mean = calc_sample_mean(size =size_array[i], n_trial=100)
sample_mean_std_array[i] = sp.std(sample_mean, ddof=1)
plt.figure(figsize=(10,8))
plt.plot(size_array, sample_mean_std_array)
plt.xlabel('sample size')
plt.ylabel('sample_mean_std')
サンプルサイズと標本平均の標準偏差のグラフ

f:id:Medicmed:20180622052353p:plain

標準誤差と「標本平均の標準偏差」の関係

「標本平均の標準偏差」は数式を使って計算することができ、これを標準誤差と呼びます。
標準誤差は母集団から抽出された標本から「標本平均」を求める場合、標本平均の値が「母平均」に対してどの程度ばらついているかを表すものです。

standard_error = 1 / np.sqrt(size_array)
plt.figure(figsize=(10,8))
plt.plot(size_array, sample_mean_std_array,linewidth=6,alpha=0.5)
plt.plot(size_array,standard_error, color='indianred',linestyle="dashed",linewidth=3)
plt.xlabel('sample size')
plt.ylabel('sample_mean_std')

「標本平均の標準偏差」と標準誤差のグラフを重ね合わせます。
水色の線が「標本平均の標準偏差」を表し、赤いドットの線が標準誤差を表します。
グラフから、シミュレーションで求めた「標本平均の標準偏差」と標準誤差がほぼ一致していることが分かります。

「標本平均の標準偏差」と標準誤差のグラフ

f:id:Medicmed:20180622053247p:plain

サンプルサイズが大きくなると不偏分散は母分散に近くなる

size_array = np.arange(start=10, stop=100100, step=100)
unbias_var_array_size = np.zeros(len(size_array))
np.random.seed(1)
for i in range(0, len(size_array)) :
sample = choice(man_data, size=size_array[i], replace=True)
unbias_var_array_size[i] = sp.var(sample, ddof = 1)
plt.figure(figsize=(10,8))
plt.plot(size_array, unbias_var_array_size)
plt.xlabel("sample size")
plt.ylabel("unbias var")
不偏分散とサンプルサイズのグラフ

f:id:Medicmed:20180622053919p:plain

グラフから不偏分散はサンプルサイズが大きくなるにつれて母分散に近づくことが分かります。
不偏分散と呼ばれるのは、その期待値が母分散と一致するからです。
このことから標本のバラツキの指標としては、「標本の分散(偏った分散)」ではなく不偏分散の方を使用します。

基本用語

偏差(deviation) : 測定値と平均値の差

誤差(error) : 測定値と真の値の差

残差(residual) : 測定値とモデルによる推定値の差

不偏性 : 推定量の期待値が推定したい母数の値に一致すること

有効性 : 推定量の中でバラツキが一番小さいこと

一致性 : 標本の大きさを大きくすると、推定したい母数の値に近づくこと

ぜひ参考にして見てください。
終わり。

今回参考にした書籍はコチラ!

すべての医療系学生・研究者に贈る 独習統計学応用編24講 ─分割表・回帰分析・ロジスティック回帰─

すべての医療系学生・研究者に贈る 独習統計学応用編24講 ─分割表・回帰分析・ロジスティック回帰─

Pythonで学ぶあたらしい統計学の教科書

Pythonで学ぶあたらしい統計学の教科書

統計学を本格的に勉強したい方向け!

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください