2013年12月9日月曜日

(自分用メモ)R 時系列分析の関数まとめ

Rには時系列分析用のパッケージがいろいろありますが、授業で使っているパッケージ・関数を備忘のために、まとめておきたいと思います。

まずデータを入手したら

  1. 時系列プロット
  2. 単位根検定(Augmented Dickey–Fuller Test, Phillips-Perron Test for Unit Roots)
    • adf.test(data, alternative ="stationary") (tseries package)
    • PP.test(data)
データが非定常だったら・・・
  1. 移動平均でdetrend
  2. 単位根検定でひっかかったら、diffを取る(ex: Z_t = Y_t - Y_t-1)
  3. Exponential smoothingでdetrend
    • Simple Exponential Smoothing
      • HoltWinters(data,alpha=数字, beta=FALSE, gamma=FALSE) #ARIMA(0,1,1)と同じこと
    • Double Exponential Smoothing
      • HoltWInters(data,alpha=数字, beta=数字, gamma=FALSE) #ARIMA(0,2,2)と同じこと
    • 以下2つを使う場合、dataはtsオブジェクトでfrequencyが定義されてるもの
    • Seasonal Exponential Smoothing without Trend
      • HoltWinters(data,alpha=数字, beta=FALSE, gamma=数字) 
    • Seasonal Exponential Smoothing with trend
      • HoltWinters(data, alpha=数字, beta=数字, gamma=数字)  


データは定常。ではWhite noiseか?
  1. 時系列データがWhite noiseかどうかの検定 (Box Pierce , Box Ljung test)
    • Box.test(data, lag=1 , type = c("Box-Pierce", "Ljung-Box")

White noiseではないようだ。では、ARIMAモデルか?
  1. Sample Auto Correlation, Sample Partial Auto Correlationのプロット
    • acf(data, plot=TRUE)
    • pacf(data,plot=TRUE)
  2. ARMAのパラメータ候補を絞りたい
    • eacf(data) (TSA package)
  3. ARIMA(p,d,q) モデルの推定(dataはtsオブジェクトです)
    • arima(data, order=c(p,d,q),method="ML")
  4. ARIMA(p,d,q) モデルの推定(dataはtsオブジェクトです)
      • arima(data,order=c(p,d,q),seasonal=list(order=c(P,D,Q),period=S),method="ML")

    ARIMAモデルの残差はWhite noiseになったのか?
    1. 残差プロット + Box testでチェック
    2. 残差プロットの中でvolatility clusteringがあれば、ARCH LM testをやってみる

    ARCH/GARCHモデル
    1. garchFit(~arma(p,q)+garch(q,p),data=data) (GARCHのパラメータqはalpha, pのパラメータはbeta)

    予測
    1. arimaで推定したモデルであれば、forecast(arimaクラスのオブジェクト) (forecast library)
    2. garchFitで推定したモデルであれば、predict(fGarchクラスのオブジェクト)