極値推定

計量経済学大学院講義ノート

ノートこの章の到達目標

この章の目的は次の4点である。

  1. M 推定、GMM、SMM、MD を 極値推定 という一つの枠組みで理解する。
  2. 極値推定量の一致性を保証する 2 つの鍵、すなわち clean maximumuniform convergence を理解する。
  3. 漸近正規性の基本表現 \[ o_p(1)=H_n\sqrt{n}(\hat\theta-\theta_0)-Z_n \] を理解し、推論に必要な分散行列の構造を見る。
  4. 後続章で各推定法ごとの \(H\)\(\Sigma\) を具体化する準備を整える。
重要記法の確認

本章では以下の記法を用いる。

  • \(\theta_0\):真のパラメータ
  • \(\Theta \subseteq \mathbb{R}^p\):パラメータ空間
  • \(Q_n(\theta)\):標本目的関数
  • \(Q(\theta)\):母目的関数
  • \(\|\cdot\|\):ユークリッドノルム
  • \(\to_p\):確率収束、\(\to_d\):分布収束
  • \(o_p(1)\):0 への確率収束、\(O_p(1)\):確率的有界

また、本章では必要に応じてデータは独立同分布、すなわち i.i.d. であると仮定する。

1 予備知識:解析の言葉

極値推定の議論では、解析の言葉が頻繁に出てくる。ただし、この章で必要なのは「有限個のパラメタを推定する」ための有限次元の直観で十分である。

1.1 上限 sup

\(\sup\)上限 と読む。集合 \(A\) のすべての要素以上である数を上界といい、その中で最小のものを \(\sup A\) と書く。

例えば \[ \sup [0,1]=1, \qquad \sup (0,1)=1 \] である。\([0,1]\) では 1 が集合に入っているので最大値でもある。一方、\((0,1)\) では 1 は集合に入っていないので最大値ではないが、いくらでも 1 に近づけるので上限は 1 である。

極値推定で \[ \sup_{\theta\in\Theta} Q_n(\theta) \] と書くときは、「パラメタ \(\theta\) を動かしたときに達成できる目的関数の最良値」を表している。最大値が実際に存在するときは \(\max_{\theta\in\Theta} Q_n(\theta)\) と同じだが、存在するかどうかをまだ仮定したくないので \(\sup\) を使う。

1.2 コンパクト

有限次元、つまり \(\Theta\subseteq\mathbb R^p\) の場合には、コンパクト はほぼ

閉じていて、かつ有界である

と思ってよい。

閉じているとは、端点や境界を含むということである。有界であるとは、無限遠まで広がっていないということである。例えば \([0,1]\) や閉球 \[ \{\theta\in\mathbb R^p:\|\theta\|\le C\} \] はコンパクトである。一方、\((0,1)\) は端点を含まないのでコンパクトではなく、\(\mathbb R\) は無限に広がるのでコンパクトではない。

推定論でコンパクト性を仮定する理由は、パラメタが「端点の外」や「無限遠」に逃げる可能性を排除するためである。本章では有限個のパラメタしか扱わないので、この有限次元の理解で十分である。

1.3 連続関数

関数 \(Q(\theta)\) が連続であるとは、\(\theta\) を少しだけ動かすと \(Q(\theta)\) も少しだけしか変わらない、ということである。

多項式、指数関数、対数関数、そしてそれらを足したり掛けたり合成したりして作った関数は、多くの場合連続である。一方、 \[ 1\{\theta\ge 0\} \] のような指示関数は、\(\theta=0\) で急に値が変わるので連続ではない。

極値推定では、\(Q\) が連続であると、目的関数の山や谷が突然切れることがない。この性質が、最大化点の存在や clean maximum の確認に使われる。

1.4 Weierstrass の定理

Weierstrass の定理は、極値推定で何度も使う基本事実である。

ノートWeierstrass の定理

\(\Theta\subseteq\mathbb R^p\) がコンパクトで、\(Q:\Theta\to\mathbb R\) が連続なら、\(Q\)\(\Theta\) 上で最大値と最小値をとる。

つまり、単に \[ \sup_{\theta\in\Theta}Q(\theta) \] という上限があるだけでなく、それを実際に達成する点 \(\theta^*\) が存在して \[ Q(\theta^*)=\sup_{\theta\in\Theta}Q(\theta) \] と書ける。

この章では、\(\theta_0\) から一定距離以上離れた集合上で \(Q\) の最大値をとる点が存在することを使い、その点では識別により \(Q(\theta_0)\) より目的関数が低い、と示す。

1.5 収束と一様収束

数列 \(a_n\)\(a\) に収束するとは、\(n\) が大きくなると \(a_n\)\(a\) に近づくことである。確率変数 \(Z_n\)\(Z\) に確率収束するとは、任意の \(\varepsilon>0\) について \[ P(|Z_n-Z|>\varepsilon)\to 0 \] となることである。

関数列 \(Q_n(\theta)\) の場合には、2 種類の収束を区別する必要がある。

点ごとの収束は、各 \(\theta\) を固定すると \[ Q_n(\theta)\to Q(\theta) \] となることである。

一様収束は、\(\theta\) 全体で見た最大の誤差が小さくなることである。 \[ \sup_{\theta\in\Theta}|Q_n(\theta)-Q(\theta)|\to 0. \]

図式的には、点ごとの収束は「どの点も、個別に見れば近づく」、一様収束は「同じ \(n\) で、曲線全体がまとめて近づく」という違いである。

\[ \begin{array}{c} \text{点ごとの収束:}\quad \theta\text{ を固定してから }n\to\infty \\ \text{一様収束:}\quad \theta\text{ を全部動かしても最大誤差が小さい} \end{array} \]

次の R コードでは、誤差 \[ e_n(\theta)=Q_n(\theta)-Q(\theta) \] を 2 通りに作って、この違いを直接描いている。どちらも極限関数は \(0\) である。左側では誤差の曲線全体が \(0\) に押しつぶされていく。右側では、各固定点から見るとスパイクはいつか通り過ぎるので \(0\) に収束するが、どの \(n\) でも高さ 1 のスパイクが残っている。

theta <- seq(0, 1, length.out = 2000)
n_grid <- c(5, 20, 100)

# 一様収束する誤差: 曲線全体の振幅が小さくなる。
uniform_error <- function(theta, n) {
  sin(2 * pi * theta) / sqrt(n)
}

# 点ごとには 0 に収束するが、一様には収束しない誤差。
# 高さ 1 の三角形スパイクが theta = 1/n の位置に動いていく。
moving_spike <- function(theta, n) {
  pmax(0, 1 - 4 * n * abs(theta - 1 / n))
}

cols <- c("#0072B2", "#D55E00", "#009E73")

old_par <- par(mfrow = c(1, 2), mar = c(4, 4, 3, 1))

matplot(
  theta,
  sapply(n_grid, function(n) uniform_error(theta, n)),
  type = "l", lty = 1, lwd = 2, col = cols,
  xlab = expression(theta),
  ylab = expression(Q[n](theta) - Q(theta)),
  main = "Uniform convergence"
)
abline(h = 0, col = "gray70")
legend("topright", legend = paste("n =", n_grid),
       col = cols, lty = 1, lwd = 2, bty = "n")

matplot(
  theta,
  sapply(n_grid, function(n) moving_spike(theta, n)),
  type = "l", lty = 1, lwd = 2, col = cols,
  xlab = expression(theta),
  ylab = expression(Q[n](theta) - Q(theta)),
  main = "Pointwise, not uniform"
)
abline(h = 0, col = "gray70")
legend("topright", legend = paste("n =", n_grid),
       col = cols, lty = 1, lwd = 2, bty = "n")

par(old_par)
図 1: 点ごとの収束と一様収束の違い

この右側の例は、 \[ e_n(\theta)=\max\{0,1-4n|\theta-1/n|\} \] という誤差を描いている。このスパイクが正になる範囲は \[ \left|\theta-\frac1n\right|<\frac{1}{4n}, \qquad \text{つまり}\qquad \theta\in\left(\frac{3}{4n},\frac{5}{4n}\right) \] である。したがって、任意の固定された \(\theta\in[0,1]\) については \(e_n(\theta)\to0\) である。実際、\(\theta>0\) なら、十分大きな \(n\) ではスパイクは \(\theta\) よりずっと左側に移動している。また \(\theta=0\) では、各 \(n\) について \[ e_n(0)=\max\{0,1-4n|0-1/n|\}=\max\{0,-3\}=0 \] である。

しかし、一様収束はしない。なぜなら、各 \(n\) について \(\theta=1/n\) を選べば \[ e_n(1/n)=1 \] であり、 \[ \sup_{\theta\in[0,1]}|e_n(\theta)|=1 \] のままだからである。つまり、「どの固定点でも近づく」と「どこを見ても同時に近い」は別の条件である。

n_check <- c(5, 20, 100, 500, 2000)

sup_errors <- data.frame(
  n = n_check,
  uniform_error = 1 / sqrt(n_check),
  moving_spike_error = rep(1, length(n_check))
)

knitr::kable(
  sup_errors,
  digits = 3,
  col.names = c("n", "一様収束する例の sup 誤差", "スパイク例の sup 誤差")
)
表 1
n 一様収束する例の sup 誤差 スパイク例の sup 誤差
5 0.447 1
20 0.224 1
100 0.100 1
500 0.045 1
2000 0.022 1

極値推定の一致性では、一様収束が重要である。なぜなら、推定量 \(\hat\theta\) 自体が \(Q_n\) を見て動くため、固定された \(\theta\) だけで収束を確認しても足りないからである。

上のスパイク例でいえば、\(\hat\theta\) は固定された点ではない。\(Q_n\) の形を見て、その時々で高い場所を選ぶ。したがって、固定した \(\theta\) では消えているように見えるスパイクでも、最大化問題では \(\hat\theta\) がそのスパイクを追いかけてしまう可能性がある。一様収束は、このような「動き回る見かけの山」が目的関数全体に残っていないことを保証する条件である。

1.6 ブラケット数の直観

一様収束を示すには、無限個の関数 \[ \mathcal M=\{m(\cdot;\theta):\theta\in\Theta\} \] を同時に扱う必要がある。ブラケット数は、この関数族がどれくらい複雑かを測る道具である。

ブラケットとは、関数 \(f\) を上下から挟む 2 本の関数 \(\ell\)\(u\) の組である。 \[ \ell(x)\le f(x)\le u(x) \] で、さらに上下の幅の平均 \[ E[u(X)-\ell(X)] \] が小さいとき、そのブラケットはよい近似になっている。

\[ \begin{array}{c} u(x)\quad \text{上側の関数} \\ \hline f(x)\quad \text{挟まれる関数} \\ \hline \ell(x)\quad \text{下側の関数} \end{array} \]

次の図では、簡単な関数族 \[ m(x;\theta)=\sin(2\pi x)+\theta x, \qquad \theta\in[0,1] \] を考える。左側の灰色の線は、\(\theta\) を細かく動かして得られるたくさんの関数である。右側では、\(\theta\) の範囲を 4 つに分け、それぞれの区間に入る関数を上下 2 本の線で挟んでいる。

x <- seq(0, 1, length.out = 500)
m_fun <- function(x, theta) {
  sin(2 * pi * x) + theta * x
}

theta_many <- seq(0, 1, length.out = 25)
y_many <- sapply(theta_many, function(theta) m_fun(x, theta))
y_lim <- range(y_many)

J <- 4
theta_breaks <- seq(0, 1, length.out = J + 1)
band_cols <- adjustcolor(
  c("#0072B2", "#D55E00", "#009E73", "#CC79A7"),
  alpha.f = 0.22
)
edge_cols <- c("#0072B2", "#D55E00", "#009E73", "#CC79A7")

old_par <- par(mfrow = c(1, 2), mar = c(4, 4, 3, 1))

matplot(
  x, y_many,
  type = "l", lty = 1, lwd = 1, col = "gray70",
  xlab = "x", ylab = expression(m(x, theta)),
  ylim = y_lim,
  main = "Function class"
)
lines(x, m_fun(x, 0), col = "#0072B2", lwd = 2)
lines(x, m_fun(x, 1), col = "#D55E00", lwd = 2)
legend(
  "topright",
  legend = c(expression(theta == 0), expression(theta == 1)),
  col = c("#0072B2", "#D55E00"),
  lty = 1, lwd = 2, bty = "n"
)

plot(
  x, m_fun(x, 0),
  type = "n",
  xlab = "x", ylab = expression(m(x, theta)),
  ylim = y_lim,
  main = "Four brackets"
)

for (j in seq_len(J)) {
  theta_low <- theta_breaks[j]
  theta_high <- theta_breaks[j + 1]
  lower <- m_fun(x, theta_low)
  upper <- m_fun(x, theta_high)

  polygon(
    c(x, rev(x)),
    c(lower, rev(upper)),
    col = band_cols[j],
    border = NA
  )
  lines(x, lower, col = edge_cols[j], lwd = 1.5)
  lines(x, upper, col = edge_cols[j], lwd = 1.5)
}

for (theta in theta_many) {
  lines(x, m_fun(x, theta), col = adjustcolor("gray30", alpha.f = 0.35), lwd = 0.7)
}

legend(
  "topright",
  legend = paste0("bracket ", seq_len(J)),
  fill = band_cols,
  border = edge_cols,
  bty = "n"
)

par(old_par)
図 2: 関数族を有限個のブラケットで挟むイメージ

この例では \(x\in[0,1]\) なので、\(m(x;\theta)\)\(\theta\) について単調に増える。したがって、\(\theta\) が区間 \([\theta_{j-1},\theta_j]\) に入っているなら、 \[ m(x;\theta_{j-1}) \le m(x;\theta) \le m(x;\theta_j) \qquad (0\le x\le 1) \] である。このとき \[ \ell_j(x)=m(x;\theta_{j-1}), \qquad u_j(x)=m(x;\theta_j) \] が 1 つのブラケットになる。

ブラケットの幅は「帯の厚さ」である。たとえば \(X\)\([0,1]\) 上の一様分布なら、上の例で 4 等分した各ブラケットの平均幅は \[ E[u_j(X)-\ell_j(X)] = E[(\theta_j-\theta_{j-1})X] = \frac{1}{4}\cdot\frac{1}{2} = \frac18 \] である。もっと細かく分ければ帯は薄くなるが、必要なブラケットの数は増える。ブラケット数とは、「指定された幅以下の帯で関数族全体を覆うには、最低いくつ帯が必要か」を表す数である。

したがって、この例では 4 個のブラケットで平均幅 \(1/8\) の精度で関数族全体を挟めている。さらに、\(\theta\) の区間を \(J\) 等分すれば各ブラケットの平均幅は \(1/(2J)\) になるので、任意の \(\varepsilon>0\) に対して十分大きな有限の \(J\) を選べば、幅 \(\varepsilon\) 以下の有限個のブラケットで関数族全体を挟める。

有限個のブラケットで関数族全体を挟めるなら、無限個の関数を一つずつ見る代わりに、有限個の上側関数と下側関数だけを見ればよい。有限個に帰着できれば、大数の法則を同時に適用しやすくなる。

2 予備知識:線形代数の言葉

GMM や漸近正規性では、ベクトルと行列の記法を使う。ここでは、この章で必要な最小限をまとめる。

2.1 ベクトル

ベクトルは数を縦に並べたものである。 \[ x= \begin{pmatrix} x_1\\ x_2\\ \vdots\\ x_k \end{pmatrix} \in\mathbb R^k. \]

\(x'\) は転置を表し、縦ベクトルを横ベクトルに変える。 \[ x'=(x_1,x_2,\ldots,x_k). \]

2 つの同じ長さのベクトル \(x,y\in\mathbb R^k\) の内積は \[ x'y=\sum_{j=1}^k x_jy_j \] である。ノルムはベクトルの長さであり、 \[ \|x\|=\sqrt{x'x} \] と書く。

2.2 行列

行列は数を長方形に並べたものである。 \[ A= \begin{pmatrix} a_{11}&a_{12}&\cdots&a_{1k}\\ a_{21}&a_{22}&\cdots&a_{2k}\\ \vdots&\vdots&\ddots&\vdots\\ a_{r1}&a_{r2}&\cdots&a_{rk} \end{pmatrix} \in\mathbb R^{r\times k}. \]

\(A\in\mathbb R^{r\times k}\) は、\(r\)\(k\) 列の行列という意味である。\(A'\) は転置行列で、行と列を入れ替える。

2.3 足し算とスカラー倍

同じサイズの行列やベクトルは、成分ごとに足し算できる。 \[ \begin{pmatrix}1\\2\end{pmatrix} + \begin{pmatrix}3\\4\end{pmatrix} = \begin{pmatrix}4\\6\end{pmatrix}. \]

\(c\) を掛けるスカラー倍も成分ごとに行う。 \[ c \begin{pmatrix}1\\2\end{pmatrix} = \begin{pmatrix}c\\2c\end{pmatrix}. \]

2.4 掛け算

行列とベクトルの積 \(Ax\) は、\(A\) の列数と \(x\) の長さが一致するときに定義される。\(A\in\mathbb R^{r\times k}\)\(x\in\mathbb R^k\) なら、\(Ax\in\mathbb R^r\) である。 \[ (Ax)_i=\sum_{j=1}^k a_{ij}x_j. \]

例えば \[ \begin{pmatrix} 1&2\\ 3&4 \end{pmatrix} \begin{pmatrix} 5\\ 6 \end{pmatrix} = \begin{pmatrix} 1\cdot 5+2\cdot 6\\ 3\cdot 5+4\cdot 6 \end{pmatrix} = \begin{pmatrix} 17\\ 39 \end{pmatrix}. \]

行列同士の積 \(AB\) は、\(A\) の列数と \(B\) の行数が一致するときに定義される。成分は \[ (AB)_{ij}=\sum_{\ell}a_{i\ell}b_{\ell j} \] である。一般に \(AB=BA\) ではない。行列の掛け算では順番が重要である。

2.5 ランク

行列 \(A\)ランク \(\operatorname{rank}(A)\) は、\(A\) の列ベクトルの中に含まれる独立な方向の数である。同じ値は、行ベクトルの中に含まれる独立な方向の数としても定義できる。

例えば \[ A= \begin{pmatrix} 1&2\\ 2&4 \end{pmatrix} \] では、第 2 列が第 1 列の 2 倍なので、列方向の情報は実質的に 1 つしかない。したがって \(\operatorname{rank}(A)=1\) である。一方、 \[ B= \begin{pmatrix} 1&0\\ 0&1 \end{pmatrix} \] では 2 本の列が独立なので、\(\operatorname{rank}(B)=2\) である。

\(A\in\mathbb R^{r\times k}\) なら \[ \operatorname{rank}(A)\le \min\{r,k\} \] である。特に

  • \(\operatorname{rank}(A)=k\) のとき、\(A\)full column rank をもつという。
  • \(\operatorname{rank}(A)=r\) のとき、\(A\)full row rank をもつという。

full column rank は、\(A b=0\) を満たす \(b\)\(b=0\) しかないことと同値である。つまり、列の間に完全な線形関係がない。

計量経済学では、ランク条件は「冗長な情報がない」「パラメタを識別できる」という意味で現れる。例えば、回帰の設計行列 \(X\in\mathbb R^{n\times k}\) が full column rank であることは、説明変数の間に完全な多重共線性がないことを意味する。このとき \[ X'X \] は可逆であり、OLS の公式 \((X'X)^{-1}X'y\) が定義できる。

理由は次の通りである。任意の \(b\in\mathbb R^k\) について \[ b'X'Xb=(Xb)'(Xb)=\|Xb\|^2 \] である。\(X\) が full column rank なら、\(b\neq0\) なら \(Xb\neq0\) なので \[ b'X'Xb>0. \] したがって \(X'X\) は正定値であり、可逆である。

GMM でも同じ発想が出てくる。モーメント条件のヤコビアン \[ G=\frac{\partial g(\theta_0)}{\partial\theta'} \in\mathbb R^{K\times p} \] が full column rank \(p\) をもつという仮定は、\(p\) 個のパラメタの局所的な変化が、モーメント条件に独立な方向として現れることを意味する。これは局所識別のための基本的なランク条件である。

仮説検定では full row rank が出てくる。例えば \(r\) 個の制約 \[ a(\theta_0)=0 \] を検定するとき、ヤコビアン \[ A(\theta_0)=\frac{\partial a(\theta_0)}{\partial\theta'} \in\mathbb R^{r\times p} \] が full row rank \(r\) をもつという仮定は、\(r\) 個の制約が互いに冗長ではないことを意味する。

2.6 逆行列

正方行列 \(A\in\mathbb R^{k\times k}\) に対して、 \[ A^{-1}A=AA^{-1}=I_k \] を満たす行列 \(A^{-1}\) が存在するとき、\(A\) は可逆であるといい、\(A^{-1}\) を逆行列という。\(I_k\) は単位行列であり、対角成分が 1、それ以外が 0 の行列である。

2 次元の場合、 \[ A= \begin{pmatrix} a&b\\ c&d \end{pmatrix} \] について \(ad-bc\neq 0\) なら \[ A^{-1} = \frac{1}{ad-bc} \begin{pmatrix} d&-b\\ -c&a \end{pmatrix}. \]

公式を覚えるだけでなく、掃き出し法(行基本変形)で求める様子も見ておくとよい。例えば \[ A= \begin{pmatrix} 2&1\\ 1&1 \end{pmatrix} \] の逆行列を求める。まず、左に \(A\)、右に単位行列を置いた拡大行列を作る。 \[ \left[ \begin{array}{cc|cc} 2&1&1&0\\ 1&1&0&1 \end{array} \right]. \] 目標は、左側を単位行列に変形することである。まず第 1 行と第 2 行を入れ替える。 \[ \left[ \begin{array}{cc|cc} 1&1&0&1\\ 2&1&1&0 \end{array} \right]. \] 次に、第 2 行から第 1 行の 2 倍を引く。 \[ R_2\leftarrow R_2-2R_1 \] とすると \[ \left[ \begin{array}{cc|cc} 1&1&0&1\\ 0&-1&1&-2 \end{array} \right] \] となる。第 2 行に \(-1\) を掛けて、左下をきれいにする。 \[ R_2\leftarrow -R_2 \] より \[ \left[ \begin{array}{cc|cc} 1&1&0&1\\ 0&1&-1&2 \end{array} \right]. \] 最後に、第 1 行から第 2 行を引く。 \[ R_1\leftarrow R_1-R_2 \] すると \[ \left[ \begin{array}{cc|cc} 1&0&1&-1\\ 0&1&-1&2 \end{array} \right] = \left[ I\mid A^{-1} \right] \] が得られる。したがって \[ A^{-1} = \begin{pmatrix} 1&-1\\ -1&2 \end{pmatrix}. \] 実際に掛け算して確認すると \[ \begin{pmatrix} 2&1\\ 1&1 \end{pmatrix} \begin{pmatrix} 1&-1\\ -1&2 \end{pmatrix} = \begin{pmatrix} 1&0\\ 0&1 \end{pmatrix} \] である。

一般の次元でも同じように、拡大行列 \[ [A\mid I] \] を行基本変形で \[ [I\mid A^{-1}] \] に変形することで逆行列を計算できる。実務では、明示的に逆行列を作るより、\(Ax=b\) を直接解く数値計算の方が安定である。

正方行列 \(A\in\mathbb R^{k\times k}\) が可逆であることは、 \[ \operatorname{rank}(A)=k \] であることと同値である。ランクが落ちている行列は、どこかの方向の情報を失っているので、逆向きに一意に戻すことができない。

2.7 トレース

正方行列 \(A\)トレース は対角成分の和であり、 \[ \operatorname{tr}(A)=\sum_i a_{ii} \] と書く。トレースは、分散の合計やあとで見る射影行列の自由度を数えるときに出てくる。

よく使う性質は \[ \operatorname{tr}(AB)=\operatorname{tr}(BA) \] である。ただし、積が定義されるサイズである必要がある。

2.8 固有値と固有ベクトル

正方行列 \(A\) に対して、0 でないベクトル \(v\) と数 \(\lambda\)\[ Av=\lambda v \] を満たすとき、\(\lambda\) を固有値、\(v\) を固有ベクトルという。これは、\(A\) を掛けても \(v\) の向きは変わらず、長さだけが \(\lambda\) 倍になるという意味である。

例えば \[ D= \begin{pmatrix} 3&0\\ 0&1 \end{pmatrix} \] を考える。\(e_1=(1,0)'\)\(e_2=(0,1)'\) について \[ De_1= \begin{pmatrix} 3\\0 \end{pmatrix} =3e_1, \qquad De_2= \begin{pmatrix} 0\\1 \end{pmatrix} =1e_2 \] である。したがって、\(e_1\) は固有値 3 の固有ベクトル、\(e_2\) は固有値 1 の固有ベクトルである。この行列は横方向を 3 倍し、縦方向はそのままにする。

もう少しだけ面白い例として \[ A= \begin{pmatrix} 2&1\\ 1&2 \end{pmatrix} \] を考える。この行列は座標軸方向ではなく、斜め方向にわかりやすい伸び縮みをもつ。実際、 \[ A \begin{pmatrix} 1\\1 \end{pmatrix} = \begin{pmatrix} 3\\3 \end{pmatrix} =3 \begin{pmatrix} 1\\1 \end{pmatrix} \] なので、\((1,1)'\) は固有値 3 の固有ベクトルである。また \[ A \begin{pmatrix} 1\\-1 \end{pmatrix} = \begin{pmatrix} 1\\-1 \end{pmatrix} =1 \begin{pmatrix} 1\\-1 \end{pmatrix} \] なので、\((1,-1)'\) は固有値 1 の固有ベクトルである。つまり、この行列は \((1,1)'\) 方向を 3 倍し、\((1,-1)'\) 方向はそのままにする。

この様子は図で見るとわかりやすい。ここで「単位円に行列 \(A\) を掛ける」とは、円周上の各点を 2 次元ベクトルとして見て、そのすべてに同じ行列 \(A\) を掛けるという意味である。

単位円上の点は \[ x(t)= \begin{pmatrix} \cos t\\ \sin t \end{pmatrix}, \qquad 0\le t\le 2\pi \] と書ける。この各点を \[ y(t)=Ax(t) \] に移す。つまり、円周上の点 \[ \begin{pmatrix} x_1\\x_2 \end{pmatrix} \]\[ A \begin{pmatrix} x_1\\x_2 \end{pmatrix} = \begin{pmatrix} 2x_1+x_2\\ x_1+2x_2 \end{pmatrix} \] へ写す。これを円周上のすべての点について行うと、円全体が別の曲線に変形される。この例では、単位円は楕円になる。

次の図では、薄い灰色の円がもとの単位円、青い楕円が行列 \(A\) を掛けた後の像である。破線の矢印は変換前のベクトル、太い実線の矢印は変換後のベクトルを表す。赤と緑の矢印は固有ベクトル方向である。固有ベクトル方向では、行列を掛けても同じ直線上に残り、長さだけが固有値倍になる。

A <- matrix(c(2, 1, 1, 2), nrow = 2, byrow = TRUE)

angle <- seq(0, 2 * pi, length.out = 500)
unit_circle <- rbind(cos(angle), sin(angle))
image_circle <- A %*% unit_circle

q1 <- c(1, 1) / sqrt(2)
q2 <- c(1, -1) / sqrt(2)
ordinary <- c(1, 0)

draw_arrow <- function(v, col, lty = 1, lwd = 2) {
  arrows(0, 0, v[1], v[2], col = col, lty = lty, lwd = lwd, length = 0.1)
}

plot(
  t(unit_circle),
  type = "l", asp = 1,
  xlim = c(-3.4, 3.4), ylim = c(-3.4, 3.4),
  xlab = "first coordinate", ylab = "second coordinate",
  col = "gray75", lwd = 2,
  main = "A = [[2, 1], [1, 2]]"
)
lines(t(image_circle), col = "#0072B2", lwd = 2)
abline(h = 0, v = 0, col = "gray85")

# Original eigenvector directions.
draw_arrow(q1, col = "#D55E00", lty = 2, lwd = 2)
draw_arrow(q2, col = "#009E73", lty = 2, lwd = 2)

# Transformed eigenvectors.
draw_arrow(A %*% q1, col = "#D55E00", lwd = 3)
draw_arrow(A %*% q2, col = "#009E73", lwd = 3)

# A non-eigenvector direction bends away from the original line.
draw_arrow(ordinary, col = "gray35", lty = 2, lwd = 2)
draw_arrow(A %*% ordinary, col = "black", lwd = 3)

legend(
  "topleft",
  legend = c(
    "unit circle",
    "A times unit circle",
    "q1 direction, lambda = 3",
    "q2 direction, lambda = 1",
    "non-eigen direction"
  ),
  col = c("gray75", "#0072B2", "#D55E00", "#009E73", "black"),
  lty = c(1, 1, 1, 1, 1),
  lwd = c(2, 2, 3, 3, 3),
  bty = "n"
)
図 3: 固有ベクトルは、行列を掛けても方向が変わらない

破線の矢印は「変換前」の方向、太い実線の矢印は「変換後」の方向である。赤い固有方向 \(q_1=(1,1)'/\sqrt2\) は同じ方向のまま 3 倍に伸びる。緑の固有方向 \(q_2=(1,-1)'/\sqrt2\) は同じ方向のまま長さが変わらない。一方、黒い矢印で示した普通の方向 \((1,0)'\) は、\(A(1,0)'=(2,1)'\) となり、もとの方向から傾く。固有ベクトルとは、このような「傾かない特別な方向」のことである。

では、なぜこの「傾かない方向」を見つけるとうれしいのか。理由は、行列の働きを一番わかりやすい方向に分解できるからである。一般の方向にあるベクトルは、行列を掛けると向きも長さも同時に変わるので解釈しにくい。しかし固有ベクトル方向では、起きることは単純である。 \[ \text{固有ベクトル方向では、行列は「}\lambda\text{ 倍するだけ」である。} \] したがって、行列 \(A\) がどの方向を強く伸ばし、どの方向をあまり伸ばさないのかを、固有値と固有ベクトルで読むことができる。

計量経済学では、この見方が何度も出てくる。分散共分散行列の固有ベクトルは「データのばらつきが大きい方向」を表し、固有値はその方向の分散の大きさを表す。Hessian の固有ベクトルは目的関数の曲率の方向を表し、固有値はその方向にどれくらい急に曲がっているかを表す。GMM の重み行列や漸近分散行列を考えるときも、行列を「方向ごとの伸び縮み」として理解できると、どの方向で推定が精密か、どの方向で不安定かが見えやすくなる。

2.8.1 固有値の計算方法

固有値は \[ Av=\lambda v \]\[ (A-\lambda I)v=0 \] と書き換えて求める。\(v\neq0\) の解が存在するためには、行列 \(A-\lambda I\) がランク落ちしている必要がある。したがって \[ \det(A-\lambda I)=0 \] を解けば固有値が得られる。

上の例 \[ A= \begin{pmatrix} 2&1\\ 1&2 \end{pmatrix} \] では \[ A-\lambda I = \begin{pmatrix} 2-\lambda&1\\ 1&2-\lambda \end{pmatrix} \] だから \[ \det(A-\lambda I) =(2-\lambda)^2-1 =\lambda^2-4\lambda+3 =(\lambda-3)(\lambda-1). \] したがって固有値は \[ \lambda=3,\quad 1 \] である。

固有ベクトルは、それぞれの固有値を代入して \[ (A-\lambda I)v=0 \] を解けばよい。例えば \(\lambda=3\) なら \[ A-3I= \begin{pmatrix} -1&1\\ 1&-1 \end{pmatrix} \] なので \[ -v_1+v_2=0 \] より \(v_1=v_2\) である。したがって固有ベクトルは \((1,1)'\) の定数倍である。\(\lambda=1\) なら \[ A-I= \begin{pmatrix} 1&1\\ 1&1 \end{pmatrix} \] なので \[ v_1+v_2=0 \] より、固有ベクトルは \((1,-1)'\) の定数倍である。

一般の \(k\times k\) 行列でも考え方は同じである。

  1. \(\det(A-\lambda I)=0\) を解いて固有値を求める。
  2. 各固有値 \(\lambda\) について \((A-\lambda I)v=0\) を解いて固有ベクトルを求める。

ただし、次元が大きい行列では手計算で行列式を展開するのは現実的ではない。実務では、数値計算で固有値分解を行う。

対称行列では固有値は実数になり、異なる固有値に対応する固有ベクトルは直交する。したがって、対称行列は互いに直交する方向ごとの伸び縮みとして理解できる。計量経済学では、分散共分散行列、Hessian、GMM の重み行列などを理解するためにこの見方が重要である。

特に対称行列 \(A\) について、固有値を \(\lambda_1,\ldots,\lambda_k\)、対応する正規直交固有ベクトルを \(q_1,\ldots,q_k\) と書くと、 \[ A=Q\Lambda Q', \qquad Q=(q_1,\ldots,q_k), \qquad \Lambda=\operatorname{diag}(\lambda_1,\ldots,\lambda_k) \] と分解できる。このとき任意の \(z\) について \[ z'Az = (Q'z)'\Lambda(Q'z) = \sum_{j=1}^k \lambda_j c_j^2, \qquad c=Q'z \] である。したがって、すべての固有値が正なら \(z'Az>0\)、すべての固有値が 0 以上なら \(z'Az\ge0\) になる。この事実が、次に見る正定値・半正定値の判定につながる。

2.8.2 応用:PageRank

固有ベクトルは「行列を掛けても相対的な形が変わらない状態」を表す。これを使う有名な例が PageRank である。

5 つのページ A, B, C, D, E があり、リンクが次のようになっているとする。

  • A は B と C にリンクする。
  • B は C と D にリンクする。
  • C は A と E にリンクする。
  • D は C と E にリンクする。
  • E は A と D にリンクする。

次の R コードでは、このネットワークを描き、さらに PageRank を実際に計算している。

pages <- c("A", "B", "C", "D", "E")
links <- data.frame(
  from = c("A", "A", "B", "B", "C", "C", "D", "D", "E", "E"),
  to   = c("B", "C", "C", "D", "A", "E", "C", "E", "A", "D")
)

J <- length(pages)
S <- matrix(0, nrow = J, ncol = J, dimnames = list(pages, pages))

for (from in pages) {
  targets <- links$to[links$from == from]
  S[targets, from] <- 1 / length(targets)
}

alpha <- 0.85
G <- alpha * S + (1 - alpha) / J * matrix(1, J, J)

p <- rep(1 / J, J)
names(p) <- pages
history <- matrix(NA, nrow = 21, ncol = J, dimnames = list(0:20, pages))
history[1, ] <- p

for (iter in 1:20) {
  p <- as.vector(G %*% p)
  names(p) <- pages
  history[iter + 1, ] <- p
}

theta <- seq(pi / 2, pi / 2 - 2 * pi, length.out = J + 1)[1:J]
pos <- cbind(cos(theta), sin(theta))
rownames(pos) <- pages

plot(
  pos,
  type = "n", asp = 1,
  xlim = c(-1.35, 1.35), ylim = c(-1.35, 1.35),
  xlab = "", ylab = "", axes = FALSE,
  main = "Link network"
)

draw_edge <- function(from, to) {
  start <- pos[from, ]
  end <- pos[to, ]
  d <- end - start
  unit <- d / sqrt(sum(d^2))
  offset <- 0.03 * c(-unit[2], unit[1])
  arrows(
    start[1] + 0.16 * unit[1] + offset[1],
    start[2] + 0.16 * unit[2] + offset[2],
    end[1] - 0.16 * unit[1] + offset[1],
    end[2] - 0.16 * unit[2] + offset[2],
    length = 0.08, lwd = 1.4, col = "gray45"
  )
}

for (i in seq_len(nrow(links))) {
  draw_edge(links$from[i], links$to[i])
}

node_cex <- 8 * sqrt(p / max(p))
points(pos, pch = 21, bg = "#0072B2", col = "white", cex = node_cex)
text(pos, labels = pages, col = "white", font = 2, cex = 1.15)
legend(
  "bottomleft",
  legend = "node size: PageRank",
  pt.cex = 2, pch = 21, pt.bg = "#0072B2",
  col = "white", bty = "n"
)
図 4: PageRank のための小さなリンクネットワーク

ページの重要度ベクトルを \[ p= \begin{pmatrix} p_A\\p_B\\p_C\\p_D\\p_E \end{pmatrix} \] と書く。リンクをたどって重要度が移る行列を、列が「出発ページ」、行が「到着ページ」になるように書くと \[ S= \begin{pmatrix} 0&0&1/2&0&1/2\\ 1/2&0&0&0&0\\ 1/2&1/2&0&1/2&0\\ 0&1/2&0&0&1/2\\ 0&0&1/2&1/2&0 \end{pmatrix} \] である。各列の和は 1 である。

PageRank の基本発想は、重要なページからリンクされるページは重要である、という再帰的な考え方である。安定した重要度 \(p\)\[ p=Sp \] を満たす。これは \[ Sp=1\cdot p \] なので、\(p\)\(S\) の固有値 1 に対応する固有ベクトルである。

実際の PageRank では、リンク切れや閉じたグループを避けるために、ランダムに別ページへ飛ぶ確率を混ぜる。典型的には \[ G=\alpha S+(1-\alpha)\frac{1}{J}\mathbf 1\mathbf 1', \qquad 0<\alpha<1 \] という行列を作る。ここで \(J\) はページ数、\(\mathbf 1\) はすべての成分が 1 のベクトルである。上の R コードでは \(\alpha=0.85\) としている。

PageRank は \[ p=Gp \] を満たすベクトル、つまり \(G\) の固有値 1 に対応する固有ベクトルである。ただし、ランキングとして解釈するために、成分が非負で和が 1 になるように正規化する。

計算は反復でできる。最初は全ページを同じ重要度 \[ p^{(0)}= \begin{pmatrix} 1/J\\ \vdots \\ 1/J \end{pmatrix} \] とし、 \[ p^{(m+1)}=Gp^{(m)} \] を繰り返す。十分繰り返すと、\(p^{(m)}\) は安定したベクトルに近づく。

pagerank_result <- data.frame(
  page = pages,
  pagerank = as.numeric(p),
  rank = rank(-p, ties.method = "first")
)
pagerank_result <- pagerank_result[order(pagerank_result$rank), ]

knitr::kable(
  pagerank_result,
  digits = 3,
  col.names = c("ページ", "PageRank", "順位")
)
表 2
ページ PageRank 順位
C C 0.256 1
A A 0.229 2
E E 0.213 3
D D 0.175 4
B B 0.127 5

反復の途中も確認してみる。

selected_iters <- c(0, 1, 2, 5, 10, 20)
iteration_table <- data.frame(
  iteration = selected_iters,
  round(history[as.character(selected_iters), ], 3),
  check.names = FALSE
)

knitr::kable(
  iteration_table,
  digits = 3,
  col.names = c("反復回数", pages)
)
表 3
反復回数 A B C D E
0 0 0.200 0.200 0.200 0.200 0.200
1 1 0.200 0.115 0.285 0.200 0.200
2 2 0.236 0.115 0.249 0.164 0.236
5 5 0.231 0.125 0.254 0.175 0.215
10 10 0.229 0.127 0.256 0.175 0.213
20 20 0.229 0.127 0.256 0.175 0.213

2.8.3 PageRank とマルコフ過程

PageRank は、マルコフ過程の定常分布としても理解できる。いま、あるユーザーがページ上のリンクをランダムにクリックして移動すると考える。確率 \(\alpha\) ではリンクをたどり、確率 \(1-\alpha\) では全ページの中からランダムにジャンプする。このとき、\(G\) はページ間を移動するマルコフ連鎖の推移行列である。

\(p^{(m)}\) を「時点 \(m\) でユーザーが各ページにいる確率分布」とすると、 \[ p^{(m+1)}=Gp^{(m)} \] である。定常分布とは、1 回移動しても変わらない分布であり、 \[ p^*=Gp^* \] を満たす。したがって PageRank は、このランダムサーファー・マルコフ連鎖の定常分布である。

この見方をすると、PageRank の固有ベクトルが「安定した重要度」を表す理由がわかる。固有値 1 に対応する固有ベクトルは、何度リンクをたどっても分布の形が変わらない状態である。damping を入れた \(G\) では、どのページにも小さい確率でジャンプできるため、定常分布が一意になり、反復計算が安定しやすくなる。

2.9 多変量正規分布と分散共分散行列

正定値行列の話に進む前に、分散共分散行列が何を表しているかを整理しておく。

1 変量の正規分布は \[ X\sim N(\mu,\sigma^2) \] と書く。ここで \(\mu\) は平均、\(\sigma^2\) は分散である。多変量の場合、確率ベクトル \[ X= \begin{pmatrix} X_1\\ \vdots\\ X_k \end{pmatrix} \] が多変量正規分布に従うことを \[ X\sim N(\mu,\Sigma) \] と書く。ここで \[ \mu= \begin{pmatrix} E[X_1]\\ \vdots\\ E[X_k] \end{pmatrix} \] は平均ベクトルであり、 \[ \Sigma = \operatorname{Var}(X) = E[(X-\mu)(X-\mu)'] \] は分散共分散行列である。

2 変量なら \[ \Sigma= \begin{pmatrix} \operatorname{Var}(X_1)&\operatorname{Cov}(X_1,X_2)\\ \operatorname{Cov}(X_2,X_1)&\operatorname{Var}(X_2) \end{pmatrix} \] である。対角成分は各変数の分散であり、非対角成分は変数間の共分散である。共分散が正なら、\(X_1\) が大きいとき \(X_2\) も大きくなりやすい。共分散が負なら、\(X_1\) が大きいとき \(X_2\) は小さくなりやすい。

\(\Sigma\) が正定値のとき、多変量正規分布の密度は \[ f(x) = \frac{1}{(2\pi)^{k/2}|\Sigma|^{1/2}} \exp\left\{ -\frac12(x-\mu)'\Sigma^{-1}(x-\mu) \right\} \] である。ここで \[ (x-\mu)'\Sigma^{-1}(x-\mu) \] は、分散共分散行列で調整した距離である。\(\Sigma\) が大きい方向では、同じだけ動いても「それほど珍しくない」と判断される。

次の図では、平均 0 の 2 変量正規分布について、分散共分散行列を変えたときに等高線がどう変わるかを描いている。

dmvnorm2 <- function(x1, x2, Sigma) {
  X <- cbind(as.vector(x1), as.vector(x2))
  inv_Sigma <- solve(Sigma)
  quad <- rowSums((X %*% inv_Sigma) * X)
  dens <- exp(-0.5 * quad) / (2 * pi * sqrt(det(Sigma)))
  matrix(dens, nrow = nrow(x1), ncol = ncol(x1))
}

grid <- seq(-3, 3, length.out = 120)
grid_xy <- expand.grid(x = grid, y = grid)
x_mat <- matrix(grid_xy$x, nrow = length(grid), ncol = length(grid))
y_mat <- matrix(grid_xy$y, nrow = length(grid), ncol = length(grid))

Sigmas <- list(
  "independent" = matrix(c(1, 0, 0, 1), 2, 2),
  "positive covariance" = matrix(c(1, 0.75, 0.75, 1), 2, 2),
  "negative covariance" = matrix(c(1, -0.75, -0.75, 1), 2, 2)
)

old_par <- par(mfrow = c(1, 3), mar = c(4, 4, 3, 1))

for (name in names(Sigmas)) {
  z <- dmvnorm2(x_mat, y_mat, Sigmas[[name]])
  contour(
    grid, grid, z,
    xlab = expression(X[1]), ylab = expression(X[2]),
    main = name,
    asp = 1,
    drawlabels = FALSE,
    col = "#0072B2",
    lwd = 1.4
  )
  abline(h = 0, v = 0, col = "gray85")
}

par(old_par)
図 5: 分散共分散行列と多変量正規分布の等高線

独立な場合、等高線は軸に沿った円になる。正の共分散があると、等高線は右上がりに傾く。負の共分散があると、等高線は右下がりに傾く。したがって分散共分散行列は、「各変数がどれくらいばらつくか」だけでなく、「どの方向に一緒に動きやすいか」を表している。

この行列が半正定値でなければならない理由も自然である。任意のベクトル \(z\) について、線形結合 \(z'X\) の分散は \[ \operatorname{Var}(z'X) = z'\Sigma z \] である。分散は負になれないので、必ず \[ z'\Sigma z\ge0 \] でなければならない。この性質が、次の半正定値・正定値の定義につながる。

2.10 半正定値行列と正定値行列

対称行列 \(A\)半正定値 であるとは、任意のベクトル \(z\) について \[ z'Az\ge0 \] が成り立つことである。このとき \[ A\succeq0 \] と書くことがある。

対称行列 \(A\)正定値 であるとは、任意の 0 でないベクトル \(z\) について \[ z'Az>0 \] が成り立つことである。

正定値行列は、2 次関数 \[ z'Az \] が原点以外で必ず正になることを意味する。対称行列の場合、正定値であることは、すべての固有値が正であることと同値である。半正定値であることは、すべての固有値が 0 以上であることと同値である。

分散共分散行列は必ず半正定値である。確率ベクトル \(V\) の分散共分散行列を \[ \Omega=\operatorname{Var}(V) \] とすると、任意の \(z\) について \[ z'\Omega z = \operatorname{Var}(z'V) \ge0 \] だからである。もし \(z'V\) の分散が 0 になるような非ゼロの \(z\) が存在しなければ、\(\Omega\) は正定値である。

正定値行列は可逆であり、極値推定では目的関数の曲率や GMM の重み行列としてよく現れる。一方、半正定値行列は可逆とは限らない。例えば、分散共分散行列が特異である場合、データやモーメントの中に完全な線形関係があることを示している。

また、2 つの対称行列 \(A\)\(B\) について \[ A\succeq B \] と書くときは、 \[ A-B \] が半正定値であるという意味である。GMM の効率性を比較するときに、この半正定値の意味での大小関係を使う。

2.11 ベクトルについての微分

パラメタ \(\theta=(\theta_1,\ldots,\theta_p)'\) に依存するスカラー関数 \(q(\theta)\) の勾配は \[ \frac{\partial q(\theta)}{\partial\theta} = \begin{pmatrix} \partial q(\theta)/\partial\theta_1\\ \vdots\\ \partial q(\theta)/\partial\theta_p \end{pmatrix}. \]

2 階微分を並べた行列を Hessian という。 \[ \frac{\partial^2 q(\theta)}{\partial\theta\partial\theta'} = \left( \frac{\partial^2 q(\theta)}{\partial\theta_i\partial\theta_j} \right)_{i,j}. \]

よく使う公式は次の通りである。\(a\) はベクトル、\(A\) は対称行列とする。 \[ \frac{\partial a'\theta}{\partial\theta}=a, \qquad \frac{\partial}{\partial\theta}\left(\frac12\theta'A\theta\right)=A\theta. \]

また、\(b-A\theta\) という残差ベクトルに対して \[ \frac{\partial}{\partial\theta}(b-A\theta)'(b-A\theta) = -2A'(b-A\theta). \]

ベクトル値関数 \(g(\theta)\in\mathbb R^K\) の微分はヤコビアンで表す。 \[ G(\theta) = \frac{\partial g(\theta)}{\partial\theta'} \in\mathbb R^{K\times p}. \]

2.12 応用:OLS の行列表記

観測を縦に積んで \[ y= \begin{pmatrix} y_1\\ \vdots\\ y_n \end{pmatrix}, \qquad X= \begin{pmatrix} x_1'\\ \vdots\\ x_n' \end{pmatrix}, \qquad \beta= \begin{pmatrix} \beta_1\\ \vdots\\ \beta_k \end{pmatrix} \] と書く。線形回帰モデルは \[ y=X\beta_0+u \] である。

OLS は残差平方和 \[ S(\beta)=(y-X\beta)'(y-X\beta) \] を最小化する。微分公式を使うと \[ \frac{\partial S(\beta)}{\partial\beta} = -2X'(y-X\beta). \]

一階条件は \[ X'(y-X\hat\beta)=0 \] である。これを整理すると正規方程式 \[ X'X\hat\beta=X'y \] が得られる。\(X'X\) が可逆なら \[ \hat\beta=(X'X)^{-1}X'y \] である。

この式は、OLS 推定量が「残差をすべての説明変数と直交させる」ように選ばれていることを意味する。さらに \(y=X\beta_0+u\) を代入すると \[ \hat\beta-\beta_0=(X'X)^{-1}X'u = \left(\frac{X'X}{n}\right)^{-1}\left(\frac{X'u}{n}\right) \] となる。両辺に \(\sqrt n\) を掛けると \[ \sqrt n(\hat\beta-\beta_0) = \left(\frac{X'X}{n}\right)^{-1} \left(\frac{X'u}{\sqrt n}\right), \] となり、後で出てくる極値推定量の漸近正規性と同じ構造が見える。

2.13 応用:OLS と射影行列

OLS は、幾何学的には \(y\)\(X\) の列空間に射影する操作である。この見方を行列で表すと、回帰分析の多くの性質が短く書ける。

正方行列 \(P\)\[ P^2=P \] を満たすとき、\(P\)冪等行列 という。さらに \[ P'=P \] も満たすとき、\(P\) は直交射影行列である。

\(X\) が full column rank のとき、 \[ P_X=X(X'X)^{-1}X' \]\(X\) の列空間への直交射影行列である。実際、OLS の fitted value は \[ \hat y = X\hat\beta = X(X'X)^{-1}X'y = P_Xy \] と書ける。つまり、\(\hat y\)\(y\) を説明変数の張る空間に落としたものである。

残差を作る行列は \[ M_X=I-P_X \] である。OLS の残差は \[ \hat u = y-\hat y = (I-P_X)y = M_Xy \] と書ける。

射影行列は次の性質をもつ。 \[ P_X^2=P_X, \qquad P_X'=P_X, \qquad M_X^2=M_X, \qquad M_X'=M_X. \] また \[ X'M_X=0 \] である。これは、OLS 残差がすべての説明変数と直交することを行列で書いたものである。実際、 \[ X'\hat u = X'M_Xy =0 \] であり、これは正規方程式 \(X'(y-X\hat\beta)=0\) と同じ内容である。

射影行列のランクは、射影先の空間の次元を表す。\(X\)\(n\times k\) で full column rank なら \[ \operatorname{rank}(P_X)=k, \qquad \operatorname{rank}(M_X)=n-k. \] この \(n-k\) は OLS の残差自由度として現れる。冪等行列では、トレースとランクが一致するので \[ \operatorname{tr}(P_X)=k, \qquad \operatorname{tr}(M_X)=n-k \] でもある。

予備知識:確率的オーダー

極値推定の議論では、\(o_p(1)\)\(O_p(1)\) が頻繁に出てくる。どちらも確率変数列の「大きさ」を表す記法であるが、意味はかなり違う。

small \(o_p(1)\)

確率変数列 \(X_n\)\[ X_n=o_p(1) \] であるとは、\(X_n\) が 0 に確率収束するという意味である。すなわち、任意の \(\varepsilon>0\) について \[ P(|X_n|>\varepsilon)\to0 \] が成り立つ。

直観的には、\(X_n=o_p(1)\) は「確率的な誤差そのものが消えていく」という意味である。

big \(O_p(1)\)

確率変数列 \(X_n\)\[ X_n=O_p(1) \] であるとは、\(X_n\)確率的に有界 であるという意味である。すなわち、任意の \(\varepsilon>0\) について、十分大きな定数 \(M\) を選べば \[ \limsup_{n\to\infty}P(|X_n|>M)<\varepsilon \] が成り立つ。この \(M\)\(\varepsilon\) に依存してよいが、\(n\) には依存しない。

直観的には、\(X_n=O_p(1)\) は「0 に近づくとは限らないが、確率質量が無限遠へ逃げていかない」という意味である。

ヒントひとことで言うと
  • \(o_p(1)\):0 に近づく
  • \(O_p(1)\):発散しない

したがって \[ o_p(1)\quad\Rightarrow\quad O_p(1) \] である。しかし逆は一般には成り立たない。

3 つの正規分布の例

標準正規分布に従う確率変数 \(Z_n\sim N(0,1)\) を使って、次の 3 つの列を比べる。 \[ X_n=\frac{Z_n}{\sqrt n}, \qquad Y_n=Z_n, \qquad W_n=\sqrt n Z_n. \]

  • \(X_n=Z_n/\sqrt n\)\(o_p(1)\) である。分布が 0 のまわりに潰れていく。
  • \(Y_n=Z_n\)\(O_p(1)\) だが、\(o_p(1)\) ではない。分布は変わらないので、0 に潰れない。しかし無限遠へ逃げてもいない。
  • \(W_n=\sqrt n Z_n\)\(O_p(1)\) ではない。分布がどんどん広がり、どんな固定された範囲からも確率質量が逃げていく。
x <- seq(-6, 6, length.out = 2000)
n_grid <- c(1, 5, 25, 100)
cols <- c("#0072B2", "#D55E00", "#009E73", "#CC79A7")
eps <- 0.5

dens_small_o <- sapply(n_grid, function(n) dnorm(x, sd = 1 / sqrt(n)))
dens_big_o <- sapply(n_grid, function(n) dnorm(x, sd = 1))
dens_not_op <- sapply(n_grid, function(n) dnorm(x, sd = sqrt(n)))

old_par <- par(mfrow = c(1, 3), mar = c(4, 4, 3, 1))

matplot(
  x, dens_small_o,
  type = "l", lty = 1, lwd = 2, col = cols,
  xlab = "value", ylab = "density",
  main = expression(X[n] == Z[n] / sqrt(n))
)
abline(v = c(-eps, eps), col = "gray70", lty = 2)
legend("topright", legend = paste("n =", n_grid),
       col = cols, lty = 1, lwd = 2, bty = "n")

matplot(
  x, dens_big_o,
  type = "l", lty = 1, lwd = 2, col = cols,
  xlab = "value", ylab = "density",
  main = expression(Y[n] == Z[n])
)
abline(v = c(-eps, eps), col = "gray70", lty = 2)
legend("topright", legend = paste("n =", n_grid),
       col = cols, lty = 1, lwd = 2, bty = "n")

matplot(
  x, dens_not_op,
  type = "l", lty = 1, lwd = 2, col = cols,
  xlab = "value", ylab = "density",
  main = expression(W[n] == sqrt(n) * Z[n])
)
abline(v = c(-eps, eps), col = "gray70", lty = 2)
legend("topright", legend = paste("n =", n_grid),
       col = cols, lty = 1, lwd = 2, bty = "n")

par(old_par)
図 6: o_p(1), O_p(1), そして O_p(1) でない列の分布

左の図では、\(n\) が大きくなるほど分布が 0 に集中している。したがって、任意の固定された \(\varepsilon>0\) に対して、\([-\varepsilon,\varepsilon]\) の外に出る確率は 0 に近づく。これが \(o_p(1)\) である。

中央の図では、分布は変わらない。したがって、たとえば \(\varepsilon=0.5\) に対して \(P(|Y_n|>0.5)\) は 0 に近づかない。だから \(Y_n\)\(o_p(1)\) ではない。しかし、十分大きな \(M\) を選べば \(P(|Y_n|>M)\) は小さくできるので、\(Y_n=O_p(1)\) である。

右の図では、分布が広がっていく。どんな固定された \(M\) を選んでも、\(n\) が大きくなると \([-M,M]\) の外に出る確率が大きくなる。これは \(O_p(1)\) ではない。

次の図は、同じ違いを確率で見たものである。左側は「0 に近づくか」を見るために固定した \(\varepsilon=0.5\) の外へ出る確率を描いている。右側は「確率的に有界か」を見るために固定した \(M=2\) の外へ出る確率を描いている。

n_seq <- 1:200
eps <- 0.5
M <- 2

p_small_eps <- 2 * (1 - pnorm(eps * sqrt(n_seq)))
p_big_eps <- rep(2 * (1 - pnorm(eps)), length(n_seq))
p_not_op_eps <- 2 * (1 - pnorm(eps / sqrt(n_seq)))

p_small_M <- 2 * (1 - pnorm(M * sqrt(n_seq)))
p_big_M <- rep(2 * (1 - pnorm(M)), length(n_seq))
p_not_op_M <- 2 * (1 - pnorm(M / sqrt(n_seq)))

old_par <- par(mfrow = c(1, 2), mar = c(4, 4, 3, 1))

plot(
  n_seq, p_small_eps,
  type = "l", lwd = 2, col = "#0072B2",
  ylim = c(0, 1),
  xlab = "n", ylab = "probability",
  main = expression(epsilon == 0.5)
)
lines(n_seq, p_big_eps, lwd = 2, col = "#D55E00")
lines(n_seq, p_not_op_eps, lwd = 2, col = "#009E73")
legend(
  "right",
  legend = c(expression(Z[n] / sqrt(n)), expression(Z[n]), expression(sqrt(n) * Z[n])),
  col = c("#0072B2", "#D55E00", "#009E73"),
  lty = 1, lwd = 2, bty = "n"
)

plot(
  n_seq, p_small_M,
  type = "l", lwd = 2, col = "#0072B2",
  ylim = c(0, 1),
  xlab = "n", ylab = "probability",
  main = expression(M == 2)
)
lines(n_seq, p_big_M, lwd = 2, col = "#D55E00")
lines(n_seq, p_not_op_M, lwd = 2, col = "#009E73")
legend(
  "right",
  legend = c(expression(Z[n] / sqrt(n)), expression(Z[n]), expression(sqrt(n) * Z[n])),
  col = c("#0072B2", "#D55E00", "#009E73"),
  lty = 1, lwd = 2, bty = "n"
)

par(old_par)
図 7: small o と big O を尾確率で見る

極値推定の記法に戻ると、\(\eta_n=o_p(1)\) は「数値最適化の誤差が消える」ことを意味する。一方で、漸近正規性に出てくる \[ Z_n=\frac1{\sqrt n}\sum_{t=1}^n s(X_t;\theta_0) \] のような量は、通常 0 に消えるのではなく、非退化な正規分布に収束する。したがって典型的には \[ Z_n=O_p(1) \] だが、 \[ Z_n=o_p(1) \] ではない。

3 導入

構造モデルや半構造モデルの多くでは、まずデータからある目的関数 \(Q_n(\theta)\) を作り、その目的関数を最大化あるいは最小化することでパラメータを推定する。最小化問題も符号を反転させれば最大化問題として書けるので、本章では最大化に統一する。

定義 1 (極値推定量) \(\hat\theta\)\(\Theta\) 値の可測関数とする。\(\hat\theta\)\[ Q_n(\hat\theta) \geq \sup_{\theta\in\Theta} Q_n(\theta)-\eta_n, \tag{1}\] を満たし、かつ \(\eta_n=o_p(1)\) であるとき、\(\hat\theta\)極値推定量 と呼ぶ。

式 1\(\eta_n\) は、数値最適化の誤差を許すための項である。実際の応用では、特にシミュレーションを含む推定法では目的関数を厳密に最大化することは難しい。そのため、

  • 理論上の最大値に十分近い値を達成していればよい
  • その誤差が漸近的に無視できればよい

という立場をとる。

母目的関数 \(Q: \Theta \to \mathbb{R}\) は、標本目的関数の確率極限に対応する。真のパラメータ \(\theta_0\) は、通常 \[ Q(\theta_0) \geq Q(\theta) \qquad (\forall\theta\in\Theta) \] を満たす点として定義される。さらに \[ Q(\theta_0)>Q(\theta) \qquad (\forall\theta\neq \theta_0) \] が成り立つとき、\(\theta_0\) は識別されているという。

ヒント直観

極値推定の基本発想は単純である。

  • 有限標本では \(Q_n\) を最大化して \(\hat\theta\) を得る。
  • 標本が大きくなると \(Q_n\)\(Q\) に近づく。
  • したがって、\(Q_n\) の最大化点は \(Q\) の最大化点 \(\theta_0\) に近づくはずである。

本章の一致性理論は、この素朴な直観を厳密にしたものである。

3.1 極値推定の代表例

この章では後続章で詳しく扱う 4 種類の推定量を、極値推定という観点からまとめておく。

3.1.1 M 推定

M 推定では標本目的関数が \[ Q_n(\theta)=\frac{1}{n}\sum_{t=1}^n m(X_t;\theta) \] という標本平均の形をとる。したがって、独立同分布データのもとでは \[ Q_n(\theta) \to_p E[m(X_t;\theta)] \equiv Q(\theta) \] が各固定された \(\theta\) について成り立つ。

代表例は次の通りである。

  1. 最尤法
    \(m(X_t;\theta)=\log f(X_t;\theta)\) とおけば、最尤法は M 推定量になる。

  2. マルコフ過程の条件付き最尤法
    \(X_t=(Y_t,Y_{t-1})\) として \[ m(X_t;\theta)=\log f(Y_t\mid Y_{t-1};\theta) \] と置けばよい。

  3. 非線形最小二乗法
    条件付き平均が \(E[Y_t\mid Z_t]=\varphi(Z_t;\theta_0)\) であれば \[ Q_n(\theta)=-\frac1n\sum_{t=1}^n\bigl(Y_t-\varphi(Z_t;\theta)\bigr)^2 \] を最大化することで推定できる。

3.1.2 GMM

GMM ではモーメント条件 \[ E[g(X_t;\theta_0)]=0 \] を用いる。標本モーメントを \[ g_n(\theta)=\frac1n\sum_{t=1}^n g(X_t;\theta) \] とすると、標本目的関数は \[ Q_n(\theta)=-\frac12 g_n(\theta)'\widehat W_n g_n(\theta) \] で与えられる。ここで \(\widehat W_n\) は正定値対称な重み行列である。母目的関数は \[ Q(\theta)=-\frac12 g(\theta)'Wg(\theta), \qquad g(\theta)=E[g(X_t;\theta)] \] となる。

3.1.3 SMM

SMM は、データから得られるターゲット・モーメント \(g_n\) と、モデルからシミュレーションで得られるモーメント \(\gamma_m(\theta)\) を一致させる推定法である。標本目的関数は \[ Q_n(\theta)=-\frac12\bigl(g_n-\gamma_m(\theta)\bigr)'\widehat W_n\bigl(g_n-\gamma_m(\theta)\bigr) \] である。

3.1.4 Minimum Distance

Minimum Distance では、ある縮約形統計量 \(g_n\) と、その構造モデル上の対応物 \(\gamma(\theta)\) の距離を最小化する。目的関数は \[ Q_n(\theta)=-\frac12\bigl(g_n-\gamma(\theta)\bigr)'\widehat W_n\bigl(g_n-\gamma(\theta)\bigr) \] である。

4 一致性

推定量 \(\hat\theta\)一致 するとは \[ \hat\theta \to_p \theta_0 \] が成り立つことである。これは、標本サイズが大きくなるにつれて、\(\hat\theta\) が真の値 \(\theta_0\) に高い確率で近づくことを意味する。

極値推定量の一致性の本質は、

  1. 母目的関数 \(Q\)\(\theta_0\) で十分きれいに最大化されていること
  2. 標本目的関数 \(Q_n\)\(Q\) に一様に近づくこと

の 2 点に尽きる。

定理 1 (極値推定量の一致性) 次を仮定する。

  1. clean maximum:任意の \(\delta>0\) に対して \[ \sup_{\theta\in\Theta:\,\|\theta-\theta_0\|\geq \delta} Q(\theta) < Q(\theta_0). \]
  2. uniform convergence\[ \sup_{\theta\in\Theta} |Q_n(\theta)-Q(\theta)| = o_p(1). \]

このとき、定義 1 の意味で定義された任意の極値推定量 \(\hat\theta\) は一致する。すなわち \[ \hat\theta \to_p \theta_0. \]

証明. 任意の \(\delta>0\) を固定する。clean maximum より \[ \varepsilon =Q(\theta_0)-\sup_{\theta\in\Theta:\,\|\theta-\theta_0\|\geq \delta}Q(\theta) >0 \] である。

次の事象を考える。 \[ S_n= \left\{ |\eta_n|<\frac{\varepsilon}{3},\ \sup_{\theta\in\Theta}|Q_n(\theta)-Q(\theta)|<\frac{\varepsilon}{3} \right\}. \] 仮定より \(P(S_n)\to 1\)

\(S_n\) 上では \[ Q(\hat\theta) \ge Q_n(\hat\theta)-\frac{\varepsilon}{3} \ge Q_n(\theta_0)-\eta_n-\frac{\varepsilon}{3} \ge Q_n(\theta_0)-\frac{2\varepsilon}{3} \ge Q(\theta_0)-\varepsilon. \] したがって \[ Q(\hat\theta) > \sup_{\theta\in\Theta:\,\|\theta-\theta_0\|\ge \delta} Q(\theta). \] よって \(S_n\) 上では必ず \(\|\hat\theta-\theta_0\|<\delta\) である。ゆえに \[ P(\|\hat\theta-\theta_0\|<\delta)\ge P(S_n)\to 1. \] \(\delta>0\) は任意だから、\(\hat\theta\to_p\theta_0\) が従う。

ヒントclean maximum と識別の違い

識別は通常 \[ Q(\theta_0)>Q(\theta) \qquad (\theta\neq\theta_0) \] という一点ごとの比較で表される。他方、clean maximum は

\(\theta_0\) から一定距離以上離れた点では、\(Q\) が一様に低い

ことを要求する。したがって clean maximum は識別より少し強い条件であり、“遠く離れたところで \(Q(\theta)\)\(Q(\theta_0)\) に限りなく近づく” ような病的な状況を排除する。

4.1 clean maximum の検証

clean maximum を直接検証する代わりに、より使いやすい十分条件を使うことが多い。

補題 1 (clean maximum の十分条件) 次を仮定する。

  1. \(\Theta\) はコンパクトである。
  2. \(Q:\Theta\to\mathbb{R}\) は連続である。
  3. \(Q(\theta_0)>Q(\theta)\) がすべての \(\theta\neq\theta_0\) について成り立つ。

このとき clean maximum が成り立つ。

証明. 任意の \(\delta>0\) を固定する。集合 \[ A_\delta=\{\theta\in\Theta:\|\theta-\theta_0\|\ge \delta\} \] はコンパクトである。\(Q\) は連続だから、Weierstrass の定理より \(A_\delta\) 上で最大値をとる点 \(\theta_\delta^*\in A_\delta\) が存在する。すると \[ \sup_{\theta\in A_\delta}Q(\theta)=Q(\theta_\delta^*). \] しかし \(\theta_\delta^*\neq\theta_0\) なので、仮定 3 より \[ Q(\theta_\delta^*)<Q(\theta_0). \] したがって clean maximum が従う。

4.2 M 推定量における uniform convergence

M 推定では \[ Q_n(\theta)=\frac1n\sum_{t=1}^n m(X_t;\theta), \qquad Q(\theta)=E[m(X_t;\theta)] \] であるから、必要なのは \[ \sup_{\theta\in\Theta} \left| \frac1n\sum_{t=1}^n m(X_t;\theta)-E[m(X_t;\theta)] \right|=o_p(1) \] を示すことである。

点ごとの大数法則だけでは不十分である。各固定された \(\theta\) で収束していても、\(\theta\) を動かしたときに目的関数に「動き回る谷」や「スパイク」が残る可能性があるからである。これを排除するのが一様収束である。

4.2.1 ブラケット数

一様収束を示すために、関数族の複雑さを測る ブラケット数 を使う。

定義 2 (ブラケット数) \(L_1=\{f(X_t):E|f(X_t)|<\infty\}\) とし、\(\mathcal F\subseteq L_1\) を関数族とする。関数の組 \[ \{(\ell_{\varepsilon,1},u_{\varepsilon,1}),\ldots,(\ell_{\varepsilon,N},u_{\varepsilon,N})\} \]\(\mathcal F\) をレベル \(\varepsilon\)ブラケットする とは、任意の \(f\in\mathcal F\) に対してある \(i\) が存在し \[ \ell_{\varepsilon,i}\le f\le u_{\varepsilon,i}, \qquad E[u_{\varepsilon,i}-\ell_{\varepsilon,i}]\le \varepsilon \] が成り立つことをいう。

このようなブラケットの最小個数を \(N_{[]} (\mathcal F,\varepsilon)\) と書き、すべての \(\varepsilon>0\) に対して有限なら、\(\mathcal F\) は有限ブラケット数をもつという。

ブラケット数が有限であるとは、関数族全体を有限個の「上下からの挟み込み」で近似できるという意味である。これにより、無限個の関数に対する supremum を、有限個のブラケット上の maximum に帰着できる。

直観的には、次のように考えるとよい。パラメタ空間を小さな領域に分け、各領域に入る関数を 1 組の上下関数でまとめて挟む。

\[ \begin{array}{c} \Theta=B_1\cup B_2\cup\cdots\cup B_N\\[4pt] B_i \text{ に対応するブラケット: }[\ell_i,u_i] \end{array} \]

各ブラケットの中では \[ \ell_i(x)\le m(x;\theta)\le u_i(x) \] であり、幅 \(E[u_i(X)-\ell_i(X)]\) が小さい。したがって、ある \(\theta\) に対応する関数 \(m(\cdot;\theta)\) の標本平均は、そのブラケットの上側関数と下側関数の標本平均の間に挟まれる。

\[ \frac1n\sum_{t=1}^n \ell_i(X_t) \le \frac1n\sum_{t=1}^n m(X_t;\theta) \le \frac1n\sum_{t=1}^n u_i(X_t) \]

有限個の上側関数と下側関数について大数の法則を使えれば、無限個の \(m(\cdot;\theta)\) をまとめて制御できる。これがブラケット数を使う理由である。

補題 2 (ブラケット数による一様収束) \(\mathcal M=\{m(\cdot;\theta):\theta\in\Theta\}\) とする。次を仮定する。

  1. \(X_1,\ldots,X_n\) は独立同分布である。
  2. 任意の \(\varepsilon>0\) に対して \(N_{[]}(\mathcal M,\varepsilon)<\infty\) である。

このとき \[ \sup_{\theta\in\Theta}|Q_n(\theta)-Q(\theta)|=o_p(1) \] が成り立つ。実際にはより強く、almost surely の収束まで示せる。

証明. 要点だけ示す。任意の有理数 \(\varepsilon>0\) をとる。仮定より、\(\mathcal M\) をレベル \(\varepsilon\) でブラケットする有限個の関数対 \[ (\ell_{\varepsilon,1},u_{\varepsilon,1}),\ldots,(\ell_{\varepsilon,N},u_{\varepsilon,N}) \] が存在する。

任意の \(\theta\) について、ある \(i(\theta)\) が存在して \[ \ell_{\varepsilon,i(\theta)}(X_t) \le m(X_t;\theta) \le u_{\varepsilon,i(\theta)}(X_t) \] かつ \[ E\bigl[u_{\varepsilon,i(\theta)}(X_t)-\ell_{\varepsilon,i(\theta)}(X_t)\bigr]\le \varepsilon. \] したがって \[ Q_n(\theta)-Q(\theta) \le \frac1n\sum_{t=1}^n u_{\varepsilon,i(\theta)}(X_t)-E[u_{\varepsilon,i(\theta)}(X_t)] + \varepsilon. \] ここで右辺第1項は有限個のブラケット上の最大値で抑えられるので、大数の法則より \[ \max_{1\le i\le N} \left\{ \frac1n\sum_{t=1}^n u_{\varepsilon,i}(X_t)-E[u_{\varepsilon,i}(X_t)] \right\} \to 0 \] almost surely である。同様に下側ブラケットから \[ \inf_{\theta\in\Theta}(Q_n(\theta)-Q(\theta))\ge -\varepsilon+o_{a.s.}(1) \] が従う。よって \[ \sup_{\theta\in\Theta}|Q_n(\theta)-Q(\theta)|\le \varepsilon+o_{a.s.}(1). \] \(\varepsilon>0\) は任意だから結論が得られる。

4.2.2 コンパクト性・連続性・支配条件からの有限ブラケット数

ブラケット数の有限性を直接示すのは難しいことが多い。実務上は次の十分条件が最も使いやすい。

補題 3 (コンパクト性・連続性・支配条件による有限ブラケット数) 次を仮定する。

  1. \(\Theta\) はコンパクトである。
  2. \(m(X_t;\theta)\) は任意の \(X_t\) に対して \(\theta\) で連続である。
  3. \[ E[\sup_{\theta\in\Theta}|m(X_t;\theta)|]<\infty. \]

このとき、\(\mathcal M=\{m(\cdot;\theta):\theta\in\Theta\}\) は有限ブラケット数をもつ。

証明. 任意の \(\delta>0\) をとる。\(\Theta\) がコンパクトなので、有限個の半径 \(\delta\) の開球で被覆できる。中心を \(\theta_1,\ldots,\theta_J\) とする。

\(j\) に対して \[ \ell_{\delta,j}(x)=\inf_{\|\theta-\theta_j\|\le\delta}m(x;\theta), \qquad u_{\delta,j}(x)=\sup_{\|\theta-\theta_j\|\le\delta}m(x;\theta) \] と置く。連続性とコンパクト性により、これらはよく定義される。

任意の \(\theta\) はどれか一つの球に属するので、対応する \(j\) について \[ \ell_{\delta,j}(x)\le m(x;\theta)\le u_{\delta,j}(x) \] が成り立つ。したがって、\(J\) 個のブラケットで \(\mathcal M\) を被覆できる。

残るのは、ブラケット幅の期待値が \(\delta\downarrow 0\) とともに 0 に行くことを示すことである。連続関数はコンパクト集合上で一様連続だから、各 \(x\) に対して \[ \max_{1\le j\le J}\bigl(u_{\delta,j}(x)-\ell_{\delta,j}(x)\bigr)\to 0. \] さらに \[ \max_{1\le j\le J}\bigl|u_{\delta,j}(X_t)-\ell_{\delta,j}(X_t)\bigr| \le 2\sup_{\theta\in\Theta}|m(X_t;\theta)|, \] であり、右辺は仮定 3 により可積分である。よって優収束定理からブラケット幅の期待値は 0 に収束する。したがって任意の \(\varepsilon>0\) に対して有限個の \(\varepsilon\)-ブラケットが構成できる。

ノート何が本質か

M 推定量の一致性で重要なのは、目的関数の具体形そのものではなく、

  • \(\theta\) を動かしたときに関数族が複雑すぎないこと
  • その結果、標本平均が一様に収束すること

である。コンパクト性・連続性・支配条件は、そのための便利な十分条件にすぎない。

4.3 M 推定量の一致性

ここまでの結果をまとめると、M 推定量について次が得られる。

定理 2 (M 推定量の一致性) \(\hat\theta\)\[ Q_n(\hat\theta)\ge \sup_{\theta\in\Theta}Q_n(\theta)-\eta_n, \qquad \eta_n=o_p(1) \] を満たし、 \[ Q_n(\theta)=\frac1n\sum_{t=1}^n m(X_t;\theta) \] とする。次を仮定する。

  1. \(X_1,\ldots,X_n\) は独立同分布である。
  2. \(\Theta\) はコンパクトである。
  3. \(m(X_t;\theta)\)\(\theta\) で連続である。
  4. \[ E[\sup_{\theta\in\Theta}|m(X_t;\theta)|]<\infty. \]
  5. 母目的関数 \(Q(\theta)=E[m(X_t;\theta)]\)\(\theta_0\) で一意に最大化される。

このとき \[ \hat\theta\to_p\theta_0. \]

証明. 仮定 2, 3, 5 と 補題 1 より clean maximum が成り立つ。仮定 2–4 と 補題 3 より関数族 \(\mathcal M\) は有限ブラケット数をもち、仮定 1 と 補題 2 より uniform convergence が成り立つ。したがって 定理 1 を適用すればよい。

4.4 GMM の一致性

GMM では、一様収束の対象は標本モーメント \(g_n(\theta)\) である。

定理 3 (GMM 推定量の一致性) GMM の標本目的関数を \[ Q_n(\theta)=-\frac12 g_n(\theta)'\widehat W_n g_n(\theta), \qquad g_n(\theta)=\frac1n\sum_{t=1}^n g(X_t;\theta) \] とする。さらに \[ g(\theta)=E[g(X_t;\theta)] \] とおく。次を仮定する。

  1. \(X_1,\ldots,X_n\) は独立同分布である。
  2. \(\Theta\) はコンパクトである。
  3. \(g(\theta)\) は連続である。
  4. \(\widehat W_n\to_p W\)。ただし \(W\) は正定値対称行列である。
  5. \(g(\theta)=0\) であることと \(\theta=\theta_0\) であることが同値である。
  6. \[ \mathcal G=\{g_k(\cdot;\theta):\theta\in\Theta,\ 1\le k\le K\} \] は有限ブラケット数をもつ。

このとき GMM 推定量 \(\hat\theta\) は一致し、 \[ \hat\theta\to_p\theta_0. \]

証明. 証明の骨格は 定理 1 の適用である。

まず仮定 3–5 より \[ Q(\theta)=-\frac12 g(\theta)'Wg(\theta) \]\(\theta_0\) で一意に最大化され、かつ連続である。したがって 補題 1 により clean maximum が成り立つ。

次に、仮定 6 と 補題 2 を各成分 \(g_k(X_t;\theta)\) に適用すると \[ \sup_{\theta\in\Theta}\|g_n(\theta)-g(\theta)\|\to_p 0 \] が得られる。これを用いて \[ 2\{Q(\theta)-Q_n(\theta)\} = g_n(\theta)'(\widehat W_n-W)g_n(\theta) +\bigl(g_n(\theta)-g(\theta)\bigr)'W\bigl(g_n(\theta)+g(\theta)\bigr) \] と分解すれば、右辺第 1 項も第 2 項も \(o_p(1)\) であることがわかる。したがって uniform convergence が成立する。

以上より 定理 1 から結論が従う。

4.5 SMM の一致性

SMM では標本側の不確実性に加えて、シミュレーション側の不確実性が入る。そのため、モデル・モーメントのシミュレーション近似 \(\gamma_m(\theta)\)一様に 真の \(\gamma(\theta)\) に近づくことが必要になる。

定理 4 (SMM 推定量の一致性) SMM の標本目的関数を \[ Q_n(\theta)=-\frac12\bigl(g_n-\gamma_m(\theta)\bigr)'\widehat W_n\bigl(g_n-\gamma_m(\theta)\bigr) \] とし、母目的関数を \[ Q(\theta)=-\frac12\bigl(g_0-\gamma(\theta)\bigr)'W\bigl(g_0-\gamma(\theta)\bigr) \] とする。次を仮定する。

  1. \(\Theta\) はコンパクトである。
  2. \(\gamma(\theta)\)\(\theta\) で連続である。
  3. \[ \sup_{\theta\in\Theta}\|\gamma_m(\theta)-\gamma(\theta)\|=o_p(1). \]
  4. \(g_n\to_p g_0\) かつ \(\widehat W_n\to_p W\)。ただし \(W\) は正定値対称行列である。
  5. \(\gamma(\theta)=g_0\) であることと \(\theta=\theta_0\) であることが同値である。

このとき SMM 推定量 \(\hat\theta\) は一致する。

証明. 仮定 1, 2, 5 と 補題 1 より clean maximum が成り立つ。仮定 3, 4 を使って \[ \sup_{\theta\in\Theta}|Q_n(\theta)-Q(\theta)|=o_p(1) \] を示せばよい。実際、 \[ 2\{Q(\theta)-Q_n(\theta) \} =(g_n-\gamma_m(\theta))'(\widehat W_n-W)(g_n-\gamma_m(\theta)) \] \[ \qquad +\bigl(g_n-g_0+\gamma(\theta)-\gamma_m(\theta)\bigr)'W \bigl(g_n-\gamma_m(\theta)+g_0-\gamma(\theta)\bigr) \] と分解できる。仮定 3 によりシミュレーション誤差が一様に消え、仮定 4 により標本モーメントと重み行列も収束するので、右辺全体が \(o_p(1)\) となる。よって 定理 1 が適用できる。

注意SMM の実装上の注意

SMM を数値的に実装する際は、異なる \(\theta\) の間で 同じ乱数系列 を使うことが重要である。乱数系列を毎回変えてしまうと、同じ \(\theta\) でも評価される目的関数値がぶれ、最適化が不安定になる。

4.6 Minimum Distance の一致性

Minimum Distance は SMM からシミュレーション誤差を取り除いた形になっている。

定理 5 (Minimum Distance 推定量の一致性) 標本目的関数を \[ Q_n(\theta)=-\frac12\bigl(g_n-\gamma(\theta)\bigr)'\widehat W_n\bigl(g_n-\gamma(\theta)\bigr) \] とする。次を仮定する。

  1. \(\Theta\) はコンパクトである。
  2. \(\gamma(\theta)\)\(\theta\) で連続である。
  3. \(g_n\to_p g_0\) かつ \(\widehat W_n\to_p W\)。ただし \(W\) は正定値対称行列である。
  4. \(\gamma(\theta)=g_0\) であることと \(\theta=\theta_0\) であることが同値である。

このとき Minimum Distance 推定量 \(\hat\theta\) は一致する。

証明. SMM の場合の証明から、シミュレーション近似 \(\gamma_m(\theta)\) を真の \(\gamma(\theta)\) に置き換えればよい。clean maximum と uniform convergence が同様に確認できるので、定理 1 が適用できる。

5 漸近正規性

一致性だけでは推論はできない。標準誤差、信頼区間、Wald 検定などを行うには、\(\hat\theta\) の漸近分布が必要である。本章ではその最も一般的な形を与える。

5.1 OLS との類似

極値推定の漸近正規性は、実は OLS の議論と非常によく似ている。線形回帰 \[ y_t=x_t'\beta_0+u_t \] を考えると、OLS の目的関数は \[ Q_n(\beta)=-\frac{1}{2n}\sum_{t=1}^n (y_t-x_t'\beta)^2 \] である。FOC を \(\hat\beta\) で評価すると \[ 0= -\left(\frac1n\sum_{t=1}^n x_tx_t'\right)(\hat\beta-\beta_0) +\left(\frac1n\sum_{t=1}^n x_tu_t\right). \] 両辺に \(\sqrt{n}\) を掛ければ \[ 0=H_n\sqrt{n}(\hat\beta-\beta_0)-Z_n \] と書ける。ここで \[ H_n=\frac1n\sum_{t=1}^n x_tx_t', \qquad Z_n=\frac1{\sqrt n}\sum_{t=1}^n x_tu_t. \] 一般の極値推定でも、適切な正則性条件の下でほぼ同じ構造が現れる。

5.2 一般形

目的関数が十分滑らかで、かつ数値最適化誤差が十分小さいとする。すると、近似的一階条件 \[ \frac{\partial Q_n(\hat\theta)}{\partial\theta}=o_p(n^{-1/2}) \]\(\theta_0\) のまわりで展開することで、しばしば \[ o_p(1)=H_n\sqrt{n}(\hat\theta-\theta_0)-Z_n \tag{2}\] という表現が得られる。ここで

  • \(H_n\) は目的関数の局所的な曲率を表す行列
  • \(Z_n\) は標本平均の変動を表す確率ベクトル

である。

もし \[ H_n\to_p H, \qquad Z_n\to_d N(0,\Sigma), \] かつ \(H\) が可逆であれば、式 2 から \[ \sqrt{n}(\hat\theta-\theta_0)\to_d N(0,H^{-1}\Sigma H^{-1}) \] が従うはずである。次の定理はそれを厳密に述べたものだ。

定理 6 (極値推定量の漸近正規性:基本定理) 次を仮定する。

  1. \[ o_p(1)=H_n\sqrt{n}(\hat\theta-\theta_0)-Z_n. \]
  2. \(H_n\to_p H\)。ただし \(H\) は正定値対称行列である。
  3. \(Z_n\to_d N(0,\Sigma)\)。ただし \(\Sigma\) は正定値対称行列である。

このとき \[ \sqrt{n}(\hat\theta-\theta_0)\to_d N(0,H^{-1}\Sigma H^{-1}). \]

証明. \(H\) は正定値なので可逆である。仮定 1 の両辺に \(H^{-1}\) を掛けると \[ o_p(1)=H^{-1}H_n\sqrt{n}(\hat\theta-\theta_0)-H^{-1}Z_n. \] 仮定 2 より \(H^{-1}H_n\to_p I\) であるから \[ H^{-1}H_n=I+o_p(1). \] また仮定 3 と連続写像定理より \[ H^{-1}Z_n\to_d N(0,H^{-1}\Sigma H^{-1}), \] したがって \(H^{-1}Z_n=O_p(1)\) である。

よって \[ o_p(1)=(I+o_p(1))\sqrt{n}(\hat\theta-\theta_0)-O_p(1) \] から \(\sqrt{n}(\hat\theta-\theta_0)=O_p(1)\) が従う。これを元の式に戻せば \[ \sqrt{n}(\hat\theta-\theta_0)=H^{-1}Z_n+o_p(1). \] したがって Slutsky の定理により \[ \sqrt{n}(\hat\theta-\theta_0)\to_d N(0,H^{-1}\Sigma H^{-1}). \]

ノート\(H\)\(\Sigma\) の経済学的意味

漸近分散 \[ \Omega = H^{-1}\Sigma H^{-1} \] の中で、

  • \(H\) は目的関数の 曲率 を表す。曲率が大きいほど、最適点の位置はデータの揺らぎに対して頑健になりやすい。
  • \(\Sigma\) は標本平均やスコアの ばらつき を表す。

したがって、推定の精度は「目的関数の鋭さ」と「データのノイズ」のバランスで決まる。

5.3 この定理がどこで使われるか

後続章では、各推定法ごとに 定理 6\(H_n\)\(Z_n\) を具体化する。

  • M 推定\(H\) は Hessian、\(\Sigma\) はスコアの分散または長期分散
  • GMM\(H=G'WG\)\(\Sigma=G'WSWG\)
  • SMM:GMM に加えてシミュレーション誤差が入る
  • MD\(H=\Gamma'W\Gamma\)\(\Sigma=\Gamma'WSW\Gamma\)

つまり、後続章の技術的作業は、結局のところ

  1. 近似的一階条件をつくる
  2. \(H_n\) の確率極限を求める
  3. \(Z_n\) に中心極限定理を適用する

という 3 ステップに帰着する。

5.4 非微分可能な目的関数について

本章の導出は、暗黙のうちに目的関数の微分可能性を使っている。しかし、量的回帰、maximum score、ある種のシミュレーション推定などでは目的関数が微分可能でないことがある。その場合でも、目的関数が局所的に二次近似できれば、同じ型の漸近正規性が導ける。これは付録で扱う一般結果に対応している。

6 まとめ

この章で押さえるべき点は次の通りである。

  1. 極値推定は統一的な枠組み であり、M 推定・GMM・SMM・MD を同じ論理で扱える。
  2. 一致性には
    • clean maximum
    • uniform convergence の 2 条件が中心である。
  3. M 推定では、uniform convergence は 一様大数法則 の問題に還元される。
  4. 漸近正規性は \[ o_p(1)=H_n\sqrt{n}(\hat\theta-\theta_0)-Z_n \] という線形化表現から導かれる。
  5. 後続章では、各推定法ごとに \(H\)\(\Sigma\) を具体化し、標準誤差推定と仮説検定に進む。
ヒント次章への接続

次の「M 推定」の章では、この章の抽象理論を最尤法・非線形最小二乗法に落とし込み、

  • 漸近分散の具体式
  • sandwich 分散
  • 正しく指定された最尤法と誤指定最尤法の違い

を詳しく扱う。

7 参考文献

  • Billingsley, P. (2008), Probability and Measure.
  • Hayashi, F. (2000), Econometrics, Chapter 7.
  • van der Vaart, A. W. and Wellner, J. A. (1996), Weak Convergence and Empirical Processes.