时间序列中Hurst指数的计算(python代码)
在做时间序列分析时,需要计算Hurst指数,由于Hurst指数计算比较复杂,刚开始懒得自己写,就在github上进行搜索,多是这个代码:
from numpy import std, subtract, polyfit, sqrt, logdef hurst(ts):"""Returns the Hurst Exponent of the time series vector ts"""# create the range of lag valuesi = len(ts) // 2lags = range(2, i)# Calculate the array of the variances of the lagged differencestau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags]# use a linear fit to estimate the Hurst Exponentpoly = polyfit(log(lags), log(tau), 1)# Return the Hurst Exponent from the polyfit outputreturn poly[0] * 2.0
用该代码进行测试时,发现结果跟预期差别较大,理论上为长期趋势时,hurst指数应该接近1,但是对构造好的测试集进行测试时发现hurst指数居然接近与0.5比较多,因此根据查到的Hurst指数构建理论(理论参考为:http://www.360doc.com/content/16/0409/15/20041187_549224354.shtml)自己手写了一个Hurst指数计算代码:
理论部分如下:
代码部分如下:
# coding: utf-8from __future__ import division
from collections import Iterableimport numpy as np
from pandas import Seriesdef calcHurst2(ts):if not isinstance(ts, Iterable):print 'error'returnn_min, n_max = 2, len(ts)//3RSlist = []for cut in range(n_min, n_max):children = len(ts) // cutchildren_list = [ts[i*children:(i+1)*children] for i in range(cut)]L = []for a_children in children_list:Ma = np.mean(a_children)Xta = Series(map(lambda x: x-Ma, a_children)).cumsum()Ra = max(Xta) - min(Xta)Sa = np.std(a_children)rs = Ra / SaL.append(rs)RS = np.mean(L)RSlist.append(RS)return np.polyfit(np.log(range(2+len(RSlist),2,-1)), np.log(RSlist), 1)[0]
使用该代码对随机数进行计算Hurst指数时,比较趋近与0.5,即符合随机,而排序后的数据进行计算则接近于1,即为长期趋势,不过由于并没有对数据进行全分类,而是分类的最小集合为每个子集中有3个元素,因此理论上会出现大于1的现象,不过超出部分比较小,且出现几率并不是很大,因此可以视为1。
时间序列中Hurst指数的计算(python代码)相关推荐
- 皮尔逊相关系数的计算(python代码版)
皮尔逊相关系数的计算(python代码版) 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 fro ...
- 皮尔森相关性系数的计算python代码(一)
部分代码 from math import sqrt import numpy as np import pandas as pddef excel_one_line_to_list():def mu ...
- 皮尔森相关性系数的计算python代码(四)(热力图版)
部分代码: import numpy import pandas as pd import numpy as np from matplotlib.font_manager import FontPr ...
- 皮尔森相关性系数的计算python代码(三)
部分代码 import os import pandas as pd import numpy as np from scipy.stats import pearsonrdef Pearson(da ...
- 大学物理实验——密立根油滴实验数据计算Python代码
大学物理实验--密立根油滴实验数据计算Python代码 先手准备 import numpy as np 编写函数 def f(t,U):# 基本物理量准备rou = 981.0g = 9.80l = ...
- 深度学习中的正则化技术(附Python代码)
作者:SHUBHAM JAIN 翻译:和中华 校对:丁楠雅 本文约3500字,建议阅读20分钟. 本文简单介绍了什么是正则化以及在深度学习任务中可以采用哪些正则化技术,并以keras代码具体讲解了一个 ...
- python加减法计算题 代码_关于《剑指offer》中不用加减乘除做加法的Python代码的问题...
题目如下: 写一个函数,求两个整数之和,要求在函数体内不得使用+.-.*./四则运算符号. 题目不难,可以采用位操作来实现,利用异或运算来计算不带进位的加法结果,利用与运算计算进位的标志,然后将这两个 ...
- 模块度计算python代码_LPA算法C++实现及模块度计算
前言 这学期开始看社团检测的东西,了解了一些经典算法.比如GN算法,BGLL算法(又叫Louvain, 因为该算法是作者在Louvain大学时提出的),LPA算法,等等. 我先看的LPA(毕竟算法思想 ...
- notepad可以运行python吗,notepad+中怎么设置直接运行python代码
在notepad+中设置直接运行python的代码 在notepad++界面中按F5(或者在菜单栏中选择"运行"),此时会出现下图界面(初次使用这里面是空的): 然后输入:cmd ...
最新文章
- debian var目录
- python event多线程回调
- hashmap原理_想要彻底搞懂HashMap?你得恶补下HashMap原理
- TeeChart用法(网络收集)默认分类 2010-03-05 21:46:05 阅读788 评论0 字号:大中小 .
- 学数据结构,仅仅须要主要的编程体验
- plsql如何执行存储过程_如何理解Spark应用的执行过程
- while用法_语法宝典:连词while的四种用法,你都学会了吗?
- Springboot的常规属性配置和类型安全配置
- java 文件上传到服务器_Java上传文件到服务器端的方法
- startuml如何画流程图_怎样在迅捷画图在线网站中绘制UML流程图
- Java操作Word文档
- [枚举] COGS 1580 [WC2005]友好的生物
- 计算机 睡眠 无法打印,台式机睡眠后打不开怎么办
- 【Python】不同目录下的.py文件调用问题
- python刷题 NOI题库 python题解 洛谷、牛客网、AcWing 刷题等
- Linux命令·ln
- 【BP数据预测】差分进化算法优化BP神经网络数据预测【含Matlab源码 1315期】
- 论文解读:OMNI-DIMENSIONAL DYNAMIC CONVOLUTION
- 如何在Altium Designer 20中增加原件库
- OA厂商在行业市场中如何“长生”?