1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

【統計検定2級】「95%信頼区間」の本当の意味、勘違いしてない?Pythonで図解してみた

1
Last updated at Posted at 2026-06-09

はじめに

統計学を学び始めて、「推測統計」の章に入ると必ず登場する「95%信頼区間」
テストにもよく出る超重要キーワードですが、実は多くの人がある致命的な勘違いをしたまま覚えてしまっています。

今回は、Google ColaboratoryとPythonを使って、95%信頼区間の「本当の意味」を視覚的にシミュレーションしてみたいと思います!

💡 よくある勘違い:「確率95%で当たる」わけではない?

95%信頼区間を計算して [45.2, 53.8] という結果が出たとします。
このとき、以下のように解釈していませんか?

誤った解釈:「真の平均値(母平均)が、45.2から53.8の間に入っている確率は95%である」

実はこれ、厳密には間違いなんです。
統計学(頻度論)の世界では、「真の平均値(母平均)」は神様だけが知っている「固定された1つの値」です。動いたりブレたりしないので、「区間の中に入る確率」という考え方自体が成立しません。(入っているか、入っていないかの100%か0%のどちらかです)

では、本当の意味は?

正解はこちらです。

⭕️ 正しい解釈:「同じやり方で標本抽出と区間推定を100回繰り返したとき、そのうちの約95回(95個の区間)は、真の平均値を含んでいる」

つまり、95%というのは「計算された特定の区間」についての確率ではなく、「この調査手法(推定方法)自体の信頼度」を表しています。

言葉だけだと「うーん?」となると思うので、Pythonで100回調査をして、実際にグラフを描いてみましょう!

Pythonでシミュレーションしてみる

神様目線で「真の平均値(母平均)が50」のデータを用意します。
そこからデータを少しだけすくい取って(サンプリング)、95%信頼区間を計算する、という作業を100回繰り返してグラフに線を引いてみます。

Colabに以下のコードを貼り付けて実行してみてください。

import numpy as np
import matplotlib.pyplot as plt

# --- 神様だけが知っている真の設定 ---
mu = 50      # 母平均(真の平均値)
sigma = 10   # 母標準偏差
# -----------------------------------

n = 30       # 1回の調査で集めるサンプルサイズ
trials = 100 # 調査を繰り返す回数

plt.figure(figsize=(10, 8))

hit_count = 0 # 真の平均値を捉えられた回数

for i in range(trials):
    # 1. サンプルをn個抽出
    sample = np.random.normal(mu, sigma, n)
    sample_mean = np.mean(sample)
    
    # 2. 95%信頼区間を計算 ( 1.96 * 標準誤差 )
    margin_of_error = 1.96 * (sigma / np.sqrt(n))
    lower_bound = sample_mean - margin_of_error
    upper_bound = sample_mean + margin_of_error
    
    # 3. 区間が「真の平均値(mu)」を含んでいるか判定
    if lower_bound <= mu <= upper_bound:
        color = 'skyblue'  # 含んでいたら水色
        hit_count += 1
    else:
        color = 'red'      # 外してしまったら赤色!
        
    # 区間を横線として描画
    plt.plot((lower_bound, upper_bound), (i, i), color=color, linewidth=2)
    # 標本平均を黒い点で描画
    plt.plot(sample_mean, i, 'ko', markersize=3)

# 神様だけが知っている真の平均値(50)に縦線を引く
plt.axvline(mu, color='black', linestyle='--', label=f'True Mean ({mu})')
plt.title(f'95% Confidence Intervals (Hit: {hit_count} / {trials})')
plt.xlabel('Value')
plt.ylabel('Trial Number (1 to 100)')
plt.legend()
plt.tight_layout()
plt.show()

結果を見てみよう

コードを実行すると、横線が100本引かれたグラフが出力されます。

image.png

いかがでしょうか?
中央の黒い点線が「真の平均値(50)」です。

水色の線は、真の平均値を見事に捉えられた区間です。
しかし、いくつか赤色の線が混ざっていますよね?これは「たまたま偏ったサンプルを引いてしまい、真の平均値を捉え損ねた不運な調査結果」です。

タイトル部分の (Hit: 95 / 100) を見てみてください。
実行するたびに少し変動しますが、だいたい95前後になっているはずです。

これが「100回中、約95回は真の値を捉えられる(約5回は外れる)=95%信頼区間」の本当の姿です!

おわりに

「95%の確率で当たる」と言われると1回の調査結果を絶対視してしまいそうになりますが、こうして可視化してみると「100回やったら5回は普通に外れる、そういう手法なんだな」と冷静に受け止めることができますよね。

統計検定2級では、こうした「言葉の正確な定義」を問うひっかけ問題がよく出るので、ぜひシミュレーションのイメージを頭の片隅に置いてみてください!

参考

信頼区間と信用区間の違い。

image.png

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?