予測に関するEViews9 の新機能を紹介する3 回シリーズの第二回目です。

第一回 予測平均が一番良い?
第二回 最尤法による時系列モデルの推定
第三回 ARFIMA モデル

短期予測に利用するARMA モデルの推定手法はこれまで条件付き最小二乗法が利用されてきましたが、EViews 9 から最尤法と一般化最小二乗法が追加され、最尤法がデフォルトになりました。既にEViews 9 にバージョンアップをしたユーザの中には、これまでと同じことをしているのに推定値が異なる結果になり、戸惑ったかもしれません。今回は推定手法の違いがモデル推定に与える影響を考察します。

ARMA項を利用した時の新しい推定手法

EViews9 からモデルにおいてARMA項を利用すると、デフォルトで最尤法による推定を実行するようになりました。まずはサンプルデータを利用してこれまでのバージョンとの違いを確認してみましょう。サンプルデータは
Program Files/EViews 9/Example Files/EViews9 Manual Data/Chapter22-Time Series Regression
フォルダにあるsowell 22.wf1 を利用します。まだ、EViews 9 をお持ちでない方は、是非、デモ版を入手してください。このワークファイルにはすでに推定済みの推定式オブジェクトが複数ありますが、それらは無視して新たに推定を行います。

このサンプルデータはSowell (1992a) で利用したデータです。GNP の変化率をARMA(3,2) モデルとして推定します。次の図に示すようにモデルのテキストボックスに入力します。
dlog(gnp) ar(1 to 3) ma(1 to 2) c
もちろん、これは
dlog(gnp) c ar(1) ar(2) ar(3) ma(1) ma(2)
と書いても同じです。定数項のc はdlog(gnp) の右側にあれば、どこにあってもかまいません。

図1


Options タブでMethod 項目がML になっている事を確認します。

図2


OK ボタンをクリックして推定を実行し、推定結果のオブジェクトにeqml という名前を付けます。

図3


Method の項目がARMA Maximum Likelihood となり、最尤法でパラメータを推定したことが分かります。収束計算を37 回の繰り返し実行したことが分かります。最尤法で推定を行いましたので、残差の分散σ2 も推定し、推定値の一番下にSIGMASQ として表示しています。細かい話で恐縮ですが、σ2 は非負ですから、正確に言えばp 値は片側検定になります。つまり、この例で言えば、
show 1-@cnorm(eqml.@tstats(7))
として求めます。もちろん、この場合、推定画面の表示はt-Statistics になっていますが、正規分布の分布関数を利用します。実際に計算してみると、ほぼ0 であることに変わりはありません。次に同じモデルをGLS(Genelarized Least Squares:一般化最小二乗法) で推定します。先に示したARMA の項目でGLS を選択します。さっそく、推定結果を比較してみましょう。オブジェクトの名前はeqgls とします。

図4


こちらにはσ2 は存在しません。推定値を見てみると、定数項とAR 項はよく似ているようですが、MA項では有意性や符号が異なっています。それでは、続けてこれまでデフォルトの手法であったCLS(Condition Least Squares) で推定してみましょう。

図5


推定結果の画面上部を見ると、CLS で推定を行ったが、収束計算に失敗していることが分かります。ARMA モデルでMA 項を利用すると計算が複雑になり、収束計算に失敗してしまうことがあります。このような結果になってしまったら、残念ですが、この結果をそのまま報告することはできません。このようなケースでは最適化計算の手法(Options タブのOptimization の項目) を変更してみましょう。実際、この場合もGauss-Newton 法をBFGS(Broyden, Fletcher, Goldfarb and Shanno)法に変更すると、収束計算を完了できます。

3つの推定手法

推定手法の概略を説明するために前提となるモデルを決めておきます。ここでは一般的なARIMA(p, d, q)モデルとして次のようなモデルを想定します。

数式1

1 式におけるL はラグオペレータです。そしてμt = X′tβ でこれはYt の平均を示します。この時、無条件残差ut は次のように示すことができます。

数式2

そして撹乱項(innovation) は次のような形で示すことにします。

数式3

以上の設定で、ML を選択するとEViews は無条件残差が正規分布に従うものとして、次に示す正確尤度を最大化します。詳細は置くとして、ここでは正確尤度の定義だけを示します。

数式4

4 式の第一項は推定に利用するデータの個数だけで決まります。第二項のToeplitz 共分散行列Ωの行列式は第三項に含まれるパラメータから求められます。そこでGLS は次に示す第三項だけを目的関数として、

数式5

これを最小化するパラメータを求めます。従来からEViews がサポートしていた条件付き最小二乗法で推定する場合は次に示す式を対数尤度関数として計算を行うものです。

数式6

ここでの計算上のポイントは対数尤度を最大化するために5 式の第二項のS (β, ρ, θ) を最小化するところにあります。何を基準にしてこの3 つの推定手法を選択すれば良いでしょうか。数式を見る限り、パラメータを求める計算に用いる情報量が、ML, GLS, CLS の順番で徐々に少なくなっている事が分かります。この事を頭の片隅に置いて、数式を用いた解析的な考察ではなく、乱数発生によるモンテカルロシミュレーションを利用して推定量の分布を考察してみましょう。

数値実験

目的は最尤法(ML)、一般化最小二乗法(GLS)、条件付き最小二乗法(CLS) のうち、どの手法が優れているかを調べることです。計算速度での評価は行いません。あくまで、設定値に近しい値を推定できるのはどの手法かを見る事で評価します。最初に変数Xt とYt の間に次の関係を想定します。

数式7

ただし、u0 = e0 = 0 とします。設定値は次のようにします。

数式8

以上の設定によって作成したデータから3 つの手法でモデルを推定し、パラメータの分布を考察します。CLS の項目で解説したように収束計算で失敗することを避けるため、どの推定手法でも最適化にはBFGS を使うことにします。プログラムの概略は以下の通りです。

プログラム例

tic
wfcreate(wf=unstruct) u 1000
rndseed 12
series xt=nrnd*20
!reps=10000
matrix(!reps,3) arout
matrix(!reps,3) maout
!sigma=1.17
!b0=-1419
!b1=0.85
!rho=0.8
!theta=-0.3
for !i=1 to !reps
smpl @all
series et=nrnd*!sigma
series ut=0
smpl @first @first
ut=et
series yt=!b0+!b1*xt+ut
smpl @first+1 @last

ut=!rho*ut(-1)+et+!theta*et(-1)
yt=!b0+!b1*xt+ut
smpl @all
equation eq01.LS(OPTMETHOD=bfgs,z) yt c xt ar(1) ma(1)
arout(!i,1)=eq01.@coefs(3)
maout(!i,1)=eq01.@coefs(4)
equation eq01.LS(arma=gls,z,OPTMETHOD=bfgs) yt c xt ar(1) ma(1)
arout(!i,2)=eq01.@coefs(3)
maout(!i,2)=eq01.@coefs(4)
equation eq01.LS(arma=cls,z,OPTMETHOD=bfgs) yt c xt ar(1) ma(1)
arout(!i,3)=eq01.@coefs(3)
maout(!i,3)=eq01.@coefs(4)
next
show arout.stats
show maout.stats
toc

プログラム実行結果

結果を見る前にプログラムに関する補足を行います。この数値実験のサンプルサイズは1000 です。乱数を使って仮想データを作成し、そのデータからパラメータを3 つの手法で推定するという処理を1 万回行います。そして1 万個の推定値のグラフや記述統計量から分布を考察します。tic とtocは計算にかかった時間を秒単位でステータスバーに表示するコマンドです。もちろん、プログラムの実行はQuiet モードで行います。推定コマンドのオプションでz を利用していますが、これはARMA 項のある推定においてバックキャスティングを行わない、というものです。バックキャスティングについては第三回でご説明します。この数値実験により得られた1 万個のρ を格納するのが行列オブジェクトarout で、θ はmaout に入ります。最初にρ の分布を確認します。ML とGLS はほぼ設定値0.8 に近くにピークが出現しています。しかし、CLS は残念ながら平均値は結果として0.71 程度ですが、推定量としてみると正規分布とは、かなり異なる分布を示しています。

図6


次にMA 項のグラフを示します。この場合もCLS は他の推定手法と比べ、問題のあることが分かります。

図7


EViews 9 からは推定式においてarma 項を利用するとデフォルトでml による推定が実行されるようになりました。今回の数値実験を通して、視覚的にそのメリットが体験できたのではないでしょうか。今回のプログラムを実際に試された方はプログラムを編集し、β0, β1 の分布についても確認してみましょう。結果として、β0, β1 の分布にはほぼ違いはない事が分かります。次回、第三回では1 式におけるd で整数だけでなく、実数も利用可能なARFIMA モデルと、今回利用したバックキャスティングという用語の意味とその効果について解説します。