ケィオスの時系列解析メモランダム

時系列解析、生体情報解析などをやわらかく語ります

【Rで統計入門】(7) 推定量とは:分散の推定量の仲間たち

 私たちがデータを統計的に処理するとき、そのデータの背後にある真の構造 (特徴や分布など) を見つけたいと考えます。たとえば、以下のような場合です。

  • 選挙の結果を予測するために、一部の人の投票を出口調査して全体の傾向を推測する。
  • 製品の不良品発生率を見積もるために、すべての製品を調べるのではなく、ランダムに選んだ製品のデータをもとに評価する。
  • 臨床研究で、新しい薬の効果を試験的に少数の患者に投与し、その結果をもとに多くの患者への影響を予測する。

このように、限られたデータ (標本)から、より大きな集団 (母集団)についての情報を推測するのが、推測統計です。今回は、そのような推測に用いる推定量のお話です。

定量とは

 統計学において 定量 (Estimator) とは、未知の母集団のパラメタ (parameter)を標本データから推定するための計算方法のことを指します。

 例えば、母集団の平均 \displaystyle{
\mu
} を推定したいとき、標本データ

\displaystyle{
X_1, X_2, \dots, X_n
}

から計算する標本平均

\displaystyle{
\bar{X} = \frac{1}{n} \sum_{i=1}^{n} X_i
}

が推定量の例です。標本平均の例では、母集団の平均 \displaystyle{
\mu
} という、数直線上の1点を、ピンポイント で狙い撃ち (推定)しようとしているので、このような推定を点推定と言います。

定量の定義

 一般に、ある母集団のパラメタ \displaystyle{
\theta
} を推定するための推定量 \displaystyle{
\hat{\theta}
} は、標本データ \displaystyle{
X _ 1, X _ 2, \dots, X _ n
} を使った計算式として定義されます。式で表せば、

\displaystyle{
\hat{\theta} = \hat{\theta}(X_1, X_2, \dots, X_n)
}

です。

 標本データは、通常、母集団から無作為抽出されますので、確率変数とみなすことができます。このとき、推定量も確率変数になります。

良い推定量の基準

 推定量にも、良し悪しがあり、この推定量が良いとか、悪いとかは、どの基準を採用するかによって変わったりします。「良い推定量」の基準には、以下のようなものがあります。

不偏性(Unbiasedness)

 推定量 \displaystyle{
\hat{\theta}
} が不偏であるとは、推定量の期待値が真の値と一致すること、つまり、

\displaystyle{
E \left[\hat{\theta} \right] = \theta
}

が成り立つことを意味します。

 たとえば、標本平均 \displaystyle{
\bar{X}
} は母平均 \displaystyle{
\mu
} の不偏推定量で、数学的に、

\displaystyle{
E\left[\bar{X}\right] = \mu
}

が成り立ちます。

 しかし、以下で紹介する標本分散 \displaystyle{
S _ n^ 2
} は母分散 \displaystyle{
\sigma^ 2
} の不偏推定量ではありません。

一致性(Consistency)

 推定量 \displaystyle{
\hat{\theta}
}一致推定量であるとは、標本サイズが無限 (\displaystyle{
n \to \infty
}) のとき、推定値が真の値 \displaystyle{
\theta
} に確率収束することを意味します。つまり、

\displaystyle{
\lim_{n \to \infty} P \left( \left|\hat{\theta} - \theta \right| < \varepsilon \right) = 1, \quad \forall \varepsilon > 0
}

例えば、標本平均 \displaystyle{
\bar{X}
} は母平均 \displaystyle{
\mu
} の一致推定量です。

有効性(Efficiency)

 推定量 \displaystyle{
\hat{\theta}
} の分散が最小であるとき、その推定量有効推定量と呼ばれます。

 分散が最小かどうかの判断は難しそうですが、クラメール・ラオの不等式が分散の最小値を教えてくれるので、判断することができます。

最尤推定量(MLE)

 最尤推定法(Maximum Likelihood Estimation: MLE)とは、標本データの確率を最大化するようなパラメータ推定量を求める方法です。

母平均 \displaystyle{
\mu
}最尤推定量は標本平均 \displaystyle{
\bar{X}
}、母分散 \displaystyle{
\sigma^ 2
}最尤推定量は標本分散 \displaystyle{
S _ n^ 2
} になります (不偏分散ではありません)。

 最尤推定量は大標本では良い性質(漸近正規性、一致性)を持つことが知られています。

分散の推定量とその特徴

 母集団の分散 \displaystyle{
\sigma^ 2
} を推定するとき、理由は知らないけど、\displaystyle{
n-1
} で割る不偏分散を使わないとダメみたいな、おきてはこの世にありません。分散の推定量は、不偏分散以外にもあり、それぞれの性質を知って、目的に合ったものを使ってください。以下では、分散の推定量をいくつか紹介します。

 まずは、母集団の分散 \displaystyle{
\sigma^ 2
} は以下の式で定義されることを覚えておいてください。

\displaystyle{
\sigma^2 = E \left[(X - \mu)^2 \right]

}

ここで、\displaystyle{
\mu = E[X]
} は母平均です。実際のデータからこの値を推定するために、標本データ \displaystyle{
X _ 1, X _ 2, \dots, X _ n
} を用いて、いくつかの推定量 (計算式)が提案されてきたわけです。

標本分散

 期待値の計算を標本平均と同じ形にとれば、標本分散 \displaystyle{
S^ 2
} の式

\displaystyle{
S^2 = \frac{1}{n} \sum_{i=1}^{n} \left(X_i - \bar{X} \right)^2
}

がえられます。ここで、\displaystyle{
\bar{X}
} は標本平均です。

 この統計量の期待値を計算すると (ここでは、統計量は確率変数です)

\displaystyle{
E \left[S^2 \right] = \frac{n-1}{n} \sigma^2
}

となるので、母分散 \displaystyle{
\sigma^ 2
} の過小評価になっています。そのため、標本分散に、不偏性はありません。

不偏分散

 分散の推定で、不偏性を満たすために、標本分散の分母を \displaystyle{
n-1
} に修正したものが 不偏分散 \displaystyle{
s^ 2
} です。

\displaystyle{
s^2 = \frac{1}{n-1} \sum_{i=1}^{n} \left(X_i - \bar{X} \right)^2
}

 名前が意味する通り、

\displaystyle{
E[s^2] = \sigma^2
}

が成り立つので、不偏性を持ちます。

最尤分散推定量

最尤推定法(MLE)を用いると、分散の最尤推定\displaystyle{
\hat{\sigma} _ {MLE}^ 2\
} は、標本分散と一致します。つまり、

\displaystyle{
\hat{\sigma}^2_{MLE} = S^2 = \frac{1}{n} \sum_{i=1}^{n} \left(X_i - \bar{X} \right)^2
}

 これは、大標本 (\displaystyle{
n \to \infty
}) で、一致推定量になります

分散の推定で、どの推定量を使うべきか

 標本数が少ないときは不偏分散、標本数が多いときは標本分散を使うことが多いです。

 ちなみに、標準偏差の推定量で不偏性を持つものは一般に存在しません。それでも、標本数が少ないときは不偏分散の平方根、標本数が多いときは標本分散の平方根を使うことが多いです。

Rで平均、分散、標準偏差を計算

 Rでは、平均の計算に標本平均、分散の計算には不偏分散、標準偏差の計算には不偏分散の平方根が使われています。

標本平均の計算

x <- c(82, 12, 73, 97, 51)  # サンプルデータ
mean(x)  # 平均を計算

不偏分散の計算

var(x)  # 分散を計算

不偏分散の平方根標準偏差を計算*

sd(x)  # 標準偏差を計算

Rで標本分散と不偏分散の分布を比較

# -------------------------------
# 正規母集団からのサンプリングと分散の分布(標本数表示付き)
# -------------------------------

# 1. パラメータ設定 -------------------------------
n_sample <- 5        # 標本サイズ N
n_trials <- 10000    # 試行回数
mu <- 0              # 母平均
sigma2 <- 4          # 母分散(標準偏差2)

# 2. 結果保存用ベクトル初期化 ---------------------
var_sample <- numeric(n_trials)    # 標本分散(biased, 分母n)
var_unbiased <- numeric(n_trials)  # 不偏分散(unbiased, 分母n-1)

# 3. シミュレーション実行 -------------------------
for (i in 1:n_trials) {
  x <- rnorm(n_sample, mean = mu, sd = sqrt(sigma2))
  var_sample[i] <- mean((x - mean(x))^2)
  var_unbiased[i] <- var(x)
}

# 4. ヒストグラムの描画 ---------------------------
par(mfrow = c(2, 1))  # 上下2分割表示

# (1)標本分散(biased)
hist(var_sample, breaks = 50, col = rgb(1, 0, 0, 0.4),
     xlim = range(c(var_sample, var_unbiased)), 
     main = paste0("標本分散(biased)の分布(n = ", n_sample, ")"),
     xlab = "分散の値", freq = FALSE)
abline(v = sigma2, col = "red", lty = 1, lwd = 2)
abline(v = mean(var_sample), col = "red", lty = 2, lwd = 3)
legend("topright", legend = c("母分散", "標本分散の平均"),
       col = "red", lty = c(1, 2), lwd = c(2, 3), bg = "white")

# (2)不偏分散(unbiased)
hist(var_unbiased, breaks = 50, col = rgb(0, 0, 1, 0.4),
     xlim = range(c(var_sample, var_unbiased)), 
     main = paste0("不偏分散(unbiased)の分布(n = ", n_sample, ")"),
     xlab = "分散の値", freq = FALSE)
abline(v = sigma2, col = "blue", lty = 1, lwd = 2)
abline(v = mean(var_unbiased), col = "blue", lty = 2, lwd = 3)
legend("topright", legend = c("母分散", "不偏分散の平均"),
       col = "blue", lty = c(1, 2), lwd = c(2, 3), bg = "white")