收敛交叉映射CCM算法原理及其代码实现

收敛交叉映射算法(Convergent Cross Mapping, CCM)

收敛交叉映射算法(Convergent Cross Mapping, CCM),也称为“距离映射”,和“距离传统映射”,以相空间重构理论和延时嵌入定理为基础,通过两变量的重构相空间之间的相互预则来量化变量之间的因果关系。

1 概述

收敛交叉映射(Convergent Cross Mapping,CCM)是一种非线性因果关系分析方法,不仅能用于检验非线性耦合系统中的因果关系,还能用于检验偶尔变量间的时滞因果关系。

1.1 原理

下图为三维洛伦茨混沌系统,X(t),Y(t)和Z(t)是流形(manifold, M)投影于一维空间所产生的序列。
可以把一个流形理解为一个高维空间中点随时间推进而形成的运动轨迹。如果时间序列X和Y同属于一个动态系统,也就是说,如果X和Y共享一个流形,那么X和Y就可以被认为存在因果关系。
X和Y共享一个流形,意味着给定X和Y共享的流形,那么根据X的状态就可以推出Y的状态,反过来根据Y的状态也可以推出X的状态。
在这里插入图片描述
根据Takens嵌入定理(Embedding Theory),可通过给定适当的嵌入维度E,利用时滞变量创建

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Python中可以使用ccm包来实现收敛交叉映射CCM),具体步骤如下: 1. 安装ccm包 可以使用pip命令进行安装: ``` pip install ccm ``` 2. 加载数据 假设我们有两个时间序列x和y,我们需要将它们导入到Python中,可以使用pandas包来实现: ``` python import pandas as pd # 读取x和y的数据 x = pd.read_csv('x.csv') y = pd.read_csv('y.csv') ``` 3. 进行CCM分析 使用ccm包中的ccm_analysis函数进行分析: ``` python from ccm import ccm_analysis # 进行CCM分析 results = ccm_analysis(data_frame=x, column='x', target=y, target_lag=1, max_lag=5, verbose=True) ``` 其中,参数说明如下: - data_frame:输入数据,需要是一个pandas的DataFrame对象; - column:输入数据中要分析的列; - target:目标数据,也需要是一个pandas的DataFrame对象; - target_lag:目标数据的滞后期数; - max_lag:最大滞后期数; - verbose:是否输出详细信息。 4. 显著性检验 使用ccm包中的ccm_significance函数进行显著性检验: ``` python from ccm import ccm_significance # 进行显著性检验 p_value = ccm_significance(results, num_resamples=1000) ``` 其中,参数说明如下: - results:CCM分析的结果对象; - num_resamples:重复抽样的次数。 显著性检验的结果是一个p-value值,如果p-value小于0.05,则可以认为结果是显著的。 需要注意的是,在进行CCM分析和显著性检验时,需要对数据进行适当的处理和预处理,以确保结果的可靠性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WW、forever

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值