MPSGEのreference priceフィールド

GAMSで一般均衡モデルを解く際にMPSGEを利用する人が多いのですが,MPSGEの動作をちゃんと理解しないで利用している人が結構います(よくわからないでもCGE分析ができてしまうところがMPSGEのいいところの一つかもしれませんが).

よく誤解されているのが,reference priceを指定する p: というフィールドの使い方です.これについて,GAMSのメーリングリストでRutherfordが説明しています(このメール).

一部引用すると、

there seems to be some considerable confusion about the role of reference prices which are solely used to calibrate the marginal rate of substitution at the benchmark point. In this context, only relative prices matter, and when calibrating an intra-period production or demand function, you can work either with current-value or future-value prices.

これはどういう事かというと、MPSGEでは

$prod:y(t)  s:esub
o:p(t)   q:y0
i:pl(t)  q:l0  p:pl0  a:govt t:tl
i:rk(t)  q:k0  p:pk0  a:govt t:tk
$prod:y(t)  s:esub
o:p(t)   q:y0
i:pl(t)  q:l0  p:(pl0*pref(t))  a:govt t:tl
i:rk(t)  q:k0  p:(pk0*pref(t))  a:govt t:tk
$prod:y(t)  s:esub
o:p(t)   q:y0
i:pl(t)  q:l0  p:(pl0*100)  a:govt t:tl
i:rk(t)  q:k0  p:(pk0*100)  a:govt t:tk

のどの書き方でも特定化される生産関数は同じということです(ただし、計算上の理由から2番目が望ましいということもメールでは説明されています).

これはMPSGEが中でどのような計算をしているか理解していれば当たり前のことなのですが、わかりにくいみたいですね。もう少し詳しく言うと、reference priceは(投入額)シェアを計算するのに利用されるだけで、シェアは相対的な価格にしか依存しないからということです。

あと、よく誤解されているのが、生産物側のreference priceの使い方ですね。生産物が一つしかないケース(結合生産がないケース)では、生産物指定行のreference priceの指定は意味を持ちません。つまり、

$prod:y(t)  s:esub
o:p(t)   q:y0  p:py0
i:pl(t)  q:l0  p:pl0  a:govt t:tl
i:rk(t)  q:k0  p:pk0  a:govt t:tk
$prod:y(t)  s:esub
o:p(t)   q:y0  p:(py0*100)
i:pl(t)  q:l0  p:(pl0*pref(t))  a:govt t:tl
i:rk(t)  q:k0  p:(pk0*pref(t))  a:govt t:tk
$prod:y(t)  s:esub
o:p(t)   q:y0
i:pl(t)  q:l0  p:(pl0*100)  a:govt t:tl
i:rk(t)  q:k0  p:(pk0*100)  a:govt t:tk

はどれも同じ生産関数となります。理由は単純で、Rutherfordのメールの通りreference priceは相対的な意味しか持ちませんから、生産物が一つならそもそも意味を持たないということです(生産物が一つならどんな価格を持とうがその生産物のシェアは常に1だから).

Rutherfordのメールはいつも簡潔・正確に要点を説明するものなのでとても勉強になります。CGE分析を勉強したい人は,GAMSのメーリングリストに登録して,Rutherfordの書くメールだけは読むといいと思います.

ただ一方で,GAMSのメーリングリストにはむちゃくちゃな質問がよくあって,CGE分析をしている(しようとしている)人のいいかげんさがよくわかりますが...Rutherfordが回答しているメールの元の質問のメールも,実物モデルを使っていながら,それにインフレを導入したいというような意味不明なもので,いったいどうすればそんな発想が出てくるのかという...

だいたい考え方がおかしくて,

  1. 今は実物モデルを使っている.
  2. そのため貨幣はベール,相対価格しかモデルでは意味を持たない.
  3. しかし,名目価格に与える効果も分析したいので,名目価格が意味が持つようなモデルにしたい.
  4. 具体的には,「名目価格は~~~という関係で決まるようなモデル」にしたい.
  5. そのため,~~~という条件式をモデルに導入したい.
  6. ただ,それをどうMPSGEで書けばよいのか分からない.

というような質問ならいくらでも答えようがありますが,真ん中をすっ飛ばして「インフレ導入するにはどうプログラムを書けばいいのか?」というような,どういうモデルを作りたいのか全くわからない質問の仕方なので答えようがないです.ま,実際にはMPSGEは基本的に実物モデルしか扱えないので,名目価格が意味を持つようなモデルは作れませんが.