RでstatsパッケージのSTLによる結果から周期変動部分、トレンド部分、残差部分を取り出す

前回「Rで周波数解析や成分分解」で、データにSTLを作用させてその結果から今後3ヶ月のシナリオを考えた。
その時思ったことだが、周期変動部分と残差部分の動きが似ている気がした。
そこで、それら2つの相関を計算しようと思ったが、stlの結果から各要素の取り出し方が分からなかった。

今回は、それがわかったのでメモしておく。

> tpxc.stl<-(stl(tpxc.ts,s.window="per")) #stlの実行結果を変数に格納
> tpxc.stl                                 #結果確認
 Call:
 stl(x = tpxc.ts, s.window = "per")

Components
<span class="deco" style="color:#FF0000;">Time Series:</span>
Start = c(1, 1) 
End = c(31, 26) 
Frequency = 80 
           seasonal     trend     remainder
 1.0000   2.4108972 1633.4370  3.722206e+01
 1.0125   3.4569579 1634.4079  4.728517e+01
 1.0250   0.2972221 1635.3787  4.922407e+01
・・・・・・・・・・・・

つまり、tpxc.stl$time.seriesの各要素がseasonal、trend、remainderとなっているので、次のようにして周期変動部分、トレンド部分、残差部分を取得可能。

> tpxc.stl$time.series[,1] #seasonalの取得
> tpxc.stl$time.series[,2] #trendの取得
> tpxc.stl$time.series[,3] #remainderの取得

ここで、stlの結果を再掲。


seasonalとremainderの相関を計算してみる。

> cor(seasonal, remainder)
[1] -0.008139043

殆ど相関が無い。
残差のスペクトル分析。

> spec.pgram(remainder,log="no")