S-Decomp

S-Decomp では季節調整やトレンド推定を中心とした、1変量時系列解析を行うことができます。

 S-Decompは統計数理研究所で開発されたもので、著作権等は同研究所が保有しています。また、原則として、(株)アイザックのサポートの対象外ですので、ご了承願います。各手法の詳しい解説については以下の文献をご覧ください。また、WWWページでもBug情報など紹介していきます。

(  http://www.ism.ac.jp/~sato/SDecomp/  )

参考文献:

(1) 赤池弘次、中川東一郎 (1972)「ダイナミックシステムの統計的解析と制御」サイエンス社

(2) Kitagawa, G., and Gersh, W. (1984), “A smoothness priors - state space modeling of time series with trend and seasonality", JASA, Vol.79, No.386, 378-389.

(3) 北川源四郎 (1986)「時系列の分解 ―― プログラム DECOMP の紹介 ―― 」統計数理 34巻2号 P255-271

(4) 北川源四郎 (1993)「時系列解析プログラミング」岩波書店



1 操作手順

 Paroleの「解析」メニューから「S-Decomp」を選択すると、以下のようなウィンドウが表示されます。


Paroleでオープンされたカレントデータが一番左に表示されています。操作の基本はこれらのデータまたは結果オブジェクトをマウスで選択して、それに対して、行いたい手法をメニューから選び実行させます。そのとき選ばれているデータまたはオブジェクト名は”カレントデータ”の項に表示さています。その下の”タイプ”には選択されているデータ・オブジェクトの種類が表示されます。種類は以下の二種類です。(今後、これらを単にオブジェクトと呼びます。)

オブジェクト名

内容

Time Series

単なる1変量時系列。 n個のデータで、時間順に並んでいるのも。

Decomp

Decomp(「季節調整・トレンド推定」)を行った結果が入っているオブジェクト。複数の時系列から構成されます。


「季節調整・トレンド推定」などの手法を行うと、新たなオブジェクトが出力され元のオブジェクトの右の方に追加されていきます。これらはツリー構造になっており、”->”、”<-”を押すことにより、上へ行ったり、下へ行ったりできます。


2 操作例

 次に、典型的な操作例を紹介します。

1.まず、ParoleでデータをOpenしておきます。今回は"longley"を使います。

2.S-Decompを起動してください。

3.一番左の列から”未就業者人口”を選択します。(クリックします。)

4.データをプロットしてみましょう。「プロット」メニューの中から一番上の「プロット」を選択してください。ウィンドウが現れて、データが時系列プロットされます。

5.このデータは右上がりのトレンドを持つデータですので、トレンド推定を行ってみます。”未就業者人口”が選択されていることを確認したら、「季節調整・トレンド推定」メニューを押します。パラメータ設定画面が出てきますが、デフォルトでは、季節調整を行うように設定されていますので、季節次数を0に変更しておきます。”推定”ボタンを押すと、計算を開始して、結果を自動的に表示します。

6.はじめのウィンドウに戻ると、”未就業者人口”がある列の右に”未就業者人口.decomp.result”というオブジェクト(Decompオブジェクト)ができています。これを選択します。そうすると下のテキスト表示エリアに結果の詳細が表示されます。

7.「データ変換・抽出」を押します。出てきたウインドウで、Noiseにチェックして、OKを押します。そうすると、先ほどのトレンド推定のとき推定されているノイズ成分(この場合は元のデータからトレンドをひいたもの)が抽出できます。右の列に”未就業者人口.decomp.result.noise”というオブジェクトができているのがわかります。なお、このオブジェクトはTime Seriesオブジェクトになります。

8.”未就業者人口.decomp.result.noise”を選択して、定常時系列解析をしてみます。まずは「定常解析」の中から「自己相関」を選びます。そうすると、このノイズの自己相関がプロットされます。

9.そうすると比較的高い自己相関を持っていることがわかるので、続いて、”ARモデルの推定”を行います。このメニューを選ぶと、1つウィンドウが出てきますが、その中の”最大AR次数”を4にしてください。(これは、このデータが短いためで、通常の長さ−50以上−であれば変えなくてもOKです。)そして、推定を選ぶと結果が表示されます。

10. 「パワースペクトル」メニューを選んでください。このARモデルから推定されたスペクトルがプロットされます。

 このようにして、S-decompでは非定常データを定常データに分解して、それらに対して、定常時系列解析ができるようになっています。いくつかの手法を組み合わせて使うことにより、観察者独自のデータ解析ができるように配慮されています。


3 各手法の詳細

1.「季節調整・トレンド推定」

  ”Decomp”と呼ばれるプログラムを使って、季節調整およびトレンド推定などの非定常データに対する解析を行います。このプログラムは統計数理研究所の北川源四郎氏によって開発されたもので、オリジナルはFortranで書かれており、ソースは公開されています。(詳しくは参考文献を参照)

ごく簡単に説明すると以下の状態空間モデルに基づいて、時系列をTrend成分、季節成分、AR成分、Noise成分に分解する手法です。


Δd T(t) = e1(t)

S(t) = -S(t-1) - … -S(t-p) + e2(t)

A(t) = a1 A(t-1) + … + aq A(t-q) + e3(t)

y(t) = T(t) + S(t) + A(t) + TD(t) + e4(t)


T: トレンド成分、 S: 季節変動成分、 A: AR成分(短期循環変動) TD: 曜日効果

y: 観測値、 e1-e4: 互いに独立な正規ノイズ

[パラメータの設定について]

トレンド次数: 上式において dに当たる値。大きいほどなめらかなトレンドが推定されます。
AR次数: AR成分の次数。0ならばAR成分を推定しません。

季節周期:  季節性の周期。月次データの時は12、4半期データの時は4、季節性を仮定しないときは 次の季節次数で0 を選びます。

季節次数:0なら季節性を推定しない。2以上を使うことは稀である。

対数変換: データに対してあらかじめ log 変換を行うかどうか。

               (0または負のデータがあるときはYesとするとエラーになります。)

[オプション]

「オプション」メニューではより詳しい設定ができます。
曜日効果: 曜日効果の調整を行うかどうか。ありなら下にデータの開始時期を入力します。

欠損値・異常値処理: No以外を選択すると、異常値を検出します。Customを選んだ場合はLevelを入力することができる。小さいほど、異常値を検出しやすくなる。

「自動選択」を選んだ場合は、AIC最適な季節調整モデルを選びますが、その場合でも季節周期とデータ開始年・月は入力しなければなりません。


出力結果:

     グラフ出力: 各成分の時系列プロットが表示されます。スケーリングはすべてほぼ同じです。

     パラメータ及び統計量: ノイズの分散やAICの値が表示されます。

                      SIG2 : e4の分散 

                      TAU1: e1の分散 (SIG2にたいするの割合で表示)

                      TAU2: e2またはe3の分散 (SIG2にたいする割合)

                      TAU3: e2の分散 (SIG2にたいする割合)


 出力オブジェクト:

 この計算の結果は”Decompオブジェクト” と呼ばれるオブジェクトを原データの右列に生成します。(*.decomp.result という名前になります。)このオブジェクトは選択したモデルにしたがって分解された各成分(トレンド成分、季節成分、AR成分、曜日効果(Trade)成分、ノイズ成分)を含めたリストオブジェクトです。なお、このメソッドで対数変換を”する”にしたときは各成分ともLogスケールのままなっています。このオブジェクトから特定の成分だけを抜き出すには”データ変換・抽出”メニューを使ってください。


2.自己相関

 時系列の自己相関関数を計算し、プロットします。”最大ラグ”を変更して、”再描画”することにより、希望するラグまでの自己相関を描けます。なお、ラグ0の自己相関は必ず1になります。

3.スペクトル

 時系列のスペクトルを計算し、プロットします。”最大ラグ”を変更して、”再描画”することにより必要なラグの自己共分散を使って計算します。この値をデータ数マイナス1に設定するとピリオドグラムを推定することになります。”対数スケール”にチェックがあると、スペクトルの対数を描画します。詳しい計算法は赤池・中川(参考文献1)を参照してください。ここでは”赤池ウインドウ”を使っています。

4.ARモデルの推定

 ユール・ウォーカー法によるARモデルの推定を行います。ARモデルは以下のよう式で表されます。

   Yt = a0 + a1Yt-1 + a2Yt-2 + a3Yt-3 + ・・・ + akYt-k + et  

上式のkをAR次数といいますが、本プログラムではAICによって最適なkを求めその次数で推定します。ただし、AR次数の上限は定めてやる必要があります。(この値はデータ数より小さくしてください。)詳しくは前出の赤池・中川をご覧ください。

 ”推定”ボタンを押すことにより推定を行います。推定した後では、このウィンドウのメニューを選択すると、AICの推移、パワースペクトルやノイズ(et)のプロットがみれます。(ここで計算されるパワースペクトルはARの係数から計算するもので、3.の”スペクトル”での結果とは違ってきます。)また、”ノイズの登録”を行うと、推定したノイズをメインウィンドウに時系列オブジェクトとして登録します。これにより、ノイズに対して他の手法の適用ができます。

5.ARMAモデルの推定

 厳密な最尤法によるARMAモデルの推定を行います。ARMAモデルは次のような式で表されます。

   Yt = a0 + a1Yt-1 + a2Yt-2 + ・・・ + akYt-k + et -b1et-1 - ・・・ - blet-l   

上式のk,lをそれぞれAR次数、MA次数といいますが、これらはユーザーが指定してやる必要があります。詳しくは北川著「時系列プログラミング」をご覧ください。

 ”推定”ボタンを押すと指定した次数のモデルをフィットします。あとはARモデルの時と同じようにパワースペクトルやノイズをプロットして、結果を考察することができます。


6.データ変換・抽出

”データ変換・抽出”ではカレントデータが、Time Seriesオブジェクトの時と、Decompオブジェクトの時では生成されるウィンドウが違います。

まず、Decompオブジェクトの時は(上記のようなウィンドウが生成されます。)、オブジェクト内に含まれる各成分を取り出すとともにそのデータに変換をくわえることができます。”成分”のところから必要なものにチェックをしてください。複数選んだ場合は、それらをすべて加えたデータが生成されます。たとえば、季節調整したい場合はSeasonal成分(季節成分)とtrade-day成分(曜日効果)以外にチェックすればよいでしょう。必要な成分を選んだあとは、このデータに行いたい変換を指定してください。デフォルトのままですと、特に変換せずにデータを返します。各変換の詳細は以下の通りです。

階差: 指定したLagの階差をとります。

変換: exp変換、log変換を行います。季節調整・トレンド推定で対数変換を指定した場合、元に戻すには、exp変換ををするようにしてください。

4倍しますか:”Yes”を選ぶと4倍する。四半期の季節調整の時に使うことがあります。

時系列属性:”No”を選ぶと、時系列属性(もしあれば)をクリアーし、1からN(データの長さ)のデータとします。そうでない時、たとえば、階差(Lag=1)を選ぶと、2からN(もとのデータの長さ)までとします。

異常値の補完: ”Yes”の場合、異常値と判断された時点のノイズを0にする。(推定時に異常値の検出を選んで、実際に検出された時のみ有効)

平均伸び率の計算: ”Yes”を指定すると、平均伸び率を計算する。元のオブジェクトは季節モデルが推定されている必要があります。この概念は前年同月(期)比をよりロバストにした量で、

  (平均伸び率)=(今期の季節調整値)−(前年同期のトレンド)

と定義されます。季節調整値、トレンドは対数変換された値を使います。

Time Seriesオブジェクトを選んでいる場合は上記のようなウィンドウが生成されます。この場合は元データを指定した変換をして、新しいTime Seriesオブジェクトを作ります。データの変換の詳細はDecompオブジェクトの時を同じです。また、”期間”を変更することによって長さを短くすることもできます。


7.プロット

 Decompオブジェクトを指定した後に実行すると、すべての成分をプロットします。(推定時に生成されるグラフと同じものです。)

 Time Seriesオブジェクトの場合は上のように単なる時系列プロット(tsplot)をします。そのウィンドウにはいくつかボタンがついており、以下のような働きをします。

再描画:もう一度もとの図を描きます。

拡大: このボタンを押した後、グラフ領域内の2点をクリックすると、その2点を対角とする長方形の領域を拡大します。

y=0の線を追加: abline(h=0)

また、”プロット”メニューには”プロット”以外にもいくつか機能があります。

追加プロット:tslinesを使って、追加します。色はランダムに変わっていきます。

テキスト表示: オブジェクトに含まれるデータの値をテキスト表示します。

8.開く、保存

 開く: Sオブジェクトを開きます。ただし、扱えるのは、1変量時系列で、ベクトル形式のものだけです。Sオブジェクトの名前を指定してください。デフォルトで指定されたディレクトリはattach()で一番はじめにきているものです。

 S形式で保存: 選択されているオブジェクトをSのオブジェクトとして保存します。

 CSV形式で保存: 選択されているオブジェクトをCSV形式のファイルとして保存します。テキストファイルですが、Excel等でも開くことができます。

9.終了

 ”ファイル”の”終了”にて終わります。

S-Decompに関する質問等は sato@ism.ac.jp までどうぞ。(ただし、個人的に対応するのみです。)