EViewsの使い方:実践編

EViewsは米国Quantitative Micro Software社の開発した計量分析ソフトです。 EViewsはmicroTSPをもとに各種機能を強化し、進化していったソフトで、グラフィカルなユーザーインターフェースも取り入れており(もちろんコマンドラインでの操作も可能)。分析結果をすぐにグラフで確認できますし、表計算ソフト等との連携にも優れたソフトウェアです。

かつて私が旧経済企画庁(現内閣府)に出向したとき、最初の業務は情シスを説得してEViews2.0の購入手続きを進めることでした(^^;。 あれは97年頃の話ですから、もうずいぶん経ってしまいましたねぇ。 『経済分析』No.157で発表された、短期日本経済マクロ計量モデルは、正式には経企庁のSIGMAで動作するものですが、開発にはEViewsも利用しており、EViews上で運用することも検討されていました(最終的には断念しましたが)。

出向を終えて、会社に復帰してからも、会社にEViews3.1を購入させ、4.0へのアップグレードもさせ、会社の経済予測に利用するマクロモデルや、様々な委託業務での各種将来予測等に役立ててきました。


というわけで、気が付けばEViewsとは長い付き合いなのですが、何故か最近EViewsの使い方について質問のメールを頂くことがしばしばあります(^^;。 私は一介のEViews使いでして、そんなことは QMS社や、日本にもある代理店等に問い合わせてくれ と思わないではありません。 今や日本語でのEViewsに関する文献もあるわけですし。 私がEViewsを使い出した頃は、日本の文献など皆無、経企庁にもEViews使いはいないしで、乏しい英語力でQMS社に問い合わせたり、試行錯誤して頑張ったものです。

等と文句ばかりいってもはじまらないし、単なる「最近の若いモンは...」と説教しているオヤジと化してしまうので、ちょこっとこんなページを書いてみました。 気が向けば、コンテンツをもっと拡充させていくこともあるかもしれません。

2002年4月
かやその おさむ
jacobi@sorryihatespamjcom.home.ne.jpnospam
2006年2月加筆

  1. 自作サブルーチンのライブラリ
  2. EViewsの基礎の基礎
  3. 定数項修正

自作サブルーチンのライブラリ

EViewsでは自分で作成して定義したサブルーチンをプログラム内から呼び出すことが出来ます。

で、定数項修正などのよく利用する機能について私の作ったライブラリを置いておきます。 このライブラリが提供する機能は...、面倒なのでソースを見て下さい(^^;。

使ってみたい方は、ダウンロードしたstdlib.prg.txtをstdlib.prgにリネームしてカレントパスに置いておき、利用したいプログラムからinclude stdlibしてから、試してみてください。 stdlib.prgを別の場所に置く場合は、include d:\eviews\sample\stdlib.prg等とフルパスで指定する必要があります。

EViewsの基礎の基礎

1.データベースの作成

1−1 ワークファイルを作成する

workfile sample.wf1 q 1980:1 2010:4 ファイル名は sample.wf1
データタイプは四半期、データ期間は1980年第1四半期〜2010年第4四半期
(参考)

1−2 Excelファイル(sample.xls)からデータを読み込む

read(b2,sheet=SAMPLE,t=xls) sample.xls cp i g gdp p r データ格納開始位置はB2
読み込むシート名は SAMPLE
データ形式はExcelファイル
読み込む変数名は、cp, i, g, gdp, p, r
(参考)

2.回帰分析

2−1 推定期間の指定

smpl 1985:1 2001:2 推定期間を1980年第1四半期から2001年第2四半期に設定
(参考)

2−2 最小二乗法による回帰分析

(1)最小二乗法による推定と数式定義
消費(cp)関数
equation eq1.ls log(cp) c log(gdp) r log(cp(-1)) 対数をとった民間消費(cp)を、c(定数項)、対数をとったGDP(gdp)、金利(r)、一期前の消費(cp(-1))で、最小二乗法により推定
推定した回帰式を数式オブジェクト(eq1)として定義
(参考)
投資(i)関数
equation eq2.ls log(i) c log(gdp) r-@pch(p)*400 @pch()は前期比をとる組込み関数(金利と単位をあわせるために400倍)
推定した回帰式を数式オブジェクト(eq2)として定義
金利(r)関数
equation eq3.ls r c @pchy(p)*100 @pchy(gdp)*100 @pchy()は対前年同期比をとる組込み関数(金利と単位をあわせるために100倍)
推定した回帰式を数式オブジェクト(eq3)として定義
(2)推定結果の見方
(3)構造変化等の検定

3.モデルシミュレーション

3−1 モデルの定義

model test testという名前でモデルを定義
test.merge eq1 testに数式eq1をマージ
test.merge eq2 testに数式eq2をマージ
test.merge eq3 testに数式eq3をマージ
test.append gdp=cp+i+g testに定義式を加える
(参考)

3−2 モデルシミュレーション

モデルをまわす(その1) : 標準ケース
smpl 1996:1 2001:2 シミュレーション実施期間を指定
model f0 f0という名前のモデルを定義
f0.merge test f0にtestの定義内容を全てコピー
f0.append assign @prefix f0_ モデル(f0)の推計結果は、各内生変数の名前の前に、 f0_を付けた変数に格納(これをやらないと、実績値に上書きされる)
これはEViews3.xでの場合です。4.xではこのあたりの仕様が変わっています
f0.solve モデルf0を解く
モデルをまわす(その2) : 政府支出拡大ケース
smpl @all 対象期間をワークファイルの全期間にする
series g2=g 外生変数gをg2にコピーしておく
smpl 1997:1 2001:2 対象期間を97年第1四半期から2001年第2四半期にする
genr g=g+gdp*0.01 gにgdpの1%分足しあげる
smpl 1996:1 2001:2 シミュレーション実施期間を指定
model f1 f1という名前のモデルを定義
f1.merge test f1にtestの内容をコピー
f1.append assign @prefix f1_ モデル(f1)の推計結果は、各内生変数の名前の前に、 f1_を付けた変数に格納
f1.solve モデルf1を解く
smpl @all 対象期間を全期間にする
genr g=g2 外生変数gを元に戻しておく
推計結果を書き出す
write(e) sample_out.xls gdp f0_gdp f1_gdp sample_out.xlsというExcel形式ファイルに、gdp、f0_gdp(標準ケースのGDP推計結果)、f1_gdp(政府支出拡大ケースのGDP推計結果)を書き出す

定数項修正

計量分析ソフトを使って将来予測をするときなどに必ずつきあたる問題が定数項修正(コンスタント修正とも言いますか)でしょうね。 つまり、回帰分析で作成した回帰式は実績値とは一致しないわけで、特に将来予測をするとき等にはどうしてもこの差を埋めないといけません。

経企庁のSIGMAシステムなんかは自動で定数項修正を行う機能があったりしますが、一般的なソフトウェアでそんなマネができるものはないです(あったみたい(^^; 2006/2追記)。 というわけで、自分でやらないといけません。

私が使ってる方法はこんな感じ。

(定数項修正のサンプル)
MODEL test「test」という名前のモデルオブジェクトを定義
SMPL 1985 2000推定期間を1985年〜2000年に指定
SERIES res_tax=0「res_tax」という名前の時系列変数を0で定義
EQUATION eq_tax.LS LOG(tax)-res_tax c LOG(gdp)「eq_tax」という名前の数式オブジェクトを定義。
本来であれば、LOG(tax)=c(1)+c(2)*LOG(gdp)という式なのですが、定数項修正のためにres_taxを左辺に加えてます
右辺に入れるとパラメータ推定の対象になってしまうためです
eq_tax.MAKERESID res_taxeq_taxの推計誤差の系列を作成し、結果をres_taxに格納します
test.MERGE eq_taxモデルオブジェクト(test)に、数式(eq_tax)を加えます

モデル内のすべての回帰式を、上記の例のようにそれぞれ誤差系列を含んだ形で定義してやれば、モデルの推計結果は(シミュレーション期間が1985から2000年の範囲内であれば)実績値に一致するわけです。

ただし、将来シミュレーションをする場合は、推定期間外で誤差項(res_tax)は0ですから、困りますね。

というわけで、将来期間について定数項修正を延長するサブルーチンを自作して使ってます。

(将来区間の定数項修正のサンプル)
include stdlib自作サブルーチンを読込み
call setexog(res_tax,@dtoo("2000"),"last")実績値の最終期(ここでは2000年)を基準に、その最終期の修正値で将来まで延長
SMPL 1998 2010シミュレーション期間を1998年〜2010年に設定
test.resolve「test」という名前のモデルを解く

EViewsによる自動定数項修正 (2006/2加筆)

EViews 2.0の時代からゴリゴリやってきた私は、最近になってEViews 5.1で新たなモデルの開発をやってみるまで気づいてなかったのですが、いつの間にやら上記の面倒な定数項修正を自動でやってくれる機能が追加されていたようです。

(自動定数項修正のサンプル)
MODEL test「test」という名前のモデルオブジェクトを定義
test.ADDASIGN @all全ての数式に追加要素(Add Factors)を追加
内生変数について「変数名+_A」という系列が作られる
test.ADDINIT(v=n) @all実績値と一致するよう追加要素を設定する

こちらの方法は式単位でなく、モデル単位で一気に処理できるので手間がかかりませんね。 自動計算された追加要素の値は、上で示したmakeresidで計算した値と同じようなので、モデルの推計結果は手でやった場合と同じになると思います。

また、makeresidコマンドとは異なり、データで計算できる区間は全て埋められるので、推定期間外でも値が算出されるのもメリットかもしれません。 ただし、右辺の値が全て揃わない範囲はやっぱりNAになるので、必要ならばsetexogみたいな方法で設定する必要があります(なお、追加要素の変数はNAでも計算エラーにはならず、0として扱われます)。


いつのまにか、内生変数のシミュレーション結果が目的の値となるように外生変数を自動的に調整するcontrolコマンドがあったり、モデルの解法オプションの画面に「Forward Solution」なんて追加されてたり。 適応的期待モデル(Adaptive Expectation)だけでなく、合理的期待形成(Rational Expectation; forward-looking)なモデルも解けるようになっているとは。

私が本格的にいじり倒していたのはEViews 2.0から3.1までで、4.xになってからは過去のノウハウの使いまわしでどうにかなる、あるいはどうにもならないとあきらめることが多くなってしまって気づいていませんでした。 4.x以降は機能的な進化も自分に役立つ範囲ではあまりないし、アクティベーションも導入されて面倒になったなぁという印象しかなかったんですが、地道に進化してたんですね。


Return to Previous page一つ前のページに戻る / Return to topこのページのTOPに戻る