R中的分形包 - 它有效吗?

时间:2014-02-18 22:40:36

标签: r

当我使用分形包运行随机游走的示例代码时:

library(fractal)
## create test series 
set.seed(100)
x <- rnorm(1024)
walk <- cumsum(x)

 ## calculate the Hurst coefficient of a random 
## walk series using various techniques 
methods <- c("aggabs","aggvar","diffvar","higuchi")
z <- lapply(methods, function(method, walk){
hurstBlock(ifelse1(method=="higuchi",diff(walk),walk), method=method)  
},walk=walk )
names(z) <- methods

## plot results 
old.plt <- splitplot(2,2,1)
for (i in 1:4){
    if (i > 1)
       splitplot(2,2,i)
    plot(z[[i]], key=FALSE)
    mtext(paste(attr(z[[i]],"stat.name"), round(as.numeric(z[[i]]),3), sep=", H="),
       line=0.5, adj=1)
}
 par(old.plt)

我没有.5的赫斯特指数?我知道有不同的计算方法,但我相信AggVar最像是R / S重新缩放方法,对于布朗运动,它应该返回.5而不是.94就像它一样。

不应该是.5?

如果你改变了

walk&lt; - cumsum(x)to

walk&lt; - x然后这是白噪声,我应该得到Hurst指数为0.但我不会。

你能帮忙解释一下吗?

2 个答案:

答案 0 :(得分:0)

我将检查Wikipedia,但大多数来源都引用> .5持久性,即。可能的趋势,.5 =随机的白噪声过程,<。5 =均值回复,我不确定您在哪里得到0 =白噪声,我在任何期刊或研究中都从未见过,维基百科一定是错误的,我会检查,您是不正确的,请仔细阅读Wikipedia关于以下提取的hurst指数的规定

Blockquote A值H在0.5–1范围内表示一个具有长期正自相关的时间序列,这意味着该序列中的一个高值很可能会跟随另一个高值,并且很长一段时间都进入未来也将趋于高涨。介于0到0.5之间的值表示一个时间序列,该序列在相邻对中的高值和低值之间进行长期切换,这意味着单个高值可能会跟随一个低值,并且此后的值将趋于高,这种趋势会持续很长时间,直到在高值和低值之间切换。 H = 0.5的值可以表示一个完全不相关的序列,但实际上,它是适用于序列的值,在较小的时滞下,其自相关可以为正或为负,但自相关的绝对值迅速呈指数衰减至零。这与0.5

答案 1 :(得分:0)

自从我回答上述问题后,我对三个最著名的 Hurst 指数库进行了广泛的测试,并在 youtube 上发布了一个视频,但是,从分形来看,最常用的 Hurst 估计器是来自 fractal 的 hurstpec 和来自 pracma 的 hurstexp图书馆。无论您使用什么估计,PerformanceAnalytics 计量经济学金融库中的另一个估计器似乎都不正确。我在 Authors Github 维护站点上留下了纠错请求或检查,我还没有检查回来查看回复,我在 4 个月前离开了请求。

iwm_rt <- dailyReturn(IWM, type ="log")

头(iwm_rt)

```{r}
library(pracma)
library(fractal)

x <- iwm_rt


hurstBlock(x, method="aggAbs", scale.min=8, scale.max=NULL,
           scale.ratio=9, weight=function(x) rep(1,length(x)), fit=lm)





fit_aggab <- hurstBlock(x, method="aggAbs", scale.min=8, scale.max=NULL,
           scale.ratio=9, weight=function(x) rep(1,length(x)), fit=lm)

plot(fit_aggab)

RoverS(x, n.block.min=22, scale.ratio=9, scale.min=8)




hurstSpec(x, method="standard", freq.max=0.25, dc=FALSE, n.block=NULL,
          weight=function(x) rep(1,length(x)), fit=lm, sdf.method="direct")


hurstexp(x)




来自 hurstblock in fractal 的 aggabs 方法是来自大样本时间序列的聚合估计,拟合 aggabs 估计器的最关键因素是 scale.ratio 估计我通过试错法解决它有点乏味但我不知道更科学的方法,规模。 ratio 是时间序列中每个后续样本序列的乘数