本文介绍一种方法,帮助我们了解一个时间序列是否可以预测,或者说了解可预测能力有多强。

Sample Entropy (样本熵)

Sample Entropy是Approximate Entropy(近似熵)的改进,用于评价波形前后部分之间的混乱程度,

熵越大,乱七八糟的波动越多,越不适合预测;熵越小,乱七八糟的波动越小,预测能力越强。

具体思想和实现如下:

思想

Sample Entropy最终得到一个 -np.log(A/B) ,该值越小预测难度越小,所以A/B越大,预测难度越小。

A:从0位置开始,取m+1个元素构成一个向量,然后移动一步,再取m+1个元素构成一个向量,如此继续直到最后得到一个向量集合Xa,看有多少向量彼此的距离小于容忍度r(即有多少向量彼此相似,又称自相似个数)。

B:从0位置开始,取m个元素构成一个模板向量,然后移动一步,再取m个元素构成一个模板向量,如此继续直到最后得到一个向量集合Xb,看有多少向量彼此的距离小于容忍度r(即有多少向量彼此相似,又称自相似个数)。

而实际上A总是小于等于B的,所以A/B越接近1,预测难度越小,直觉上理解,应该就是波形前后部分之间的变化不大,那么整个时间序列的波动相对来说会比较纯(这也是熵的含义,熵越小,信息越纯,熵越大,信息越混乱),或者说会具有一定的规律,而如果A和B相差很大,则时间序列波动不纯,或者说几乎没有规律可言。

比如:U = [0.2, 0.6, 0.7, 1.2, 55, 66],m=2,

那么可以计算得到:

Xa = [[0.2, 0.6, 0.7], [0.6, 0.7, 1.2], [0.7, 1.2, 55.0], [1.2, 55.0, 66.0]]

Xb = [[0.2, 0.6], [0.6, 0.7], [0.7, 1.2], [1.2, 55.0], [55.0, 66.0]]

假设Xa中相似向量的个数比Xb多,那么应该出现Xa满足r,但是Xb不满足r的情况,但是拿Xa和Xb的前两个向量来分析,如果Xa满足r,则0.2-0.6 ,0.6-0.7,0.7-1.2中的最大值应该<=r,也就是说0.2-0.6 ,0.6-0.7肯定<=r,如此推断,Xb肯定也满足r, 所以只有可能出现Xb满足r,Xa不满足r的情况。

python实现

def SampEn(U, m, r):

"""

用于量化时间序列的可预测性

:param U: 时间序列

:param m: 模板向量维数

:param r: 距离容忍度,一般取0.1~0.25倍的时间序列标准差,也可以理解为相似度的度量阈值

:return: 返回一个-np.log(A/B),该值越小预测难度越小

"""

def _maxdist(x_i, x_j):

"""

Chebyshev distance

:param x_i:

:param x_j:

:return:

"""

return max([abs(ua - va) for ua, va in zip(x_i, x_j)])

def _phi(m):

x = [[U[j] for j in range(i, i + m - 1 + 1)] for i in range(N - m + 1)]

C = [len([1 for j in range(len(x)) if i != j and _maxdist(x[i], x[j]) <= r]) for i in range(len(x))]

return sum(C)

N = len(U)

return -np.log(_phi(m + 1) / _phi(m))

if __name__ == '__main__':

_U = [0.2, 0.6, 0.7, 1.2, 55, 66]

rand_small = np.random.randint(0, 100, size=120)

rand_big = np.random.randint(0, 100, size=136)

m = 2

print(SampEn(_U, m, r=0.2 * np.std(_U)))

print(SampEn(rand_small, m, r=0.2 * np.std(rand_small)))

print(SampEn(rand_big, m, r=0.2 * np.std(rand_big)))

ok,本篇就这么多内容啦~,感谢阅读O(∩_∩)O。

python历史 用量 预测_用python做时间序列预测七:时间序列复杂度量化相关推荐

  1. python 时间序列预测_使用Python进行动手时间序列预测

    python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...

  2. python大数据免费_用python做大数据

    不学Python迟早会被淘汰?Python真有这么好的前景? 最近几年Python编程语言在国内引起不小的轰动,有超越Java之势,本来在美国这个编程语言就是最火的,应用的非常非常的广泛,而Pytho ...

  3. python数据预测_利用Python编写一个数据预测工具

    利用Python编写一个数据预测工具 发布时间:2020-11-07 17:12:20 来源:亿速云 阅读:96 这篇文章运用简单易懂的例子给大家介绍利用Python编写一个数据预测工具,内容非常详细 ...

  4. python 还原九宫格图片_用Python做一个好玩的朋友圈九宫格抽奖

    最近在朋友圈看到个好玩的抽奖九宫格: 随便点开一个: 设计思路 以朋友圈中看到的1号图做参考,我们需要准备 300*900 的白色底图,搞笑表情图,广告语,中间一个醒目的数字编号,外加下方的嘲讽&qu ...

  5. 编程游戏python我的世界_乐学Python编程-做个游戏很简单

    1.进入Python 编程世界/ 2 1.1 启动Python 编程环境/ 5 1.2 Python 之禅/ 9 1.3 送你几朵玫瑰花--运行Python 程序/ 16 1.4 Python 的由来 ...

  6. 用python自动办公 百度_用Python自动办公,做职场高手,16章完整版百度云盘

    01.文件 [12.20更新课程代码]用Python自动办公做职场高手.rar [课程代码]从零写Python练手项目:实用脚本.zip [课程代码]四周实现爬虫网站.zip [课程代码]用NumPy ...

  7. python读取游戏数据_用Python抓取并分析了1982场英雄联盟数据,教你开局前预测游戏对局胜负!...

    英雄联盟想必大多数读者不会陌生,这是一款来自拳头,由腾讯代理的大型网络游戏,现在一进网吧,你就能发现一大片玩英雄联盟的人.在2017年中国战队无缘鸟巢的世界总决赛后,一大片人选择了弃游,只是终究没躲过 ...

  8. python蜡烛图预测_【Python量化投资】系列之SVR预测第二天开盘趋势和股价的正负统计分析(附代码)...

    原标题:[Python量化投资]系列之SVR预测第二天开盘趋势和股价的正负统计分析(附代码) 本期导读 ⊙ML.SVM介绍 ⊙股价的正负统计分析 ⊙预测第二天开盘趋势 机器学习方法是计算机科学的一个分 ...

  9. python照片转卡通_用Python做一个网站,照片生成漫画头像,有这个网站就够了。...

    本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理 以下文章来源于腾讯云 作者:Python进阶者 ( 想要学习Python?Pyth ...

最新文章

  1. Android提示版本号更新操作流程
  2. wex5 教程 之 图文讲解 智能数据库设计 之(1) 触发器
  3. android lame wav 转 mp3,Android JNI Lame编解码实现wav到MP3的转换
  4. Java Date Nuances的痛苦提醒
  5. JavaFX 2中的PopupMenu
  6. mac下载百度网盘文件限速_百度网盘限速怎么办 (20200412 )
  7. python程序设计实验报告实验程序流程序列化_Python程序设计_教学大纲_段震.doc
  8. mysql获取当月数据_Python + MySQL如何获取股票数据(历史数据)
  9. SQL:显示每天的小计,某一天没有记录也要显示
  10. 如何有效阅读英文数据手册?
  11. 设置网页title旁边的小图标详解
  12. 海南师范大学本科毕业论文答辩PPT模板
  13. R|广义线性模型知识点归纳
  14. c语言入门自学ppt,c语言基础知识ppt
  15. Python+Selenium自动化测试之页码,前一页、后一页、翻页
  16. HTTPS/HTTP网络代理
  17. 液压管路渗漏图像识别检测方法研究
  18. python爬虫--小白爬取csdn页面题目与链接
  19. postman接口工具-Invalid URI http:///%7B%7Burl%7D%7Dapi/document/getHelpDocumentUrl?appType=1
  20. Python之程序交互

热门文章

  1. 调查了9648位Go用户:吐槽最多的竟是官方文档!
  2. 读懂 x86 架构 CPU 虚拟化,看这文就够了 | 赠书
  3. 从被动到主动,换个角度看 DB
  4. 漫画:应用程序被拖慢?罪魁祸首是 Log4j!
  5. 机器学习火热,SQL 开发人员有何用?
  6. 定了!百度运维工程师非法挖矿获利 10 万、被判 3 年,如何避免面向监狱编程?...
  7. 那些年 iOS 升级踩过的坑!
  8. 程序员如何从初中级历练为高级开发者?
  9. Erlang 二十年,如何在编程语言中占据一席之地?
  10. 5G 兴起,物联网安全危机四伏