R: Hurst exponentを計算させてみた [統計]
Hurst exponentというものを計算させてみました。時系列データの長期記憶性の指数ということらしいです。おもに参考にしたのは以下のところです。
Hurst exponentを計算する関数をもつパッケージはいくつかありますが、今回は{pracma}を使用しました。ほかに、{fractal}や{dvfBm}というのもありましたが、たぶん使い方がよくわかっていないせいで、おかしな値がでてきたりしましたので。
データを用意します。y1は自己相関のない正規乱数、y2はランダムウォーク、Nileは いつものナイル川のデータです。
library(pracma) ## Data set.seed(1234) N <- 512 y1 <- rnorm(N, 0, 1) plot(y1, type = "l", las = 1) acf(y1, las = 1)
y2 <- rep(0, N) for (i in 1:(N - 1)) y2[i + 1] <- y2[i] + rnorm(1, 0, 1) plot(y2, type = "l", las = 1) acf(y2, las = 1)
data(Nile) plot(Nile, las = 1) acf(Nile, las = 1)
結果です。Hurst exponentは、0–1の値をとり、0.5で自己相関なし、0–0.5で負の自己相関、0.5–1で正の自己相関ということです。
> hurstexp(y1) Simple R/S Hurst estimation: 0.5672453 Corrected R over S Hurst exponent: 0.6184578 Empirical Hurst exponent: 0.6894384 Corrected empirical Hurst exponent: 0.6350244 Theoretical Hurst exponent: 0.543849 > hurstexp(y2) Simple R/S Hurst estimation: 0.847774 Corrected R over S Hurst exponent: 1.014114 Empirical Hurst exponent: 0.9901459 Corrected empirical Hurst exponent: 0.9667674 Theoretical Hurst exponent: 0.543849 > hurstexp(Nile) Simple R/S Hurst estimation: 0.735041 Corrected R over S Hurst exponent: 0.9850499 Empirical Hurst exponent: 0.6627939 Corrected empirical Hurst exponent: 0.6834858 Theoretical Hurst exponent: 0.5229461
値が5種類出力されますが、Simple R/S Hurst estimationはLong Memory and...にある単純化した計算によるもの、Empirical Hurst exponentは回帰により計算したもの、Theoretical Hurst exponentはサンプルサイズから決まる理論値のようです。Correctedとあるのは小サンプルに対する補正のようです。
y1がもっとも0.5にちかく、y2がもっとも1にちかく、Nileがその中間ということで、もっともらしい結果となりました。
タグ:R
2016-10-15 15:55
nice!(2)
コメント(0)
トラックバック(0)
コメント 0