导航

  • EMD
    • 本征模函数
    • EMD分解
    • EMD分解存在的问题
  • EEMD(ensembled EMD)
    • EEMD原理
  • 收盘价格序列分解:EMD
  • 收盘价格序列分解:EEMD
  • 参考资料

EMD

经验模型分解是以傅里叶变换为基础的线性和稳态频谱分析,该方法根据自身时间尺度进行信号分解,不需要设置基函数,这种特性使得EMD方法可以在理论上适合任何信号的分解。
EMD方法的核心在于经验模式分解,可以使复杂信号分解为有限个本征模函数(intrinsic mode function, IMF),分解得到的信号包含了原始信号中不同时间尺度的局部特征信号,经验模态分解法可以使得非平稳数据进行平稳化处理,然后进行Hilbert变换得到时频谱图.

本征模函数

如果瞬时频率有意义,那么函数需要对称,局部均值为零,并且有着相同的过零点和极值点的数目,本征模函数的任何一点的瞬时频率都是有意义的. EMD分解的目的就是为了获得本征模函数,然后对各本征模函数进行希尔伯特变换,得到Hilbert谱.
Huang给出本征模函数需要满足的条件

  1. 函数在整个时间范围内,局部极值点和过零点的数量必须相等或者最多相差一个.
  2. 在任意时刻点,局部最大值的包络和局部最小值的包络平均值为0.

EMD分解

在任意时间点上,数据可能包含多个波动模式,所以需要分解处理
分解的基本假设为:

  1. 数据至少两个极值,一个极大值和一个极小值
  2. 数据的局部时域特性是由极值点的时间尺度唯一确定
  3. 如果数据没有极值点但是存在拐点,可以进行微分求出极值,然后通过积分得到分解结果,sifting过程

对于信号x(t)x(t)x(t)的EMD分解步骤如下:

  1. 找到x(t)x(t)x(t)的所有极值点
  2. 使用插值方法得到极小值点形成的下包络emint(t)以及极大值形成的上包络emax(t)
  3. 计算均值m(t)=(emint(t)+emax(t))/2m(t)=(emint(t)+emax(t))/2m(t)=(emint(t)+emax(t))/2
  4. 剥离均值d(t)=x(t)−m(t)d(t)=x(t)-m(t)d(t)=x(t)−m(t)
  5. 对残余部分继续使用以上步骤

EMD分解存在的问题

  1. EMD分解得到的IMF存在模态混合现象
  2. 末端效应影响分解结果

EEMD(ensembled EMD)

Handrin等人用EMD对白噪声进行分解后对结果进行统计,提出了基于噪声辅助分析改进EMD的方法,根据白噪声的均匀分布的特性,在信号中加入白噪声可以将不同时间尺度的信号自动分离到其相适应的参考尺度上,即EEMD方法.

EEMD原理

如果信号的极值点分布不均与会出现模态混叠,由于白噪声的零均值特性,经过多次均值计算后噪音会相互抵消,集成计算的结果可以看做最终结果.
EEMD的计算步骤如下:

  1. 将白噪声加入到原始信号中
  2. 新的信号进行EMD分解
  3. 重复进行步骤1,2,每次加入新的White Noise
  4. 将每次循环得到IMF进行集成平均处理综合结果

收盘价格序列分解:EMD

读取期货收盘价数据进行EMD分解得到分解图像如下

from PyEMD import EMD
import matplotlib.pyplot as pltdef emd_demo():emd = EMD()y = closep.valuest = np.arange(len(y))IMF = emd.emd(y)n = IMF.shape[0]+1plt.subplot(n, 1, 1)plt.plot(t, y)plt.title('close price')# plt.xlabel('# of obs')for i, imf in enumerate(IMF):plt.subplot(n, 1, i+2)plt.plot(t, imf, 'g', lw=0.8)plt.title(f'IMF{i+1}')plt.xlabel('# of obs')plt.tight_layout()plt.show()

收盘价格序列分解:EEMD

def eemd_demo():eemd = EEMD()emd = eemd.EMDemd.extrema_detection='parabol'y = closep.valuest = np.arange(len(y))IMF = eemd.eemd(y)n = IMF.shape[0]+1plt.figure(figsize=(12, 9))plt.subplot(n, 1, 1)plt.plot(t, y)plt.title('close price')# plt.xlabel('# of obs')for i, imf in enumerate(IMF):plt.subplot(n, 1, i+2)plt.plot(t, imf, 'g', lw=0.8)plt.ylabel(f'IMF{i+1}')# plt.xlabel('# of obs')plt.locator_params(axis='y', nbins=5) # 设置子图之间的上下间距plt.tight_layout()plt.show()
if __name__ == '__main__': # 多线程模块需要设置主线程eemd_demo()

参考资料

PyEMD docs
EMD方法
Decomposing Signal Using Empirical Mode Decomposition
EMD算法python实现
EMD matlab toolbox
EEMD详解

【FinE】EMD/EEMD方法及金融数据分解相关推荐

  1. eemd优缺点_一种改进的EEMD方法及其应用研究

    收稿日期 : 修订日期 : ( 日期待编辑部填写 ) 基金项目 : 国家优秀青年科学基金 (51222503) .教育部新世纪优秀人才支持计划 (NCET-11-0421) 和陕西省自然科学基础研究计 ...

  2. 使用EMD【经验模态分解】对一维波形信号进行滤波去噪以及Python实现代码[emd eemd ceemdan]

    使用EMD[经验模态分解]对一维波形信号进行滤波去噪以及Python实现代码 EMD[ Emprical Mode Decomposition]经验模态分解方法此处不再过多用赘述, 该信号处理方法可以 ...

  3. 『为金融数据打标签』「2. 元标签方法」

    本文有 6161 字,20 图表截屏 建议阅读 32 分钟 0 引言 本文是 AFML 系列的第五篇 金融数据类型 从 Tick 到 Bar 基于事件采样 三隔栏方法 元标签方法 要构建一个模型来决定 ...

  4. 通过tushare获取金融数据的方法

    量化投资在近些年来成为了金融行业中的一个热点,在做量化之前需要先获取到市场的行情数据,今天来介绍一个python接口tushare,通过该接口可以获取到大量的金融数据,涵盖了股票,基本面数据,宏观经济 ...

  5. python如何收集数据的方法有哪些_class类在python中获取金融数据的实例方法

    我们搜集金融数据,通常想要的是利用爬虫的方法.其实我们最近所学的class不仅可以进行类调用,在获取数据方面同样是可行的,很多小伙伴都比较关注理财方面的情况,对金融数据的需要也是比较多的.下面就cla ...

  6. 基于EEMD方法的降噪与解调在轴承故障诊断中的应用实证研究

    基于EEMD方法的降噪与解调在轴承故障诊断中的应用实证研究 摘要 1 引言 2 EEMD简介 2.1 EMD简介 2.2 EEMD简介 3 基于阈值处理的EEMD降噪方法 3.1 相关系数 3.2 基 ...

  7. EMD——EEMD——CEEMD

    转载自https://www.cnblogs.com/Dinging006/p/10282993.html 首先,HHT中用到的EMD详细介绍:https://wenku.baidu.com/view ...

  8. R语言实现金融数据的时间序列分析及建模

    R语言实现金融数据的时间序列分析及建模 一 移动平均    移动平均能消除数据中的季节变动和不规则变动.若序列中存在周期变动,则通常以周期为移动平均项数.移动平均法可以通过数据显示出数据长期趋势的变动 ...

  9. EEMD(集合经验模态分解)

    1. EEMD(集合经验模态分解)的概念 EEMD(Ensemble Empirical Mode Decomposition)是最常见的一种EMD改进方法.他的优势主要是解决EMD方法中的模态混叠现 ...

  10. Python实现“EMD\EEMD\VMD+Hilbert时频图”与“CWT小波时频图”

    Python实现"EMD\EEMD\VMD+Hilbert时频图"与"CWT小波时频图"   信号处理中常需要分析时域统计量.频率成分,但不平稳信号的时域波形往 ...

最新文章

  1. Java里的按值传递与引用传递
  2. 多项式的ln、exp、快速幂和开根学习小记
  3. Python基础教程(008)--第一个Python程序
  4. 【C++ grammar】Enhancement for Type System (C++11 对类型系统的增强)
  5. Python+pandas读取Excel文件统计最受欢迎的前3位演员
  6. aws rds监控慢sql_使用AWS Backup备份AWS RDS SQL Server数据库
  7. 程序员该如何转型 5G 开发?
  8. 基于flash AS3.0 的BASE64编码与解码类
  9. ubuntu 多终端窗口管理: terminator
  10. 21-python-time,random模块的应用
  11. mysql驱动和url在5.7以上版本变化
  12. EndnoteX7/8/9参考文献不按顺序出现
  13. Vue自定义组件——图片放大器,js点击<img>触发图片放大,富文本内图片点击实现放大器效果
  14. 出版物设计排版工具:Swift Publisher 5 for Mac
  15. JavaWeb如何判断账户密码
  16. LaTex,Mardown和TeXmacs:如何选择写作的正确姿势
  17. linux修改ip地址详解
  18. Leetcode 274 H指数
  19. 【转】那些年搞不懂的高深术语——依赖倒置•控制反转•依赖注入•面向接口编程
  20. 自然风景Mac高清动态壁纸分享来了

热门文章

  1. 【依赖高精度点云地图和三维激光雷达的定位方案】正态分布变换(NDT)定位及建图
  2. Esp8266对接阿里云物联网远程实时温度监控{探讨帖}
  3. 2018-2019-1 20165232 20165231 20165235实验二——固件程序设计
  4. Python 小节案例-计算体脂率
  5. 【ZYNQ】从入门到秃头02 ZYNQ硬件介绍和Vivado开发流程
  6. 几种凹凸贴图(Bump Mapping)的学习记录
  7. python控制电机_如何用Python控制LEGO Wedo 2.0的电机
  8. 转载 DM9000的调试
  9. 计算机审计方法模板,计算机审计上机实验报告模板.doc
  10. java文字水印excel_Aspose for java 给word,excel,ppt增加文字水印