計量経済学では同時方程式を考えることが多く、そのために一般最小二乗法(OLS)の発展である操作変数法(IVM)とそのバリエーションである二段階最小二乗法(2SLS)*1や三段階最小二乗法(3SLS)、モーメント法の発展である一般化モーメント法(GMM)がよく使われているのですが、これらは尤度函数を用いないのでベイズ推定にできません。頻度主義者がベイジアンになるのは難しいです。
しかし、完全情報最尤推定法(FIML)と言うのがあり、実際のところは簡単に最尤法で同時方程式を推定できます。FIMLはRでは欠損値処理アルゴリズムのように扱われている気がするのですが、教科書的な手法なので確認しておきましょう*2。最尤法だけに不均一分散や欠損値処理の対処も工夫できますし、ベイズ推定しない場合でも、便利に使える局面は多そうです。
理論モデルとOLS推定量に入る同時性バイアス
推定の例をつくるわけですが、需要曲線と供給曲線を考えましょう*3。
需要関数:
供給関数:
均衡条件:
均衡価格:
完全情報最尤推定法
需要関数と均衡価格式を同時推定することを考えましょう。推定する係数を、誤差項を
と置きなおし、方程式一本ごとに誤差項があると考え、二本の方程式を行列にまとめて書くと、次のようになります。
は観測数です。
前節の係数とは、や
と言った対応関係があります。
右辺の内生変数と外生変数を分離します。
内生変数を左辺にまとめます。
左辺第1項と第2項をまとめましょう。
この行列をいちいち書いていられないので、書き直します。
FIMLでは、この構造方程式を推定します。こう書くとOLSで入るバイアスが入らない理由が分かりづらいですが、この構造方程式の尤度函数は説明変数に内生変数が入らない誘導形の尤度函数から導かれます*4。また、数理的な特性を使って整理すると以下のようなconcentrated loglikelihood function*5にできることが知られています*6。
データ
理論モデルに沿った式で、乱数を使ってデータを生成します。
set.seed(1231)
n <- 300
a10 <- 100
a11 <- -1
a20 <- 2
a21 <- 3
a22 <- 4
z <- runif(n, min=0, max=3)
mu <- rnorm(n, mean=0, sd=2)
nu <- rnorm(n, mean=0, sd=1)
p <- (a20 - a10 + a22*z + nu - mu)/(a11 - a21)
d <- a10 + a11*p + mu
s <- a20 + a21*p + a22*z + nu
推定
concentrated loglikelihood functionをoptim関数で推定します。
Y <- cbind(d, p)
W <- cbind(rep(1, n), z)
g <- 2llf <- function(p){
B <- matrix(c(p[1], 0, p[2], p[3]), 2, 2)
G <- matrix(c(1, p[4], 0, 1), 2, 2) # Γ
E <- Y%*%G - W%*%B
S <- t(E)%*%E/n # ∑
-g*n/2*(log(2*pi) + 1) + n*log(det(G)) - n/2*log(det(S))
}r_optim <- optim(c(1, 0, 0, 0), function(p){ -llf(p) }, method="BFGS")
r_optim$parが推定されたになりますが、内生変数の係数となる4番目のパラメーターの符号が逆になることに注意してください。なお、optim関数の引数にhessian=TRUEをつけるとヘッセ行列がとれるので、標準誤差を計算することができます*7。
OLSとIVとの比較
推定結果の比較をしておきましょう。FIMLはOLSよりはかなりマシ、IVよりは僅かに劣るといった感じでしょうか。
| 係数 | 真の値 | OLS | IV | FIML |
|---|---|---|---|---|
| 100 | 75.95501 | 100.11595 | 100.1228135 | |
| -1 | 0.03949 | -1.01101 | -1.0113085 |
なお、最尤法は漸近的に有効だけに、サンプルサイズが小さいとIVとの差が広がる傾向があります。IV推定量は以下のように計算できるので、nを変えて試してみてください。
zm <- matrix(c(rep.int(1, n), c(z)), n, 2)
xm <- matrix(c(rep.int(1, n), c(p)), n, 2)
solve(t(zm) %*% xm) %*% (t(zm) %*% d)
*1:操作変数が1つの場合はIVMと同値なのですが、一応、別なので。
*2:昔読んだGreene (2003)やWooldridge (2002)では最尤法で連立方程式モデルの推定の仕方は書いていなかったのですが、Davidson and MacKinnon (2003)では第12章で詳しく説明されています。
*3:Hayashi (2000)にある例を踏襲しています。
*4:Davidson and MacKinnon (2003)もしくはオンラインで配布している2021年版のpp.503–505とpp.544–545を参照。誘導形はSURと同じ多変量正規分布の尤度函数になるので、による変形の影響を整理すれば構造形の尤度函数が導出できます。
*5:定訳不明
*6:一階条件の節の一階条件に直接関係のないExercise 12.24をに注意して
の成分を考えて解くことで得ることができる・・・ハズ。


