計量経済分析ソフトウェア EViewsによる経済予測5
モデルオブジェクトを利用した予測
第四回はVARモデル関係の予測機能について解説しました。EViewsによる経済予測シリーズの最後のトピックとして、今回からモデルオブジェクトを利用した予測について解説します。今回はモデルオブジェクトの基本的な使い方について解説します。
第五回の内容は以下の通りです。
モデルオブジェクトの作成と事前準備
モデルオブジェクトは、複数の方程式を元に変数間の関係を分析するためのオブジェクトです。モデルオブジェクトを利用することで、第一回で説明した、将来時点での変数の値が欠損していることにより予測が実行不可能になる問題に対処しながら予測を行うことや、政策シミュレーションを実行可能です。
例を使って解説していきますので、まずはmacromod.wf1を開きます。
(macromod.wf1は以下に存在します:
C:\Program Files\EViews 13(ご利用のバージョン番号)\Example Files\EV13(ご利用のバージョン番号) Manual Data\Chapter 03 - Workfile Basics
ただし上書きを避けるため、元データではなく、必ず別のフォルダにコピーしたデータで作業を行ってください。)
以下の説明と出力結果を合わせるため、次のコマンドを実行しておきます。
smpl 1960Q1 1999Q4
macromod.wf1には既にモデルオブジェクトが存在しますが、解説の都合上ここでは一から作ります。メインメニューのObject > New objectより、Modelオブジェクトを作ります。名前はmodelbasicとします。
空のモデルオブジェクトが表示されます。モデルオブジェクトに式を入力したい場合、モデルオブジェクト内に直接記述するか(インライン式)、推定式オブジェクト(リンク式)を入力することが可能です。それぞれについて解説していきます。
インライン式の設定と予測
まず、インライン式を入力してみます。モデルを新規作成すると初期状態で表示されるEquation Viewより(表示を切り替えた場合はView > Equationで元に戻します)、右クリックしてInsertを選択します。次のように入力し、OKします。
gdp = 14 + 35.4 * @trend
この状態でSolveボタンを押します。ダイアログが表示されますので、そのままOKします。次のような計算結果画面が表示され、特にエラーは出ていないことが確認できます。
次に、ワークファイルウィンドウに、gdp_0という名前のシリーズオブジェクトが新しく作られていることをご確認ください。Solveを行うことで、モデルオブジェクト内の方程式体系が解かれ、各従属変数について解の系列が得られます。この場合、各時点には14+35.4 * @trendの値が入力されます(ワークファイル範囲が1947Q1から始まりますので、1960Q1トレンド項の値は52から始まっている点にご注意ください。すなわち、14 + 35.4*52 = 1854.8です)。
gdp_0は上記の単純な数理モデルに基づく予測値(理論値)ですので、gdpと合わせてグループオブジェクトを作る従来の方法で比較することが可能です。しかし、モデルオブジェクトの場合、変数ビューを利用するとより便利です。modelbasic内で以下の部分をクリックします。
唯一の利用変数であるgdpが表示されますので、ダブルクリックします。表示されたダイアログで以下のようにactualsにチェックを入れ、OKします。
gdpの観測値と、gdpの予測値であるgdp_0を含むグループオブジェクトが表示されます。これは通常通り、View > Graphでグラフ化できます。
ここではモデルオブジェクトの仕組みの解説のため、たった一つの式からなる非常に単純な数理モデルを利用しました。上記の数理モデルにおける14や35.4というパラメータは、実はシリーズgdpを定数項とトレンド項のみに回帰して得られた推定値を参考に設定しておりますので、gdp_0の結果は、定数項とトレンド項を利用したモデルを推定し、Forecastを押すことで得られる予測結果とほぼ一致します。また、この程度のことであれば、わざわざモデルオブジェクトを利用しなくとも、コマンドウィンドウでseries gdp_0 = 14 + 35.4 * @trendというコマンドを実行すれば得ることが可能です。しかしこれらの方法では、複数式の方程式からなる予測モデルに基づく予測値を得ることができません。モデルオブジェクトは、実際には次に解説するような、複数式からなる数理モデルの解を得る目的で利用することが多いでしょう。
リンク式の設定と予測
最初にモデルオブジェクトにはインライン式だけでなく、リンク式も設定可能だと説明しました。リンク式は、文字通り既存の推定式オブジェクトにリンクされている式を意味します。モデルにリンク式を追加するにはいくつかの方法がありますが、ここではドラッグ&ドロップを利用します。まずは先程設定した式を削除します(Equationボタンを押して推定式ビューに切り替え、右クリックメニューからdelete)。その後、推定式オブジェクトeqcnをモデルオブジェクト内にドラッグ&ドロップします。
Insert link to~と聞かれますので、Yesを選択します。同様の操作をeqiとeqrについても行います。さらに、モデルオブジェクト内に以下のようなインライン式を追加します。
y = cn + i + g
以上の操作により、モデルオブジェクトは以下のようになります。
後はこれをそのままSolveすれば解が得られるのですが、リンク式の中身をモデルオブジェクト上で見てみましょう。推定式ビューに切り替え、eqcnをダブルクリックします。以下の画面が表示されます。
推定結果が表示されていることが分かります。表示されている値がeqcnの推定結果と一致することを確認してみてください。これはあくまでリンクされているだけであり、実体は推定式オブジェクトの側にありますので、推定条件を変更したい場合は推定式オブジェクト側を変更します。試しにeqcnで@trendを追加し、OKします。
注意点として、推定式オブジェクトを更新しただけではモデルオブジェクト側の情報は更新されません。推定式を変更した場合、変更後にProc > Links > Update All Links - Recompile modelと操作し、推定式のリンクを更新する必要があるのでお気を付けください。
このままSolveしても良いのですが、macromod.wf1には初期状態でモデルオブジェクトが存在し、それらをSolveした結果が既に存在しています。混同を避けるため、以下のコマンドを実行しましょう。
delete *_*
削除しても良いか聞かれますので、Yes to allを選択します。*は任意の文字列を表しますので、このコマンドは名前のパターンが「任意の文字列_任意の文字列」に当てはまるすべてのオブジェクトを削除します。モデルオブジェクトの解析結果は、「変数名_0」や[変数名_1」という接尾語付で出力されますので、上記のコマンドにより一括で削除可能です(※)。
※あくまで名前のパターンで判断しますので、削除されるのはモデルオブジェクトの解析結果に限らない点にご注意ください。正規表現について詳しくない場合は、誤って重要なオブジェクトを削除してしまうのを避けるため、サンプルデータであるmacromod.wf1以外では実行しないでください。
Solveを選択し、そのままOKします。各被説明変数、すなわちcn, i, r, yについて、予測値cn_0, i_0, r_0, y_0が出力されます。上で解説した変数ビューにより、結果を数字で確認しても良いのですが、別のアプローチとしてグラフ機能を使ってみましょう。Proc > Make Graphと操作し、以下の画像のようにご入力ください。
上記のような実現値と予測値を比較したグラフが簡単に得られます。同時に、2000Q1以降の予測値が得られていないことが確認できます。これはSolveオプション設定を行わない場合、Solveにはワークファイルのサンプル期間(1960Q1~1999Q4)が利用されるためです。この点はSolveオプションで以下のように入力することで解決できます。
2005Q4までの予測値が表示されました。それでは次に、以下を行ってみてください。
- ワークファイルの範囲を2006Q4まで延長してください。
- 次のコマンドを実行してください: smpl 1960q1 2006q4
- Solution sample: 1960q1 2006q4でモデルをSolveしてください。
以上のコマンドを実行すると、以下のようなエラーが表示されます。
また、Unable to computeというエラーメッセージの通り、各出力結果も最後まで得られていません。
この点は重要であり、少し長くなりますので次回に解説を行います。
まとめ
今回はモデルオブジェクトを利用した予測について、基礎部分を解説しました。モデルオブジェクトにはアドファクターやシナリオの設定等、より応用的な使い方があります。それらについては次回解説を行います。