EPAM

 epam.cfgの編集
 
1.epam.cfgとは
 
 epam.cfgは、シミュレーションプログラムepamの動作を規定する設定ファイルです。テキストファイルですから、Windowsのメモ帳、Macのテキストエディット、Linuxのemacsあるいはvi、などのエディタで簡単に編集できます。
 epam.cfgの中には、詳しい解説がついているので、それを見るだけで十分編集の仕方がわかります。
 
2.epam.cfgのフォーマットとステートメント
 
 重要なことは、epam.cfgのなかで、セミコロン”;”より右側にある文字は、コメントとして、すべて無視されるという点です。(セミコロンそのものも無視されます)ですから、セミコロンの右側は消してしまっても問題ありません。
 空行(何も書いていない行)も無視されます。
 epam.cfgの中から、すべてのコメントと空行を取り去ると次のような、45個のステートメント(命令)が現れます。(以下は、政策的なものを組み込んでいない、基準均衡を再現するだけの設定になってます。)

PrintParameter 1
PrintRateofChange 0
PrintBasicFlag 1
PrintProcessFlag 1
Improve 3
ConvDelta 0.06
NeutralTaxReform NULL
WasteTaxRate 0.00
CO2EmissionTax 0.00
EpsiP 1.0
EpsiC 1.0
EpsiG 1.0
ImportRatio 0.75
Sigma 0.5
Roh 0.6
Mu 0.4
ZetaM 0.6
ZetaE 0.4
ZetaC 0.7
LambdaM 0.3
LambdaE 0.3
LambdaC 0.3
GsaiF -0.25
GsaiM 0.25
NameMainTable epam.tbl
CO2Table co2.tbl
WasteTable waste.tbl
TauY 0.078863509223211
TauT 0.0783939118471177
SRate 0.103572025174715
BTrans 0.10227164880226
CapitalTaxRate 0.167493771924203
GovInv 161655710
MaxIterationMerrill 2000
MaxIterationInverse 500
MaxIterationPrice 200
FinalProcessPrice 0.03
MSectorNumber 35
OthersSector 35
WasteProcessSector 36
FirstEnergySector 37
EnergySectorNumber 4
TotalSectors 40
WasteMaterialNumber 18
ChemicalSectorNumber 8

 これだけでは何がなんだかわからないかもしれませんが、コメント文を読めば内容が理解できるはずです。
 ステートメントの規則は次のとおりです。
 (1)ステートメントはどのような順序であっても問題はないが、上記のすべてのステートメントがそろっていなければならない。ないものがあっても、特にエラーは出ませんが、答えを出さなかったり収束しなかったり正常に動作しなくなります。
 (2)ステートメントはすべて、
 [キーワード] [値]
という組み合わせになっています。キーワードも値も半角文字でなければならず、キーワードと値は、半角の空白かタブで区切られていなければなりません。空白やタブはいくつあってもかまいません。二行にまたがってはなりません。
 (3)キーワードは変えないでください。変えたら認識しません。大文字小文字も区別しますから、小文字のキーワードにすると認識しなくなります。
 
3.主なキーワードの解説
 
PrintParameter (値) 1または0
(解説)EPAMはepam.cfgで与えられた代替の弾力性などのデータで、生産関数や消費関数のシェアパラメータやスケールパラメータなどの値を計算する。その計算結果を見たいときに、この値を1に設定する。パラメータは、parameter.txtに出力される。出力ファイル名は変えられません。同じものがあれば単純に上書きする。パラメータは、数式のローマ字読みで表されているものがほとんどで、各1行に、産業の1〜40番までの値が書き込んである。(通常 0)
PrintRateofChange (値) 1または0
(解説)結果の出力ファイルに、各部門ごとの値を出すパートがある。その値の直下に、初期状態からの変化率を出したいときには、この値を1にする。結果をエクセルファイルなどに最後組み込む場合に邪魔になるなどの場合、0にしておけばよい。(通常 0)
PrintBasicFlag (値) 1または0
(解説)EPAMはMerrillの不動点アルゴリズムで、一般均衡解を求めている。価格のシンプレックス(単体)上を探索する過程で、初期状態と最終結果を画面上に出力したい場合には、この値を1にする。不必要な場合は0にする。最初は1にしておけばよい。(通常 1)
PrintProcessFlag (値) 1または0
(解説)不動点アルゴリズムによる計算過程を出力するかどうかのフラグである。値を1にすると、経過をすべて出力する。0にすると、画面が凍ったように答えを出すまで変化しなくなる。1にすると、画面表示の分だけ時間がかかるが、全体の計算速度は、普通のパソコンを使っている限り、とても早いはずだからたいしたことはない。(通常 1)
Improve (値) 2から、およそ8程度、正の整数
(解説)単体上の探索過程において、1辺の分割数を何倍で増やしていくのかを示す、その倍数である。初期の分割数は10である。辺の分割数が大きくなれば、それだけ均衡解の精度は高まる。Merrillのアルゴリズムにおいては、粗い分割で均衡解のおよその位置を見つけておき、さらに分割数を細かくすることによって制度を上げる手法をとっている。この倍数が大きいと急速に均衡解に近づく可能性もあるが、誤差の関係で、はずしてしまう可能性も出てくる。倍数が小さいと、収束までに時間がかかってしまう。誤差を小さく求めると、逆に倍数を大きくしたほうが求まる場合もある。(通常 3,4,5,6のいずれか)
ConvDelta (値)およそ0.5〜0.01の範囲
(解説)収束判定誤差。4つの超過需要関数の値の絶対値の最大値が、ここで指定されている値以下になった場合に[収束]したとみなす。誤差の1が百万円の誤差を意味する。すべての超過需要が100兆円以上の値であるので、百万円の誤差でも十分小さく問題ないが、通常に収束するもので、0.5以上の誤差でしか収束しない例はほとんどない。基準均衡は0.05の誤差以下で収束する。誤差が出るのは、CES生産関数・消費関数がべき乗の高度な数値計算を行うためである。通常のパソコンの場合、ひとつの変数を倍精度の変数と定義し、64ビットで表現しているが、この場合、有効数字は13桁までである。EPAMは最終結果について約10桁の有効数字を持っている。表れてくる数字の頭から10桁までは信頼性をもっていると考えてよい。収束しなかった場合は、単体の中に新しいグリッドを作り損ねたり、2000階繰り返しても均衡解に到達しなかったりする。その場合、途中経過で実現した最小の誤差を表示することがあるので、その誤差を参考にしながら、この収束判定誤差を少し大きめの値にするとよい。(通常0.06くらい)
NeutralTaxReform NULLまたはTauY またはKTax
(解説)税収中立シミュレーションに関する設定。値をNULLにした場合は、税収中立のシミュレーションを行わない。TauYにした場合は、所得税を変化させて税収・貯蓄の合計額を固定する。KTaxにした場合は、資本税を変化させる。したがって、このEPAMでは税収と貯蓄を区別していないので、完全に税収に関する中立性にはなっていない。上記の三つの値以外の値を指定した場合、正常なシミュレーションを行わない。(通常 NULL)
WasteTaxRate 0.001など
(解説)産業廃棄物税率。単位は、1トンあたり百万円である。したがって、1000円/トンの税率をかけたい場合は、0.001とする。当然、税をかけない場合は0ないしは0.00などとしておく。また、2000年価格の実質税率である。すなわち、ラスパイレス価格指数を使って実質化した値を税率として固定する。言い換えれば、シミュレーション結果の価格での名目税率をNWtaxとし、2000年価格での税率をRWtaxとし、価格指数をQとすると、これらの間には、
NWtax=Q×RWtax
という関係がある。そして、ここで与える税率は、RWtaxであり、繰り返し計算ごとにこれを名目化して税をかけているということである。
CO2EmissionTax 0.03など
(解説)二酸化炭素換算の税率。百万円/CO2トンである。したがって、炭素税の議論では、炭素換算の税率で議論されているので注意が必要。たとえば、炭素換算で10000円の税をかけるためには、この値を 0.0027273にしなければならない。また、産業廃棄物税率と同様にこの値は実質税率としてかけられる。
EpsiP、EpsiC、EpsiG 1とか1.01
(解説)エネルギー効率を規定するパラメータ。三つの値は、それぞれ、生産関数、消費関数、外生需要関数に関わる値である。値が1の場合は、効率の改善がない状態。値が1.01だと1%の改善が行われたことを意味する。三つの値それぞれに別の値を指定できる。(通常 1.00)
ImportRatio 0.75
(解説)輸入財の量が国内生産水準に依存する程度。0のときは、すべて国内財価格を為替レートで割った相対価格によって輸入水準が決まってしまう。逆に1のときは、すべてが国内生産水準に比例する形で決まってしまう。単純にこの値に比例するわけではない。これを変えることによって結果は大きくは変わらない。(通常 0.75)
Sigma、Roh、Mu 0.5など
(解説)生産関数の代替の弾力性。Sigmaはσで、トップレベルのCES生産関数の代替の弾力性である。詳細は論文を見ていただくしかない。Rohはρで、資本と労働による不可か価値生産関数の代替の弾力性、Muはμでエネルギー財間の代替の弾力性である。(通常 特になし)
ZetaM、ZetaE、ZetaC 0.5など
(解説)消費関数の代替の弾力性。ZetaM ZetaE ZetaCはそれぞれ、主関数の代替の弾力性、エネルギー財間の代替の弾力性、一般財間の代替の弾力性である。(通常 特になし)
LambdaM、LambdaE、LambdaC 0.3など
(解説)外生需要関数の代替の弾力性。それぞれ、上記消費財と同じである。性質からして弾力性の値を低く抑えておくべきである。(通常 0.3程度)
GsaiF、GsaiM ±0.25など
(解説)それぞれ輸出と輸入の価格弾力性。変えても知れほど反応しないように見える。(通常 輸出−0.25、輸入0.25)
NameMainTable、CO2Table、WasteTable epam.tbl, co2.tbl, waste.tbl
(解説)データセットファイル名。それぞれ、メインデータセット、CO2排出関係データ、廃棄物関係データである。複数のデータセットを扱える可能性はあるが、データセットのフォーマットについて解説しなければ、使う意味がない。それぞれのデータファイルはテキストファイルであるから中身が見られるようになっている。不必要な部門名なども入れて、それだけでも理解できるようにはしている。(通常 特になし)
MaxIterationMerrill 2000
(解説)メリルのアルゴリズムの最大繰り返し回数。通常変更の必要はない。2000回でも収束しない場合は、設定に問題があると考えたほうがよい。(通常 2000)