オーム社トップページ > Rで学ぶVAR実証分析

Rで学ぶVAR実証分析 時系列分析の基礎から予測まで

プログラム(Rスクリプト)


更新日:2022年1月10日
公開日:2019年12月15日

村尾 博

本書に用いたプログラム(Rスクリプト)およびデータを提供します。 ファイル名の後に簡単な説明を書き、それぞれの役割や目的が分かるようにしています。

その他の資料も含めています。それらは目次の2と3に示すものです。

最後にディレクトリ(フォルダ)の表記法に関する説明を行っています。 Rスクリプト(プログラム)を書く人にとっては自明な内容ですが、念を押しを兼ね、書いています。

もくじ

  1. 本書に用いたプログラム
  2. その他のプログラム
  3. 練習用データ
  4. ディレクトリ表記に関する説明

1.本書に用いたプログラム

これらのファイルは「Chap_1」や「Chap_2」といったフォルダに入っています。

第1章 Rについて

このプログラムは、前半がインパルス応答分析の基本を示すプログラムになっています。 インパルス応答分析の計算カラクリが簡単なループ計算であることが示されています。

第5章 ラグ次数の選択問題

第6章 単位根検定

第7章 共和分検定

第8章 撹乱項に関する仮説検定

第9章 推定と識別問題

第10章 係数パラメータに関する仮説検定

グランジャー因果性検定は、該当セクションへ入れています。

構造安定性の検定

他の検定

第11章 インパルス応答分析

次は筆者が作成したRスクリプトです。 一般化インパルス応答関数と直交化インパルス応答関数に基づき、2つの方法で実行します。 モデルは誘導VARモデルです。 使用データの名称も合わせて示しておきます。

データ「data_KPSW.csv」の出所については、練習用データを参照してください。

第12章 推定後のモデル変換

第13章 インパスル応答分析の区間推定

筆者が作成したRスクリプトです。 ブートストラップ法のRスクリプトは長いので2つのファイルに分けています。 1番ショック(s1)から3番内生変数(y3)へのインパルス応答分析といった意味で「y3s1」といった情報をファイル名に含めています。

データ「data_Stock.csv」の出所については、練習用データを参照してください。

第14章 予測誤差の分散分解

次は筆者が作成したRスクリプトです。 直交化インパルス応答関数に基づきつつ、2つの異なった方法で実行します。 モデルは誘導VARモデルです。 使用データの名称も合わせて示しておきます。

データ「data_Stock.csv」の出所については、練習用データを参照してください。

第15章 グランジャー因果性検定

第16章 その他のVAR分析

予測

ヒストリカル分解

次は筆者が作成したRスクリプトです。 使用データの名称も合わせて示しておきます。

データ「data_Stock.csv」の出所については、練習用データを参照してください。

分布表

これらはフォルダ「stat_tables」に入っています。


2.その他のプログラム

2.1  残差回帰

次の回帰では残差回帰の理論どうりの結果が得られます。 残差回帰のテクニックを推定に適用するものであり、具体的にはリンゴの需要関数を推定します。 理論どうりの結果が得られる具体例でもって残差回帰を実感してください。

これらはフォルダ「data_apple_JP」に入っています。

アップル・データは果物関連の時系列データであり、1980年から2004年までの年周期データです。 53個の変数を含んでいます。 その中からリンゴ需要関数用の変数を選び出すといった想定のデータセットになっています。 他の果物の需要分析にも使えます。

大きなシステムから一部だけを取り出して議論(推定や検定)する場合に残差回帰は有用なテクニックです。 残差回帰は次の分析などに使われています。

残差回帰は頻繁に使うことがないかも知れませんが、頭の片隅に残しておきたいテクニックです。


3. 練習用データ

VAR分析の練習に使えるデータを示します。 Rパッケージ「vars」や「svars」に含まれているデータも練習に使えますが、そのようなデータはここで再び示すようなことはしません。 学術論文や教科書に使われ、公開されているデータが対象になります。 最後に、著者が編集したデータも含めています。

3.1 データセット「Stock」

データセット「data_Stock.csv」はStock and Watson (2001)に使用されたデータです。 米国マクロ経済の四半期データであり、(インフレ率、失業率、利子率)からなる3変量を含みます。 データ収録期間は1954QI - 2000Q4です。 その元となるデータは次のウェブページから入手しました。

このページを開き、次の論文のところへ移動してください。

Vector Autoregressions (with James H. Stock), Journal of Economic Perspectives Fall 2001, Vol. 15, No. 4, pp. 101-116.

この論文に使われている(物価指数GDPD、失業率LHUR、利子率FYFF)のデータを入手し、論文の結果を自分で再現することが考えられます。

物価指数GDPDが四半期データ、失業率LHURと利子率FYFFが月周期データであること、さらに観測期間が異なることから、 これらのデータは共通の期間からなる四半期データに編集する必要があります。 このようなデータ編集は面倒と思われる場合は、既に編集済みの四半期データ「data_Stock.csv」を使うことが考えられます。

data_Stock.csv」を使う場合でも、次の3変量はつくる必要があります。

  1. インフレ率 dp(t) = 400*log(GDPD(t)/GDPD(t-1))。価格レベルはp(t)と表記する。
  2. 失業率 u(t) = LHUR(t)
  3. 利子率 R(t) = FYFF(t)

インフレ率は年率でパーセント表示にするために400を掛けています。 詳しいデータの計算法については論文に記載されています。 特にp.102のフットノートが役立ちます。 「sample period」は、論文(p.105)に示されている如く、「1960Q1-2000Q4」になります。

この論文はVAR分析の練習資料として有用です。 有名なVAR実証分析はVECモデルを使用し、複雑な内容になっている事例が多く、練習用資料に適していないのが実情です。 一方、この論文は3変量からなる誘導VARモデルを使い、基本的なVAR分析「インパルス応答分析」「予測誤差の分散分析」「グランジャー因果性検定」を行っています。 VAR分析の練習に対する「答え」が示されていること、簡単なVARモデルであることから、この論文はVAR分析の練習に適しています。 特に最初の練習資料としては最適でしょう。

3.2 データセット「KPSW」

これは King, Plosser, Stock and Watson (1991)に使用されたデータであり、VAR分野では「KPSWデータ」として知られています。 米国マクロ経済の四半期データであり、データ収録期間は1947Q1 - 1988Q4です。 変数の個数は最大で6個であり、(消費C、投資I、生産量Y、貨幣供給量M、利子率R、インフレ率DP)からなります。 本書で使用した3変量データ「data_KPSW.csv」は別の場所から入手しましたが、元々の出所はKPSWデータです。 KPSWデータは次のウェブページから入手できます。

このページを開き、次の論文のところへ移動してください。

Stochastic Trends and Economic Fluctuations (with Robert King, Charles Plosser, and James Stock), American Economic Review, Vol. 81, No. 4, (September 1991), pp. 819-40.

ダウンロードしたファイルの中には数個のデータセットが含まれていますが、(消費C、投資I、生産量Y、貨幣供給量M、利子率R、インフレ率DP)からなるデータセット「CIYMRDP.PRN」がメインになります。 「CIYMRDP.PRN」からデータを読み取り、King et al. (1991)のFigure 1を再現するためのRスクリプトを作成し、ここに提供しています。 文言や表現法の差異はありますが、Figure 1が再現されていると言えます。

これらはフォルダ「data_KPSW」に入っています。

King et al. (1991)のFigure 1が再現できたので、Figure 2もRでもって再現することを試みました。 しかし、R関数の組み合わせだけでもってFigure 2を再現することは難しいようです。 したがってFigure 2はRの練習対象にならないと判断しました。 もちろん、一から始めるようなRスクリプトを自分で書けば、Figure 2は再現できるでしょう。 その方向性へ進む場合でも不明な点があり、Figure 2の再現は容易ではありません。

話が変わりますが、King et al. (1991)のTable 4は、統計解析ソフトRが計算する分散寄与度(RVC)に対応していません。 したがってTable 4もRの練習対象になりません。

King et al. (1991)はRの練習に対する「答え」が示されているとは言い難いですが、それでも幾らかの練習に役立ちます。 少なくとも単位根検定や共和分検定に対する「答え」は示されています。

3.3 米国マクロ経済データ

これは著名な教科書『Econometric Analysis』(Greene, William H.)に使われている米国マクロ経済の四半期データであり、 データ収録期間は1950QI - 2000Q4、14個の変数が含まれています。 50年間の四半期データですから、貴重なデータセットです。 次のウェブページからダウンロードできます。

次の経路を経て「Table F5.2」に移動します。 変数の説明を含め、データの詳細が記載されています。

VAR分析の「答え」が示されていませんが、VAR分析の練習に役立つデータです。 マクロ経済に関する構造VARモデルを自分でつくり、それを米国のデータで試してみたいといった場合に役立つと考えます。

3.4 日本マクロ経済データ

マクロ経済学の教科書に記載されている標準的なIS-LMモデルを想定し、日本マクロ経済のデータを集めたことがあります。 かなり昔に作ったデータですが、ここに公開します。 日本統計局の「日本の長期統計系列」から入手した年周期データであり、データ収録期間は1955年 - 1998年です。 元々のデータ構成を維持しつつ、ただちに統計解析ソフトに読み込むことのできる状態のデータセットになっています。 そのため変数の個数は45個と多いです。これらの中からIS-LMモデル用の変数を選び出したり作ったりする想定になっています。 AD−ASモデルを想定し、雇用労働者数や失業率など、労働市場の変数も幾らか含めています。

VAR用データとしては極めて小さいですが、3次元ぐらいの小型VARであれば使用可能かも知れません。 一方、IS-LMモデルを含め、伝統的な計量モデルであれば、いろいろな意味で役立つデータです。

これらはフォルダ「data_macro_JP」に入っています。


4. ディレクトリ表記に関する説明

プログラミング初心者を対象とし、ディレクトリ(フォルダ)の表記法に関する説明を行います。 Rスクリプト(プログラム)を書く人にとっては自明な内容であり、ざーと読み流してください。

まず、ディレクトリも、ファルダも、ファイルの保存場所といった意味では同じです。 フォルダは入れ物(容器)といった意味合いが強くなります。 一方、ディレクトリはツリー構造を持ったファイルの組織体といった意味合いが強くなります。

ダウンロードしたプログラムが問題なく動くためには、ディレクトリやフォルダと呼ばれるファイル保存場所の表記が重要であり、次の一致が必要です。

プログラムに記載されているディレクトリ(ファルダ) = コンピュータ上の実際のディレクトリ(ファルダ)

これだけです。 これだけでは味も素っ気もないので、もう少し詳しく説明します。 ここからは具体例でもって説明します。

まず、当サイトからダウンロードしたファイルを入れるための保存場所(フォルダ)を作ります。 「book_VAR」と名付けたファルダを作り、そこにダウンロードしたファイルを入れたとします。 ファルダ「book_VAR」の場所は次の場所とします。

C:/data_works/time_multi_eqs/book_VAR

「C:/data_works/time_multi_eqs」の部分は、自分のコンピュータ環境に応じて選んでください。

ダウンロードしたファイルの中には11章で用いたプログラム「irf_two_methods_VAR.R」が入っています。 このプログラム「irf_two_methods_VAR.R」は、フォルダ「Chap_11」に入っていますから、それを絶対参照の形で表記すると、次のようになります。

C:/data_works/time_multi_eqs/book_VAR/Chap_11/irf_two_methods_VAR.R

14章で用いたプログラム「fevd_two_methods_VAR.R」は、 フォルダ「Chap_14」に入っていますから、それを絶対参照の形で表記すると、次のようになります。

C:/data_works/time_multi_eqs/book_VAR/Chap_14/fevd_two_methods_VAR.R

ところで、サブフォルダに関しては、全てのフォルダに対し、次の3つのサブフォルダを作っています。

  1. data
  2. data_temp
  3. outputs

サブフォルダ「data_temp」は、研究やプロジェクトが終了すると、削除するデータの保管場所といった意味で作っています。 どのサブフォルダが必要かは個々のプログラムによって異なります。 説明の単純化のため、全てのフォルダに対し、3つのサブフォルダを作っています。

次はプログラムに記載されているディレクトリ(フォルダ)構造を変更します。 フォルダ「Chap_11」内のプログラム「irf_two_methods_VAR.R」を例に取ると、setwd()のところの内容を次のように変更します。

setwd("C:/book_VAR/data_works/Pesaran_EL/R_prg")

setwd("C:/data_works/time_series/multi_eqs/book_VAR/Chap_11")

この操作は、「プログラムに記載されているディレクトリ(フォルダ)」=「コンピュータ上の実際のディレクトリ(フォルダ)」となるようにするための変更です。

フォルダ「Chap_11」のサブフォルダ「data」や「outputs」を絶対参照の形で表示すると、次のようになります。

C:/data_works/time_multi_eqs/book_VAR/Chap_11/data
C:/data_works/time_multi_eqs/book_VAR/Chap_11/outputs

一方、working directory(現在位置)から見て、下のフォルダ、上のフォルダ、隣のファルダといった形でフォルダ指定(一般的にはオブジェクト指定)を行う方式は相対参照と呼ばれます。 working directory(現在位置)が「Chap_11」であるとき、そのサブフォルダ「data」や「outputs」を相対参照で表記すると、次のようになります。

./data
./outputs

working directory「Chap_11」から見て、「Chap_11」内のサブフォルダが「data」や「outputs」といった名前になっているといった意味です。 このように相対参照を利用すると、フォルダ指定の表記が簡単できます。 フォルダ指定のために、長々と続く絶対参照を書く必要がなくなります。

setwd()でもってworking directoryを指定しない場合は、Rの実行ファイルがある場所がworking directoryになっています。 「データが上手く読み取れない」「出力が思うように出力されない」といったトラブルは、相対参照の誤りであるケースが意外と多いものです。 このような経験から、私がRスクリプトを書く場合は、setwd()でもってworking directoryを特定化し、それを最初のコマンドとして書くようにしています。 つまり、自分の作業場所(現在位置)をコンピュータに伝えてから具体的な作業に入っていきます。 このような準備作業は、相対参照に関する指示ミスを少なくします。

次はworking directory「Chap_11」内のサブフォルダ「data」や「outputs」の名前や構造を変更した場合の対処法を説明します。

データの保存場所(フォルダ)の名前を「data」から「external_data」に変更した場合は、プログラム「irf_two_methods_VAR.R」における該当部分を変更します。 変更前と変更後を示すと、次のような変更を行います。

read.csv("./data/data_KPSW.csv")

read.csv("./external_data/data_KPSW.csv")

ファイルの保存場所は絶対参照の形で書くことも出来ますが、ここでは相対参照の形で書いています。

画像ファイルの保存場所(フォルダ)を「outputs」から「outputs_irf」に変更した場合は、プログラム「irf_two_methods_VAR.R」における該当部分を変更します。 変更前と変更後を示すと、次のような変更を行います。

dev.copy(jpeg, file = "./outputs/Persaran_Fig1.jpg")

dev.copy(jpeg, file = "./outputs_irf/Persaran_Fig1.jpg")

このような操作も、「プログラムに記載されているディレクトリ(フォルダ)」=「コンピュータ上の実際のディレクトリ(フォルダ)」となるようにするための変更です。

サブフォルダの相対参照に関し、次の2つは同等です。

read.csv("./data/data_KPSW.csv")
read.csv("data/data_KPSW.csv")

一方、working directory(現在位置)から1つ上のディレクトリ(フォルダ)へ移動する場合は「../」の表記を使います。 2つ上のディレクトリ(フォルダ)へ移動する場合は「../../」、3つ上のディレクトリ(フォルダ)へ移動する場合は「../../../」の表記を使います。 したがってworking directory「Chap_11」から隣のフォルダ「Chap_14」へアクセスする場合は、

../Chap_14

といった相対参照にします。 現在、自分のいる部屋「Chap_11」から別の部屋へ移動する場合は、一度、廊下へ出てから別の部屋「Chap_14」へ移動する必要があります。 コンピュータにおいても同様であり、一度、上のディレクトリ(フォルダ)へ移動し、そこから見える「Chap_14」へアクセスするように指示します。


このページのトップに戻る。



オーム社トップページ