時系列分析と予測

このページでは、EViewsを使った時系列予測を紹介します。予測のベースとなる優れたモデルの設計は、非常に難しい場合があります。EViews の役割は、予測を作成するためのメカニズムを処理することです。予測のベースとなるモデルを選択するのは分析者次第です。まず、メカニズムがいかに驚くほど簡単であるかを示す例から始め、その後、より微妙な問題のいくつかをゆっくりと見ていきます。


Forecastをクリックするだけ

  1. ここでの私たちの目標は、一般の人々の手にある通貨 G の成長率を予測することです。(下記のダウンロードボタンから入手できます) 系列 G のデータを開いて、View > Graphと操作し、折れ線グラフを表示します。

    データ
  2. この例では、通貨の成長を、トレンド、通貨成長のラグ、および年の各月のダミー変数の線形関数としてモデル化します。予測を行う前に、このモデルの方程式を推定する必要があります。コマンド操作ではコマンド欄に次のとおり入力します。
    ls g @trend g(-1) @expand(@month)
    ダミー変数の共線性を回避するために、定数項はありません。メニュー操作では、Quick > Estimation equationと選択し、次を入力し、OKをクリックします。
    データ
    データ
    推定結果は問題なさそうです。さて、予測を作成するにはForecastボタンを押してください。
    Forecastダイアログが開いたら、Graphの横にあるドロップダウン メニューからNoneを選択し、Forecast evaluation(後述)のチェックを外します 。左下のForecast sampleを2000m01 @lastに設定し、OKをクリックします。
    EViewsはデフォルトで予測した系列に「源系列名F」という名前を付けます。
    データ
    これで完了です。Gの予測はGF シリーズに保存されます。
    どれだけうまくいったかを見るために、実際の通貨成長と予測通貨成長を一緒にプロットしてみましょう。かなり良い予測ではないでしょうか? 季節変動に少し偏りすぎているかもしれませんが、基本的にはかなり満足のいくものです。
    これで、EViews で予測するために必要なことがほぼすべてわかりました。
    データ

予測のための理論

  • 時系列予測力の仕組みを概説

  1. 予測理論を少し見直して、EViews がどこに当てはまるかを見てみましょう。
    正確な予測を行うには、次の 3 つのステップがあります。
    • 1. 関心のある変数の健全なモデルを作成します。
    • 2. 説明変数のパラメータを推定します。
    • 3. 推定されたパラメータを予測期間の説明変数の値に適用します。
  2. 予測しようとしている変数を$ y $と呼びましょう。$ y $を説明する良い方法は変数$ x $を使うことであり、モデルを決定したとします \begin{equation} y_{t}= \alpha + \beta x_{t} + u_{t} \end{equation}
    ここで、冒頭の例では、$x$は時間的トレンド、通貨の成長ラグなどを表します。
    モデルの形式を選択するのがステップ 1 でした。次に、期間$t=1,2,…,T$の$y_{t}$と$x_{t}$に関するデータを収集し、EViews のさまざまな推定手法の1 つを使用し、モデルのパラメータに推定値$\alpha$と$\beta$を割り当てます。推定されたパラメータは、上記の最後のセクションの例の式で確認できます。これがステップ 2 です。
    最後に、予測値を得たい期間、$T_{F}$から$T_{L}$までのすべての日付について、$y_{t}$を予測するとします。これはForecastダイアログの左下Forecast sampleたエントリです。予測は次のようになります。 \begin{equation} \hat{y}=\hat{\alpha}+\hat{\beta}x_{t} \end{equation}
    言い換えれば、ステップ 3 は、ステップ 2 で推定された各係数を予測期間に対応する$x$値で乗算し、その積を合計することです。この形式は、以下の説明で便利です。
    ここでは、2004 年 11 月の予測に使用した例を使用します。この方程式の$x$変数は、時間的トレンド、前月の成長、および当月のダミー(0/1)変数のセットです。予測するには、各$x$変数の値と、その変数に付加された推定係数が必要です。必要なデータは、次の表に示されています。
    $x$ 推定された
    パラメータ
    $x$の値 2つの積
    トレンド項 0.001784 1047 1.87
    ラグ項 0.469423 3.4105 1.6
    11月ダミー 8.321732 1 8.32
    ステップ 3 を実行する際には、注意が必要です。 上記の表のパラメータと$x$変数を掛け合わせる前に、予測期間における$x$の値を知る必要があるということです。
    この表では、@TREND の値は 1047 で、2004 年 11 月のデータの月番号です。
    通貨成長ラグの 11 月の値は、10 月の通貨成長数 3.4105 となります。
    また、@MONTH=11 は、11 月では常に 1.0 を取ります。
    インフレ率を説明変数として使ったよりよいモデルを推定したとしたらどうでしょうか? 予測を実行するには、2004 年 11 月のインフレ率を知る必要があります。インフレ率がなければ予測もできません。
    実践的な予測では、予測期間中の説明変数の値を把握するか、必要な説明変数を予測する方法を把握します。

  3. データ

標本内および標本外予測

  • ダイナミック予測とスタティックな予測の違いを概説します

  1. 通貨データは 2005 年 4 月で終了します。その日付以降を予測するには、@TREND の値、予測する月、および予測月の前月の通貨成長の値を知る必要があります。問題をもたらすのは、このラグ付き変数です。2005 年 5 月を予測する場合は、4 月の値がわかっているので問題ありません。しかし、6 月以降については、通貨成長のラグ値がありません。
    スタティックな予測では、予測を行う際に説明変数の実際の値を使用します。 この例では、2005 年 5 月までのスタティックな予測は可能ですが、それ以降はできません。
    データ
    ダイナミックな予測では、ラグ従属変数の実際の値の代わりに、予測値を使用します。2005 年 5 月に予測を開始すると、動的予測 G2005m5 は静的予測と同一になります。どちらも説明変数として g2005m4 を使用します。6 月の動的予測では g2005m5 を使用します。g2005m5 が不明であるため、静的予測は計算できません。
    データ
  2. 実際には、スタティックな予測とダイナミックな予測の違いは、データの利用方法と予測サンプルの設定の両方によって決まります。
    スタティックな予測では、予測標本の説明変数の値を使用します。特定の日付の説明変数のいずれかが欠落している場合、その日付については予測できません。
    ダイナミックな予測では、予測期間の従属変数に関する情報がまったくないかのように動作します。予測サンプルの最初の期間では、実際の値がわかっているため、EViews はラグ付き従属変数の実測値を使用します。2 番目の期間では、EViews は実際の値がわからないかのように動作し、最初の期間に予測した値を使用します。3 番目の期間では、EViews は 2 番目の期間の予測値を使用します。以下同様に続きます。ダイナミックな予測の優れた点の 1 つは、予測を好きなだけ先までロールできることです。もちろん、他の系列の将来の値もわかっていることが前提です。

予測標本の役割

  • 予測標本の役割を概説します

  1. 予測モデルがどの程度うまく機能するかを確認するには、予測と実際の結果を比較する必要があります。 1 つの選択肢は、未来が到来するまで待って、結果がどうなるかを確認することです。 しかし、標準的な手順は、データ サンプルを人工的な「過去」と人工的な「未来」に分割して、データの到来をシミュレートすることです。
    月次通貨データは 1917 年から 2005 年までです。 サンプル全体を WHOLERANGE と呼び、期間の大半をHERODOTUS として扱い、最後の数年間をHEINLEINと名前をつけて予測評価のために取っておきます。 HERODOTUS で推定された方程式が HEINLEIN をうまく予測できる場合、WHOLERANGE で再推定し、まだ見ぬ実際の未来を予測できるという確信が得られます。
    コマンドでは次のように期間を指定します。
    sample wholeRange @all
    sample Herodotus @first 2000
    sample Heinlein 2001 @last

    コマンドラインを使用して、次のように予測を作成します。
    smpl herodotus
    ls g @trend g(-1) @expand(@month)
    smpl heinlein
    fit ghein_stat
    forecast ghein_dyn
    plot g ghein_stat ghein_dyn

    データ
  2. コマンドを入力するよりも予測ダイアログを使用する方がよい場合は、予測サンプル HEINLEIN を予測サンプル フィールドに入力します。 デフォルトでは、サンプル外観測値の実績値を挿入するがチェックされています。 デフォルトでは、EViews は HEINLEIN サンプルに含まれていないデータ ポイントの観測 G を GHEIN_DYN に挿入します。代わりに NA を挿入するには、このボックスのチェックを外します。 実績値を挿入する利点は、予測値のプロットがよりきれいに表示される場合があることです。NA を挿入する利点は、誤って HEINLEIN 外の値を予測したと思わなくなることです
    データ

不確実性を考慮する

  • 予測値の標準誤差を計算

  1. これまで、特定の日付の数値を予測してきました。これはポイント予測です。このポイント予測には常にある程度の不確実性が伴います。モデルが正しく指定されていると仮定すると、このような不確実性は係数と誤差の 2 つの原因から生じます。日付 $\tau$では $\hat{y}_{\tau}=\hat{\alpha}+\hat{\beta}x_{\tau}$となります。予測誤差は$y_{\tau}-\hat{y}_{\tau}=[(\alpha-\hat{\alpha})+(\beta-\hat{\beta})x]+u_{\tau}$になります。角括弧内の項は係数の不確実性の原因です。予測ダイアログの S.E. (オプション) の横に名前を入力すると、EViews は予測分布の標準誤差をシリーズに保存します。
    データ
    sample wholeRange @all
    sample Herodotus @first 2000
    sample Heinlein 2001 @last

    コマンドラインを使用して、次のように予測を作成します。
    smpl herodotus
    ls g @trend g(-1) @expand(@month)
    smpl heinlein
    fit ghein_stat
    forecast ghein_dyn
    plot g ghein_stat ghein_dyn

    データ
  2. 予測を評価する際に係数の不確実性を無視することは珍しくありません。係数の不確実性の影響を除外したい場合は、ダイアログで「Coef. uncertainty in S.E. calc.」のチェックを外します。
    データ
  3. 係数の不確実性を含む動的予測の標準誤差は GHEIN_DYN_SE_ALL として保存し、同様に係数の不確実性がない場合には GHEIN_DYN_SE_NOCOEF に保存しました。以下は予測値と信頼区間のグラフです。予測値$-1.96\times S.E.$ と予測値$ + 1.96\times S.E.$が測定されています。係数の不確実性がある場合とない場合の信頼区間の違いは、目にはほとんど見えないことがわかります。これが、人々が係数の不確実性を含めようとしない理由の 1 つです。
    データ

予測力を評価する

  • 予測モデルの精度を評価します

  1. EViews には、予測評価を支援する 2 つの組み込みツールが用意されています: OutputフィールドのGraphオプションでForecast and actualsを選択すると、95% 信頼区間のプロットが自動的に出力されます。
    データ
    予測評価オプションは、予測値と実際の値を比較するためのさまざまな統計量を含む表を生成します。二乗平均平方根誤差(RMSE) は、予測誤差の標準偏差です。
    データ
  2. 予測精度は悪くありませんが、上のグラフに示されている信頼区間は、G の動きを考えるとかなり広くなっています。同様に、RMSE は G の標準偏差と比較して小さくはありません。標本外予測と実際のグラフを振り返ってみると、予測がデータよりも大きく振れているという事実に驚かされます。
    冒頭のデータ プロットでは、戦前期の通貨成長の変動が戦後期よりもはるかに大きかったことがわかります。
    データ
    標本期間HERODOTUS には両方の期間が含まれています。正確な推定値、つまり正確な予測を得るために、できるだけ多くのデータを使用することをお勧めします。一方、パラメータが変化している場合は、古いデータを含めないようにします。
    パラメータは変化しているかは、ブレークポイント検定で確認できます。モデル推定後に、View > Stability daignostics > Chow Breakpoint Testと操作します。(検定の詳細は、ユーザーズ ガイドを参照してください)
    データ
  3. 異なる予測標本を設定してみます。
    sample turtledove 1950 2000
    smpl turtledove

    再推定すると、TURTLEDOVEの標本期間では、HEROTODUSが示したよりも季節的影響がはるかに小さく、$R^{2}$がはるかに高いことがわかります。
    データ
    冒頭のデータプロットをもう一度見てみましょう。これは、2000年初頭に通貨保有量が大幅に増加し、その直後に大幅に減少したことを示しています。これは、2000年の初めに開始するダイナミック予測では、ラグ付きGに異常な値が使用され、その影響が継続していることを意味します。対照的に、スタティックな予測では、予測期間の初めにのみ問題が発生するはずです。それ以降は、実際のラグ付きGが異常でないデータを利用して予測するからです。
    データ
  4. 右上に示されているこの新しい推定値を、HEINLEIN 期間の静的予測の基礎として使用し、予測ダイアログを設定して新しい予測を保存し、予測と信頼区間をプロットし、新しい予測評価を表示することができます。
    グラフが予測または予測と実績に設定され、Forecast evaluationェックボックスがオンになっている場合、EViews は信頼区間グラフと評価統計量を 1 つのウィンドウにまとめます。標本を変更することで、確かに少し改善されました。
    データ
    実際の値と比較すると、季節変動は実際の季節性よりもまだ大きいですが、このような単純なモデルにしては予測は非常に良好です。
    データ

変数の変形

  • autoシリーズ機能で予測変数を変形します

  1. 予測したい変数が、推定式の左側の変数とまったく同じでない場合があります。
    統計的または経済的なモデリング上の理由から、実際に関心のある変数を変換し推定することがよくあります。よく用いられる例は、関心のある変数の対数を使用することと、1階差分を使用することです。
    これまで使用してきた例では、通貨の成長を予測するというタスクを取り上げました。G系列のデータラベルを見る(View > Label)と、コマンドseries g=1200*dlog(curr)を使用して、通貨レベルの基礎となる系列 CURR を変形したものであることがわかります。関数 dlog()は対数の 1 階差を取るものです。
    データ
  2. 通貨成長率を予測する代わりに、通貨水準を予測するように求められたかもしれません。 原則として、今日の通貨水準と予測成長率を知っていれば、 今日の水準に予測成長率を加算することで次の期間の水準を予測できます。 実際には、 これを実行するのは少々面倒です。 より複雑な関数の場合、推定関数から元の変数に逆算するのはそれほど簡単ではありません。これは予測信頼区間が非線形だからです。EViews は、ユーザのちょっとした協力があれば、 大変な作業をすべて処理してくれます。
    通常のシリーズオブジェクトの場合、系列G が「g=1200*dlog(curr)」で作成されたという情報はデータの変更履歴であり、源系列CURRとGは関連付けられていません。EViewsのautoシリーズを使用すると、EViews は CURR とautoシリーズ間の接続します。次のコマンドを使用してautoシリーズを定義し、予測式を推定できます。
    smpl @all
    frml currgrowth=1200*dlog(curr)
    smpl @first 2000M12
    ls currgrowth @trend currgrowth(-1) @expand(@month)
  3. 方程式ウィンドウでForecastをクリックすると、見た目が少し異なる予測ダイアログが表示されます。ドロップダウン メニューのデフォルトはIgnore formulae within seriesです。これは、autoシリーズ、この場合は通貨の成長を予測することを意味します。
    データ
    その他の選択肢は、系列内の数式を置き換えることです。このオプションを選択すると、基になるシリーズまたはautoシリーズのいずれかを予測する選択肢が提供されます。ここでは通貨レベルを予測することを選択しました(そして、予測サンプルを前の例の予測サンプルと一致するように設定しました)。
    データ
    データ
page_top_icon