关于R/S法计算Hurst指数的简单修正

       我发现网上有大量的关于Hurst指数计算的文章,其中大多是R/S法求Hurst指数,因为其公式简洁容易通过代码实现。我通过网上的方法用python实现Hurst指数的计算后,我发现了一个问题:Hurst指数计算结果与理论结果偏差较大。我使用一系列随机数进行测试,发现Hurst值为0.54,从统计上显著异于理论的0.5,我一开始觉得是随机性导致的偏差,于是我重复生成了大量的一系列随机数进行上千次重复测试,取均值,得到Hurst指数为0.53,仍然从统计上显著异于理论的0.5。所以,我认为是Hurst的估计值出现了统计性的偏差,并不是随机性导致的。

       我们发现R/S法计算Hurst指数其实有一个重要问题需要解决,就是如何将原来的时间序列进行分割,同样我使用的方法是网上比较流行的二分法,将时间序列分为1,2,4,8...,2^n个部分,再在每种分割情况下分别求R/S值。于是,我开始调整我的分割方式,我将最大几个(1,2,3...),最小几个(2^n,2^(n-1),....)的分割情况删去,将剩下的分割情况的log(R/S)与log(每组数据个数)进行回归,发现Hurst指数有所变化。于是,我不断调整终于将长度为10000的随机序列的Hurst估计结果均值调到了0.509。这时,我将长度改为1000,Hurst指数估计结果又从统计上显著异于理论的0.5。

下面是重点:

        最后,我找到了这篇论文:Hurst指数估计法中的修正方法研究. 朱灵蕾;姚远程;姜军;秦明伟.电子技术应用,2016。里面详细介绍了几种Hurst求值方法修正方法,这里我只介绍R/S法的修正方法:m = 某种分割方法下每组数据的个数。

论文截图

通过增大m的最小值,可以Hurst指数估计值的减小误差。设m = xlog(N) 

下面我分别对长度为500,1000,5000,10000的随机数列,在 x = 2 , 10 , 30 的情况下进行Hurst指数的计算,循环1000次取均值。

x值\随机序列长度5001000500010000
20.5560.5470.5340.531
100.5290.5260.5190.513
300.5160.510.5090.51

确实如论文所说,Hurst指数的估计值精确度有所提升。

注明:一系列随机数,例如:random_data = np.random.uniform(-1, 1, 10000)

郑重申明:这个修正方法源于论文:Hurst指数估计法中的修正方法研究. 朱灵蕾;姚远程;姜军;秦明伟.电子技术应用,2016。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值