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の結果を再掲。
> cor(seasonal, remainder) [1] -0.008139043
殆ど相関が無い。
残差のスペクトル分析。
> spec.pgram(remainder,log="no")