統計学における標本と母集団の違いについてわかりやすく解説

統計学において、標本と母集団の違いは最も基本的かつ重要な概念です。標本平均と母平均、標本分散と母分散など、紛らわしい用語が多く、最初の頃は混乱しがちです。

今回は、統計学の基礎に登場する標本と母集団の違いについてわかりやすくまとめます。

本記事の内容

  • 母集団と標本の定義
  • 母数と統計量の違い
  • 標本平均と標本分散の性質
  • Python でのシミュレーション

母集団と標本

母集団

母集団(population)とは、調査したい対象全体の集合です。例えば「日本人全員の身長」「ある工場で生産される全製品の重量」などが母集団に当たります。

母集団の特性を表すパラメータを母数(parameter)と呼びます。

  • 母平均: $\mu = E[X]$
  • 母分散: $\sigma^2 = E[(X – \mu)^2]$

標本

標本(sample)とは、母集団から取り出した一部のデータです。実際には母集団全体を調べることは不可能な場合が多いため、標本から母集団の性質を推測します。

$$ \text{標本}: \{x_1, x_2, \dots, x_N\} $$

$N$ を標本サイズと呼びます。

母数と統計量

概念 母数 統計量
定義 母集団の特性を表す定数 標本から計算される値
平均 $\mu$(母平均) $\bar{x} = \frac{1}{N}\sum x_i$(標本平均)
分散 $\sigma^2$(母分散) $s^2$(標本分散)
既知/未知 通常は未知 データから計算可能

統計量は標本から計算される関数であり、標本が変われば値も変わります。つまり、統計量は確率変数です。

標本平均の性質

標本平均 $\bar{X} = \frac{1}{N}\sum_{i=1}^{N} X_i$ の性質を確認しましょう。

期待値

$$ \begin{align} E[\bar{X}] &= E\left[\frac{1}{N}\sum_{i=1}^{N} X_i\right] = \frac{1}{N}\sum_{i=1}^{N} E[X_i] = \frac{1}{N} \cdot N\mu = \mu \end{align} $$

$E[\bar{X}] = \mu$ より、標本平均は母平均の不偏推定量です。

分散

$$ \begin{align} V[\bar{X}] &= V\left[\frac{1}{N}\sum_{i=1}^{N} X_i\right] = \frac{1}{N^2}\sum_{i=1}^{N} V[X_i] = \frac{\sigma^2}{N} \end{align} $$

標本サイズ $N$ が大きくなるほど、標本平均の分散は小さくなります。

標本分散と不偏分散

標本分散

$$ \begin{equation} s_N^2 = \frac{1}{N}\sum_{i=1}^{N}(x_i – \bar{x})^2 \end{equation} $$

$s_N^2$ の期待値を計算すると、

$$ E[s_N^2] = \frac{N-1}{N}\sigma^2 \neq \sigma^2 $$

標本分散は母分散を過小評価します。

不偏分散

$N$ の代わりに $N-1$ で割ることで、不偏推定量が得られます。

$$ \begin{equation} s^2 = \frac{1}{N-1}\sum_{i=1}^{N}(x_i – \bar{x})^2 \end{equation} $$

$$ E[s^2] = \sigma^2 $$

$N-1$ で割る理由は、標本平均 $\bar{x}$ を使って偏差を計算すると自由度が1つ失われるためです($N$ 個の偏差の和は必ず0になるため、独立な偏差は $N-1$ 個)。

Python でのシミュレーション

import numpy as np
import matplotlib.pyplot as plt

# 母集団のパラメータ
mu_pop = 170     # 母平均(身長cm)
sigma_pop = 8    # 母標準偏差

np.random.seed(42)

# 標本サイズによる標本平均のばらつきの変化
fig, axes = plt.subplots(1, 3, figsize=(16, 5))

sample_sizes = [5, 30, 200]
n_experiments = 2000

for idx, N in enumerate(sample_sizes):
    ax = axes[idx]
    sample_means = []
    for _ in range(n_experiments):
        sample = np.random.normal(mu_pop, sigma_pop, N)
        sample_means.append(sample.mean())

    sample_means = np.array(sample_means)
    ax.hist(sample_means, bins=50, density=True, alpha=0.6, color='blue')

    # 理論分布
    from scipy.stats import norm
    x_range = np.linspace(mu_pop - 15, mu_pop + 15, 200)
    ax.plot(x_range, norm.pdf(x_range, mu_pop, sigma_pop / np.sqrt(N)),
            'r-', linewidth=2, label=f'N({mu_pop}, {sigma_pop**2/N:.1f})')

    ax.axvline(x=mu_pop, color='k', linestyle='--', alpha=0.5)
    ax.set_title(f'N = {N}\nmean={sample_means.mean():.2f}, std={sample_means.std():.2f}', fontsize=12)
    ax.set_xlabel('Sample mean', fontsize=11)
    ax.set_ylabel('Density', fontsize=11)
    ax.legend(fontsize=10)
    ax.grid(True, alpha=0.3)

plt.suptitle('Distribution of Sample Mean for Different Sample Sizes', fontsize=14)
plt.tight_layout()
plt.show()

標本サイズが大きくなるほど、標本平均の分布が母平均の周りに集中していくことが確認できます。

import numpy as np
import matplotlib.pyplot as plt

# 標本分散と不偏分散の比較
np.random.seed(42)
mu_pop = 0
sigma_pop = 3
sigma_sq_pop = sigma_pop**2

sample_sizes = np.arange(3, 101)
n_experiments = 5000

biased_var_means = []
unbiased_var_means = []

for N in sample_sizes:
    biased = []
    unbiased = []
    for _ in range(n_experiments):
        sample = np.random.normal(mu_pop, sigma_pop, N)
        biased.append(np.var(sample))          # 1/N
        unbiased.append(np.var(sample, ddof=1)) # 1/(N-1)
    biased_var_means.append(np.mean(biased))
    unbiased_var_means.append(np.mean(unbiased))

fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(sample_sizes, biased_var_means, 'r-', linewidth=1.5, label='Biased (1/N)')
ax.plot(sample_sizes, unbiased_var_means, 'b-', linewidth=1.5, label='Unbiased (1/(N-1))')
ax.axhline(y=sigma_sq_pop, color='k', linestyle='--', linewidth=2, label=f'True variance = {sigma_sq_pop}')
ax.set_xlabel('Sample size N', fontsize=12)
ax.set_ylabel('Mean of estimated variance', fontsize=12)
ax.set_title('Biased vs Unbiased Variance Estimator', fontsize=13)
ax.legend(fontsize=11)
ax.grid(True, alpha=0.3)
plt.tight_layout()
plt.show()

不偏分散($N-1$ で割る方法)は標本サイズに関わらず母分散の正しい推定値を与える一方、標本分散($N$ で割る方法)は常に過小評価していることが確認できます。

まとめ

本記事では、標本と母集団の違いについて解説しました。

  • 母集団は調査対象全体、標本はそこから抽出した一部
  • 標本平均は母平均の不偏推定量であり、標本サイズが大きいほど分散が小さくなる
  • 標本分散($1/N$)は母分散を過小評価するため、不偏分散($1/(N-1)$)を使う
  • 統計量は確率変数であり、標本ごとに値が変わる

次のステップとして、以下の記事も参考にしてください。