SSブログ

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)

Rplot001.png
Rplot002.png

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)

Rplot003.png
Rplot004.png

data(Nile)
plot(Nile, las = 1)
acf(Nile, las = 1)

Rplot005.png
Rplot006.png

結果です。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
nice!(2)  コメント(0)  トラックバック(0) 

nice! 2

コメント 0

コメントを書く

お名前:
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

Facebook コメント

トラックバック 0