首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >赫斯特指数转向nan - Python 3

赫斯特指数转向nan - Python 3
EN

Stack Overflow用户
提问于 2020-05-08 03:10:41
回答 2查看 268关注 0票数 1

我想确定一个时间序列是否是均值回归的,但在计算赫斯特指数时遇到了一些问题。它应该打印0.5左右,但我得到了一个"nan“。所有的帮助都将不胜感激。

我得到以下错误/警告:

代码语言:javascript
运行
AI代码解释
复制
RuntimeWarning: divide by zero encountered in log
  poly = polyfit(log(lags), log(tau), 1)

下面是我正在编写的代码。

代码语言:javascript
运行
AI代码解释
复制
import statsmodels.tsa.stattools as ts
from datetime import datetime

from pandas_datareader import DataReader
security = DataReader("GOOG", "yahoo", datetime(2000,1,1), datetime(2013,1,1))
ts.adfuller(security['Adj Close'], 1)



from numpy import cumsum, log, polyfit, sqrt, std, subtract
from numpy.random import randn

def hurst(ts):
    """Returns the Hurst Exponent of the time series vector ts"""

    lags = range(2, 100)

    tau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags]

    poly = polyfit(log(lags), log(tau), 1)


    return poly[0]*2.0


gbm = log(cumsum(randn(100000))+1000)
mr = log(randn(100000)+1000)
tr = log(cumsum(randn(100000)+1)+1000)

print ("Hurst(GBM):   %s" % hurst(gbm))
print ("Hurst(MR):    %s" % hurst(mr))
print ("Hurst(TR):    %s" % hurst(tr))
print ("Hurst(SECURITY):  %s" % hurst(security['Adj Close']))



print ("Hurst(GBM):   %s" % hurst(gbm))
print ("Hurst(MR):    %s" % hurst(mr))
print ("Hurst(TR):    %s" % hurst(tr))
print ("Hurst(SECURITY):  %s" % hurst(security['Adj Close']))
Hurst(GBM):   0.5039604262314196
Hurst(MR):    -2.3832407841923795e-05
Hurst(TR):    0.962521148986032
Hurst(SECURITY):  nan
__main__:11: RuntimeWarning: divide by zero encountered in log
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-08-01 22:05:58

我在发送Series时遇到了与ts参数相同的问题。你所要做的就是发送一个列表,而不是一个系列或者:

代码语言:javascript
运行
AI代码解释
复制
def hurst(ts):
    """Returns the Hurst Exponent of the time series vector ts"""
    ts = ts if not isinstance(ts, pd.Series) else ts.to_list()
    lags = range(2, 100)
    tau = [sqrt(std(subtract(ts[lag:], ts[:-lag]))) for lag in lags]
    poly = polyfit(log(lags), log(tau), 1)
    return poly[0]*2.0

dropna的值也可能是一个问题,我会在to_list()之前检查NaN ()是否可以。

票数 0
EN

Stack Overflow用户

发布于 2021-05-31 15:25:54

根本原因是Series[<slice>]语法为每个片返回相应的索引,而-操作符处理每个索引相等(而不是实际位置)。

示例:

代码语言:javascript
运行
AI代码解释
复制
s = pd.Series(range(5))
s[2:] - s[:-2]
=>
0    NaN
1    NaN
2    0.0
3    NaN
4    NaN
dtype: float64

显然,这不是我们所期望的。了解为什么我们可以使用concat分别创建s[2:], s[:-2]的逐行数据帧。

代码语言:javascript
运行
AI代码解释
复制
pd.concat([s[2:], s[:-2]], axis=1)
=>
    0   1
0   NaN 0.0
1   NaN 1.0
2   2.0 2.0
3   3.0 NaN
4   4.0 NaN

给定这一输入,赫斯特函数中的tau =方程的结果是一个(主要)NaN值的列表。

本机使用Series的解决方案是使用Series.shift()而不是数组切片:

代码语言:javascript
运行
AI代码解释
复制
def hurst(ts):
  ... 

  # Calculate the array of the variances of the lagged differences
  tau = [sqrt((ts - ts.shift(-lag)).std()) for lag in lags]

  ...

或者,将Series.values传递给原始函数,该函数传递一个numpy数组。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61671380

复制
相关文章
【JS高程】第3章 3.4.5(3)NaN(节选)
NaN,它的全称是 Not a Number,即非数值。用来表示“一个本来要返回数值的操作数,却未返回数值时的情况”。这样就不会报错了嘛。 在ECMAScript中,任何数值除以非数值都会返回NaN。 NaN有二个特点: 1、任何涉及到NaN的操作,都会返回NaN; 2、NaN与任何值都不相等,包括它自己; 根据这二个特点,ECMAScript定义了 isNaN()函数。 它的只有一个参数,可以是任何类型。这个函数会确定这个参数是不是“不是数值”。 大概思路与用法是这样: 1、如果参数可以转为数值,就返
web前端教室
2018/03/27
1.5K0
【JS高程】第3章 3.4.5(3)NaN(节选)
python3百度指数抓取
分类:python 作者:TTyb文章发表于 2016-11-12 百度指数抓取,再用图像识别得到指数前言: 土福曾说,百度指数很难抓,在淘宝上面是20块1个关键字: 哥那么叼的人怎么会被他吓到,于是乎花了零零碎碎加起来大约2天半搞定,在此鄙视一下土福 安装的库很多: 谷歌图像识别tesseract-ocr pip3 install pillow pip3 install pyocr selenium2.45 Chrome47.0.2526.106 m or Firebox32.0.1 chromedr
企鹅号小编
2018/01/30
1.5K0
python3百度指数抓取
c/c++ -nan(ind) NAN
nan -- 表示 出错,“不是一个数” not a number 的缩写。 按 IEEE 754 国际标准,当运算中出现无效数据时,给出 NaN. 许多情况会出现,例如 0 除 0,负数开平方,...
acoolgiser
2019/01/17
3.5K0
Python如何优雅地处理NaN
很多数据不可避免的会遗失掉,或者采集的时候采集对象不愿意透露,这就造成了很多NaN(Not a Number)的出现。这些NaN会造成大部分模型运行出错,所以对NaN的处理很有必要。
py3study
2020/01/09
1.1K0
Python如何优雅地处理NaN
lodash源码分析之NaN不是NaN
暗恋之纯粹,在于不求结果,完全把自己锁闭在一个单向的关系里面。 ——梁文道《暗恋到偷窥》 本文为读 lodash 源码的第五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash gitbook也会同步仓库的更新,gitbook地址:pocket-lodash 本篇分析的是 eq 函数。 作用与用法 eq 函数用来比较两个值是否相等。遵循的是 SameValueZero 规范。 var obj1 = {test: 1} var obj2 = {test: 1} var obj3 =
对角另一面
2018/03/30
1.9K0
lodash源码分析之NaN不是NaN
本文为读 lodash 源码的第五篇,后续文章会更新到这个仓库中,欢迎 star:pocket-lodash
对角另一面
2018/01/17
1.8K0
[Silverlight动画]转向行为 - 转向机车
转向机车类继承机车类并增加转向行为。每个行为都被定义成公开函数,在每帧或者一段时间间隔内调用以实现对应的转向力。通常所有转向力在调用之后再调用机车的update函数。 转向函数都是这样工作的:不管什么时候调用了一个转向函数,都会计算转向力,这个力用来确定机车是顺时针旋转还是逆时针旋转。比如,seek(寻找)函数会 计算出一个力,确保机车能从当前方向直接面向目标点。这或许会受到不止一个拥有转向行为的机车的影响,起初的寻找点,会在考虑避开或躲避后而改变。当这些 力叠加后,update函数才被调用,最终把一切都反
用户1172164
2018/01/16
9460
认识python中的inf和nan
python中的正无穷或负无穷,使用float("inf")或float("-inf")来表示。 这里有点特殊,写成:float("inf"),float("INF")或者float('Inf')都是可以的。 当涉及 > 和 < 比较时,所有数都比无穷小float("-inf")大,所有数都比无穷大float("inf")小。 相等比较时,float("+inf")与float("+inf")、float("inf")三者相等。即:
狼啸风云
2020/05/09
3.3K0
《指数基金投资指南》第3章 常见指数基金品种
第3章 常见指数基金品种 ---- 指数基金的分类 指数基金最常见的一种分类,就是分为宽基指数和行业指数 例如消费行业指数基金,就要求主要投资消费行业的公司,这种指数基金就是行业指数基金 而像沪深30
yeedomliu
2020/03/25
6600
AI一分钟 | Python 即将停止支持Python 2.7,全面转向 Python 3
一分钟AI Python即将停止支持Python 2.7,全面转向 Python 3 百度建无人驾驶体验站,目前尚在内测中只接受百度员工体验申请 小鹏汽车宣布22亿B轮融资,阿里巴巴、富士康、IDG联合领投 Google上市会拍照的AI相机Clips,2英寸大小,售价249美元,预计2月底发货 马来西亚宣布引入中国人工智能,阿里云ET城市大脑为吉隆坡治堵 金融科技服务商“融慧金科”完成近千万美金A轮融资,将大力发展AI 美国路透社对美国人调查表示,三分之二的美国受访者对搭乘自动驾驶汽车感到不舒服 最新安
AI科技大本营
2018/04/26
7880
AI一分钟 | Python 即将停止支持Python 2.7,全面转向 Python 3
kotlin NaN坑
今天发现一个坑,在代码里尝试toBigDecimal抛出了NumberFormatException
阿超
2022/11/22
1.6K0
javascript的NaN属性
NaN 属性是代表非数字值的特殊值。该属性用于指示某个值不是数字。可以把 Number 对象设置为该值,来指示其不是数字值。
OECOM
2020/07/01
1.2K0
np.nan_to_num
numpy.nan_to_num(x, copy=True, nan=0.0, posinf=None, neginf=None)描述 使用0代替数组x中的nan元素,使用有限的数字代替inf元素(默认行为) 或者用户使用nan、posinf和neginf关键字来定义数字 参数 x : scalar or array_like 输入数据 copy : bool, optional if True,则创建x的副本 if False,则在原对象上替换 nan : int, float, optional 用
狼啸风云
2021/05/11
2.5K0
np.nan_to_num
python重试(指数退避算法)
本文实现了一个重试的装饰器,并且使用了指数退避算法。指数退避算法实现还是很简单的。先上代码再详细解释。 1、指数退避算法 欠奉。http://hugnew.com/?p=814 2、重试装饰器retr
用户1225216
2018/03/05
2.3K1
Under the Hood: NaN of JS
如果你还不确定这两题的答案的话,请仔细阅读本文。 这两题的答案不会直接解释,请从文章中寻找答案。
有赞coder
2020/08/25
1.5K0
Under the Hood: NaN of JS
用Python分析股市指数
專 欄 ❈本文作者:王勇,目前感兴趣项目商业分析、Python、机器学习、Kaggle。17年项目管理,通信业干了11年项目经理管合同交付,制造业干了6年项目管理:PMO,变革,生产转移,清算和资产
Python中文社区
2018/02/01
1.2K0
用Python分析股市指数
Redis 的 MOVED 转向与 ASK 转向
上一篇文章中,我们介绍了 redis 集群的搭建。 redis 集群详解及搭建过程 其中我们遇到了报错:
用户3147702
2022/06/27
1.7K0
Redis 的 MOVED 转向与 ASK 转向
浅谈Hurst指数
有效市场假说和分形市场假说是资本市场两个重要的理论,有效市场假说建立在正态性的假说上,但大量证据表明,金融数据具有尖峰厚尾的特性,这也是分形市场假说的出发点。
量化小白
2019/10/09
4.9K0
浅谈Hurst指数
Java 中的 NaN
简单来说可以认为 NaN 是一个数字数据类型变量值,这个类型变量被定义为 这不是一个数字。
HoneyMoose
2021/09/24
3.5K0
Java 中的 NaN
点击加载更多

相似问题

计算赫斯特指数

31

每日赫斯特指数

20

使用能源数据计算赫斯特指数(aFRR) - Python

12

Regex模式提取赫斯特模式

12

对赫斯特的输出感到困惑

10
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档