計量経済分析ソフトウェア EViewsによる経済予測6
モデルオブジェクトのシナリオ機能を利用した予測
第五回はモデルオブジェクトの基本的な使い方について解説しました。最終回となる今回は、シナリオの利用と政策シミュレーションについて解説します。
第六回の内容は以下の通りです。
前回までの作業の復元
前回の最後で、モデルのSolveが上手くいかないケースを取り上げました。原因と対処法について解説するため、まずは前回までの作業内容を復元します(前回のワークファイルがそのまま残っている方は以下をご確認いただく必要はありません)。
第五回でも利用したmacromod.wf1をコピーし、適切な位置に移動します。
macromod.wf1は以下に存在します:
C:\Program Files\EViews 9\Example Files\EV9 Manual Data\Chapter 03 - Workfile Basics
ただし上書きを避けるため、元データではなく、必ず別のフォルダにコピーしたデータで作業を行ってください。保存先としてはC:\data\forecastを推奨します。
macromod.wf1を開き、こちらのプログラム(268B)を実行してください。
前回の主な作業内容を復元し、最後に解説した問題に関係する、以下のエラーメッセージを表示します。
(なお、上のプログラムは、EViews9の新機能であるコマンドキャプチャを利用して作成しています。コマンドキャプチャを使ったプログラミングについては、第三回をご確認ください。)
シナリオの設定
上のようなエラーが出る原因は、外生変数であるgとmの値が、2006q1以降存在していないからです。このことは、第一回で説明した、説明変数の将来値が存在しないために、予測値計算ができないケースに対応しています。以下の画像を確認してください。
従って、これらの値を入力すれば、技術的には予測値計算を行うことができます。しかし将来値のデータは原則的に得られませんので、何らかの値を想定して補完することになります。ここで言う想定は、単なる仮定の場合の他に、具体的な将来計画である場合もありえます。例えば中央銀行であればハイパワードマネーの供給量をコントロールできますし、企業であれば広告出稿計画等を前もって立てておくことは可能でしょう。そのような場合、原理的にはEViewsに入力した値を将来的に実現することができますので、予測と言うよりは将来のシミュレーションとしての側面が強くなります。
ここではgとmは、2005q4の値から変動しないと想定しましょう。これは悪い例となりますが、仮に以下のようにgとmを直接編集すると、solveが上手くいくようになります。
しかしこのような方法は、実際のデータと仮想的なデータを混同することに繋がるので、望ましくありません。このような場合、EViewsではシナリオ機能を利用します。
シナリオ機能を利用すると、元のシリーズオブジェクトであるgやmを変更することなしに、solveの際に利用する想定値を設定することが可能になります。この想定値の組み合わせのことをシナリオと呼びます。例えば、上のように2006q1以降のgとmの値が一定というのも一つのシナリオですし、gは一定である一方、mは一期あたり10%ずつ上昇していくと考えるのも一つのシナリオです。シナリオは複数作成し、容易に結果を比較することが可能です。
シナリオの作成と管理は、モデルオブジェクト内のScenarioボタンから行います。デフォルトではActuals, Baseline, Scenario1の三つが存在します。ActualsとBaselineは特殊なシナリオで、削除することはできません。ActualsとBaselineの挙動はほとんど同じですが、Solveした際にActualsは原系列を置き換える一方、Baselineの場合は各原系列ごとに、「_0」という接尾語が付いたシリーズを作成して結果を保存する点に違いがあります。すなわち、以下の通りです。
CN_ORIGINALはSolveの前に原系列を名前を変えてコピーしたものです。CN, CN_0はそれぞれ、ActualsとBaselineを指定してモデルをSolveした場合の値で、両者はまったく同一の結果になります。また、Actualsを指定すると、Solveに伴い原系列であるCNの値が変更されてしまうことが分かります。計算結果は変わらないため、通常はActualsではなくBaselineを使ったほうが無難でしょう。
Baselineを選択した場合、説明変数の変更を行うことができません。Scenario1を選択してください(Scenario1がない場合はCreate Scenarioを選択してください)。その後、Overridesタブをクリックし、gとmを半角スペース区切りで入力します。OKを押します。
以上の設定は、モデルをSolveする際に「gではなくg_1、mではなくm_1を用いる」ということをEViewsに指示するものです。シナリオを利用している場合、次の画像のように、変数ビューにおいて該当変数が赤字で表示されます。
ただし、ワークファイルウィンドウを確認すれば分かりますが、シリーズオブジェクトg_1やm_1が自動で作成されるわけではありません。あくまで、「利用するように指示をする」だけです。従って、このままSolveに移るとエラーが生じます。Solveに移る前に、手動でg_1及びm_1を別途作成する必要があります。
g_1及びm_1を以下のように作成します。
- smpl @all
- series m_1 = m
- series g_1 = g
- smpl 2006q1 2006q4
- series m_1 = m_1(-1)
- series g_1 = g_1(-1)
- smpl 1960q1 2006q4
考え方としては、最初にm_1、g_1に対して実現値mとgをコピーします。すなわち、実現値が存在する範囲では実現値を使うという発想です。ただしこの方法では、2006q1 2006q4など、欠損値はそのままです。このような場合、欠損値を埋めたい範囲をsmplコマンドで抜出し、seriesコマンドで想定値を代入します。単純にseries m_1 = 970.71273などとしても良いのですが、ここでは少々工夫しています。例えば10%ずつmが上昇していくと想定するのであれば、series m_1 = 1.1*m_1(-1)とすれば良いでしょう。
modelbasicをSolveします。特にエラーなく解析が終了します。cn_1、i_1、r_1、y_1というシリーズオブジェクトが作成され、結果が格納されます。BaselineでSolveした場合はcn_0、i_0、r_0、y_0だったことを思い出してください。Baselineの接尾語(常に_0)以外は、シナリオ設定画面のAliasingタブで指定されているものが利用されます。
シナリオ毎に異なる接尾語で結果を出力できるので、m、gに関する異なる想定毎に、異なる将来予測値を得ることができます。例えば以下のようにしてみます。
- Create New ScenarioよりScenario 2を作成し、選択
- Overrideにm gと入力
- smpl @all
- series m_2 = m
- series g_2 = g
- smpl 2006q1 2006q4
- series m_2 = m_2(-1)
- series g_2 = 2000
- smpl 1960q1 2006q4
Scenario1との違いはgの定義だけです。gは政府支出を表しており、データが利用できる最終時点である2005q4での値は1582程度です。ここでは景気対策として、今後一年間の政府支出を2000まで増やした時に、各予測値にどのような影響を及ぼすかをシミュレーションしてみます。モデルをSolveします。cn_2, i_2, r_2, y_2の値が得られます。Proc > Make Graphより、次のようにして実現値、Scenario1との比較を行ってみます。
そのままではグラフが小さくて分かりにくいため、Zoomボタンを押して拡大します。据え置いた場合と比べ、各変数に対してかなり大きなプラスの影響をもたらすことが確認できます。ただし、言うまでもないことですが、これらは的を射た予測になっているとは限りません。先行研究、予測評価、あるいは一般常識に照らし合わせ、妥当な結果になっているかを分析者自身が判断する必要があります。
まとめ
予測シリーズの最終回となる今回はシナリオ機能の利用方法について解説しました。シナリオ機能を利用すると、第一回で挙げた将来時点の説明変数値がないことによる問題に対し、「必要な説明変数を直接補う」という形で対処することが可能です。シナリオという機能名が示唆するように、それはある種の「想定」であると言え、政策シミュレーション等にも役立てることができます。是非ご活用ください。